Poiché si dice che Java sia indipendente dalla piattaforma, allora perché non possiamo eseguirlo direttamente sui dispositivi Android?
Certo che possiamo eseguire programmi scritti in Java su Android ma non direttamente. Prima del rilascio di "Kotlin" il linguaggio ufficiale per lo sviluppo di Android, Java era ampiamente utilizzato per sviluppare applicazioni Android e anche ora continua ad essere utilizzato.
La procedura standard per eseguire un programma Java è questa
Il file ".java" viene convertito in file eseguibile ".class" dal compilatore java e il file di classe generato è indipendente da qualsiasi sistema operativo, cioè può essere eseguito su qualsiasi sistema operativo. Per eseguire questo file di classe è necessaria la JVM che è specifica per il sistema operativo.
In Android lo scenario è leggermente diverso
In Android usiamo DVM (Dalvik Virtual Machine) invece di JVM (Java Virual Machine) perché:-
- JVM è stata progettata per Java, tenendo in mente le applicazioni Desktop. La differenza principale tra desktop e mobile è che i cellulari hanno una quantità molto limitata di memoria (RAM) e una minore velocità della CPU rispetto a desktop e laptop. La JVM è molto pesante e richiede molta RAM e velocità della CPU per eseguire un programma. Poiché i cellulari non possono permettersi tanta RAM e CPU, Android ha bisogno di una versione più ottimizzata e leggera della JVM. La DVM è stata creata per sostituire la JVM. La DVM è pensata per i dispositivi embedded che hanno meno RAM e velocità della CPU.
- La JVM è lenta perché è basata sullo stack mentre la DVM è basata sui registri.
Diciamo che un'applicazione Android ha bisogno di quattro file ".class" per funzionare. Questi file di classe sono passati attraverso il compilatore DX che combina tutti questi file di classe e genera un file "classes.dex" dopo aver allegato i pacchetti richiesti. Questo DEX può essere compreso da Dalvik Virtual Machine.
Articoli simili
- Come bypassare il rilevatore di regioni di HBOmax poiché è in grado di rilevare anche le VPN
- Sei più sicuro usando un gestore di password come 'LastPass' poiché tutte le tue password sono etichettate e in un unico posto?
- Quanto è possibile per uno sviluppatore indipendente che fa la propria arte, programmazione e suono creare individualmente un gioco di successo?
- Perché Apple non fornisce un modo per trasferire file direttamente tra iPhone e iPad e altri dispositivi mobili non Apple?