Perché iOS sembra così liscio?
Un sacco di risposte interessanti. Ma per dirla semplicemente, iOS è così fluido perché
- L'intero sistema operativo è costruito in Objective-C e ottimizzato per l'hardware di ogni telefono.
- Questo significa che ogni operazione viene eseguita nel modo più efficiente per il dispositivo su cui gira.
- Questo significa che il programma viene eseguito con il minor numero di istruzioni possibili per l'hardware su cui gira.
- La maggior parte delle applicazioni sono costruite in Objective-C o Swift - di nuovo mirate all'hardware di ogni specifico dispositivo.
- Questo significa che ogni app parla direttamente all'interfaccia del sistema operativo sottostante.
- Per alcune texhnologie, come Metal, l'applicazione parla direttamente alla GPU.
- Design monolitico (Grazie Stuart Black per il promemoria)
- Apple possiede l'intero design - l'hardware, il software, tutto.
- Il sistema operativo e tutte le applicazioni sono costruite per funzionare solo su hardware Apple.
- Meno opzioni significa più vicino al metallo. I prodotti Apple sono in grado di funzionare con meno livelli di astrazione del software, il che significa meno livelli di software da attraversare.
Tutto ciò che riguarda il design Apple riguarda l'esperienza utente. Potrebbero non essere i primi ad arrivare sul mercato, ma quando il loro prodotto arriverà sul mercato, sarà probabilmente la migliore esperienza.
Android e Windows Mobile hanno entrambi molti più livelli di astrazione attraverso cui il codice deve passare. La maggior parte delle applicazioni Android sono scritte in Java. Java non parla il codice macchina nativo alla CPU. Java compila in quello che è noto come byte-code. Questo permette ad una singola build di un'applicazione di essere eseguita su qualsiasi piattaforma hardware con qualsiasi tipo di CPU. Il JRE (Java Runtime Environment) fornisce i ganci del sistema operativo per astrarre il sistema operativo host e le caratteristiche del dispositivo in dispositivi compatibili con Java. Poi fornisce la JVM (Java Virtual Machine) che è un computer virtuale. La JVM è il collegamento tra il bytecode e le tue funzioni native della CPU, così come il collegamento tra le interfacce basate su Java e gli agganci astratti del sistema operativo.
È ancora più complicato di come lo faccio sembrare. Ma alla fine Java può solo fornire, nel migliore dei casi, prestazioni quasi native, e nel peggiore, prestazioni abissali. Non c'è alcuna garanzia di prestazioni con java. Per i sistemi basati su java che sono usati in operazioni critiche c'è uno speciale java realtime che garantisce prestazioni prevedibili ma al costo di prestazioni massime degradate.
Google ha fatto un grande lavoro per migliorare la JRE/JVM per Android ed è stato citato in giudizio per questo da Sun Microsystems (ora Oracle).
L'altro problema con Android è che anche se tutte le applicazioni fossero scritte in C (che è un'opzione) e lo sviluppatore costruisse le molte permutazioni necessarie per supportare tutte le possibilità dell'hardware - il problema più grande con Android è che tutti coloro che lo usano (beh, quasi tutti) come OS del telefono personalizzano l'interfaccia. Quando Samsung sostituisce i componenti principali con le proprie versioni, si è in balia di Samsung. E francamente, la maggior parte dei produttori non ha le competenze necessarie per costruire un'interfaccia utente ad alte prestazioni. Provate un Google Pixel e vedrete quanto sia migliore l'esperienza.
Articoli simili
- Google sostiene che Stadia girerà presto più liscio dei giochi per PC e console, grazie alla "latenza negativa". Quali sono le vostre opinioni?
- Qual è un buon box TV Android liscio che posso comprare online?
- Perché abbiamo così tante teorie diverse sul sogno? Quale sembra più probabile?
- Perché la terza stagione di Rick & Morty sembra così brutta e sfigata rispetto alla stagione precedente?