25 Gennaio 2022
Expand search form

Android è una JVM?

SHISHIR

È davvero importante capire che come funziona l’applicazione Android e quali componenti sono utilizzati per far funzionare il dispositivo Android.

Quindi in questa guida, ho intenzione di rispondere alle seguenti domande

  • Perché Android usa la Vitual Machine
  • Cosa sono JVM e DVM
  • JVM vs DVM
  • Perché Android OS ha usato DVM invece di JVM
  • Perché Android ha deprezzato DVM e ha iniziato a usare ART
  • Perché Android reintroduce JIT con ART
  • JIT vs AOT

Dato che stiamo per sapere perché Android usa la macchina virtuale. Prima di questo dovremmo avere un’idea chiara sulla macchina virtuale (VM)

Cos’è la macchina virtuale (VM)

La macchina virtuale è un’astrazione sopra la macchina nativa supportata dalle risorse della macchina nativa. Il suo compito è quello di convertire il codice specifico della lingua in un formato compatibile con l’esecuzione sulla macchina virtuale. La macchina virtuale permette allo stesso codice di essere eseguito su più piattaforme indipendentemente dall’hardware sottostante.

Per esempio: la JVM esegue il bytecode java e produce lo stesso output su più piattaforme.

Android fa anche uso di una macchina virtuale per eseguire i file APK. I vantaggi sono i seguenti:

  • Il codice dell’applicazione è isolato dal nucleo del sistema operativo. Quindi, anche se qualsiasi codice contiene del codice dannoso non influenzerà direttamente i file di sistema. Rende il sistema operativo Android più stabile e affidabile.
  • Fornisce compatibilità incrociata o indipendenza dalla piattaforma. Significa che anche se un’applicazione è compilata su una piattaforma come un PC, può ancora essere eseguita sulla piattaforma mobile utilizzando la macchina virtuale.
  • Per mantenere l’indipendenza della piattaforma del codice, JAVA ha sviluppato JVM, cioè Java Virtual Machine
  • La JVM è dipendente dalla piattaforma e sono disponibili diverse implementazioni per piattaforme specifiche.
  • La JVM usa un compilatore JIT.
  • Il bytecode Java può essere eseguito su qualsiasi macchina in grado di eseguire la JVM.
  • Nella JVM, il compilatore Java converte i file .java in file .class, che è chiamato bytecode. Per esempio: Se abbiamo una classe Hello.java e quando eseguiamo questo file di classe allora il compilatore javac/compilatore Java trasforma questo codice sorgente nel file Hello.class che è bytecode. Il che significa che il compilatore javac non converte il codice Java direttamente in codice macchina come fanno altri compilatori.
  • Questo bytecode è dato alla JVM che lo converte in codice macchina.

Come potete vedere dall’immagine qui sopra, una volta che avete il file .class pronto, potete dare questo file a qualsiasi piattaforma e lo convertirà in codice macchina nativo.

Cosa stai pensando? Come l’esecuzione del codice java funziona da JVM e Android usa java. Quindi anche Android usa la JVM? Sarebbe, ma anche se JVM è ad alte prestazioni e fornisce un’eccellente gestione della memoria, ha bisogno di essere ottimizzato anche per i dispositivi palmari a bassa potenza. Ecco perché un’altra macchina virtuale è stata progettata specificamente per i dispositivi mobili ed è Delvik Virtual Machine (DVM).

  • DVM sta per ‘Delvik Virtual Machine’.
  • DVM (Dalvik Virtual Machine) è stata creata da Dan Bornstein e dal suo team, tenendo in mente solo i vincoli di un dispositivo mobile.
  • Era una VM specifica per lo scopo ed è stata rigorosamente creata per i dispositivi mobili.
  • Analogamente alla JVM, utilizza anche il compilatore JIT.
  • Dal momento che tutto nei cellulari è molto limitato, che si tratti di durata della batteria, elaborazione e memoria, ecc. È stato ottimizzato in modo che possa adattarsi ai dispositivi a bassa potenza.
  • In DVM, tutto è uguale a JVM tranne gli ultimi due passi qui. Il compilatore Dex converte i file di classe nel file .dex che gira sulla Dalvik VM. Più file di classe sono convertiti in un unico file dex.

Nota: dexopt che è una parte della DVM converte il file dex in formato .odex.

  • La JVM è basata sullo stack, ma DVM è basata sul registro ed è progettata per funzionare con poca memoria.
  • JVM usa il codice byte di Java ed esegue il file ‘.class’ con JIT (Just in Time) mentre DVM usa il proprio codice byte ed esegue il file ‘.dex’.
  • In JVM, una singola istanza di JVM è condivisa con più applicazioni, mentre DVM è stato progettato in modo che il dispositivo possa eseguire più istanze di VM in modo efficiente. Alle applicazioni viene data la propria istanza.
  • JVM supporta più sistemi operativi, mentre DVM supporta solo il sistema operativo Android.
  • In JVM, l’eseguibile è JAR mentre in DVM l’eseguibile è APK.

Ci sono un paio di motivi per cui Google ha scelto DVM rispetto a JVM, quindi cerchiamo di capire ognuno di loro uno per uno.

  • Uno dei motivi principali dell’utilizzo di DVM in Android è che DVM richiede meno memoria, viene eseguito e caricato più velocemente rispetto a JVM
  • Anche se JVM è gratuito, era sotto licenza GPL, che non va bene per Android in quanto la maggior parte di Android è sotto licenza Apache.
  • JVM è stata progettata per i desktop ed è troppo pesante per i dispositivi embedded.

C’erano alcuni svantaggi nell’usare DVM. In Dalvik runtime, un’applicazione viene compilata ogni volta che viene lanciata. Questo porta ad un uso eccessivo della CPU e della memoria e riduce anche la durata della batteria. Ecco perché da Android 4.4 (KitKat) è stato introdotto ART e da Android 5.0 (Lollipop) ha completamente sostituito Dalvik.

  • ART sta per ‘Android Run-Time’.
  • ART usa la compilazione AOT (Ahead-of-Time)

In ART, durante la fase di installazione dell’app, AOT ( Ahead-of-Time) traduce staticamente il bytecode DEX in codice macchina e lo memorizza nella memoria del dispositivo. Questo è un evento una tantum e avviene solo quando l’app è installata sul dispositivo. Questo porta a una migliore durata della batteria e a grandi prestazioni. Quindi non c’è bisogno della compilazione JIT, e il codice viene eseguito molto più velocemente.

Il cambiamento più significativo da Dalvik ad ART è che Dalvik è basato sulla compilazione Just-in-Time (JIT), mentre ART è basato sulla compilazione Ahead-of-Time (AOT).

  • AOT usa lo strumento dex2oat per compilare i file .dex e genera un’app compilata da eseguire sul dispositivo di destinazione.
  • La garbage collection è una delle ragioni principali per una scarsa UX, scarsa reattività e, in definitiva, cattive recensioni. Ai tempi di Dalvik, GC aveva due passaggi sull’heap, il che portava a una scarsa UX. Questa situazione è migliorata in ART, poiché è richiesto un solo passaggio sull’heap per consolidare la memoria.

Vantaggi di ART rispetto a DVM

  • Le applicazioni vengono eseguite più velocemente in quanto la traduzione del bytecode DEX avviene solo durante l’installazione.
  • Riduzione del tempo di avvio delle applicazioni in quanto il codice nativo viene eseguito direttamente.
  • Miglioramento delle prestazioni della batteria in quanto l’energia utilizzata per interpretare i codici byte riga per riga viene risparmiata.
  • Garbage collector migliorato
  • Strumento per sviluppatori migliorato.

Anche se ART ha migliorato le prestazioni delle app, ci sono stati alcuni svantaggi di ART.

Svantaggi di ART

  • L’installazione dell’app richiede più tempo a causa della conversione dei bytecode DEX in codice macchina durante l’installazione.
  • Poiché il codice macchina nativo generato durante l’installazione è memorizzato nella memoria interna, è necessaria più memoria interna.

Per affrontare questi problemi come il tempo di installazione iniziale e la memoria da Android Nougat è stata reintrodotta la compilazione JIT (Just In Time) con la profilazione del codice insieme a AOT, e un interprete nell’ART rendendolo così ibrido. Utilizzando l’Hybrid Runtime, non ci sarà alcuna compilazione durante l’installazione, e le applicazioni possono essere avviate subito, il bytecode viene interpretato.
Ora con ART e il nuovo JIT l’installazione delle applicazioni è più veloce. Il nuovo JIT fa costantemente profiling e migliora le applicazioni mentre vengono eseguite.

Potresti anche essere interessato agli argomenti

Perché la JVM non è usata in Android?

Perché il sistema operativo Android usa DVM invece di JVM? … Anche se JVM è gratuita, era sotto licenza GPL, che non va bene per Android in quanto la maggior parte di Android è sotto licenza Apache. JVM è stata progettata per i desktop ed è troppo pesante per i dispositivi embedded. DVM richiede meno memoria, gira e carica più velocemente rispetto a JVM.

Continua…

Android Java è lo stesso di Java?

4 Risposte. Sì, lo è. La sintassi è esattamente la stessa e si possono usare gli stessi metodi che sono disponibili in Java SE. Android ha il proprio SDK (Software Development Kit) che è classi Java specifiche e metodi per Android, ad esempio trattare con eventi click e interfaccia utente.Sep 11, 2011

Continua…

Java è un Android?

Android usa il linguaggio Java e NON la Java Virtual Machine, c’è una grande differenza, usa anche un proprio formato di codice byte.21 mar. 2012

Continua…

Cos’è la JVM e un esempio?

JVM in java JVM è un motore che offre il codice Java o l’ambiente di esecuzione delle applicazioni. Trasforma il bytecode Java nel linguaggio dei computer. … Questo bytecode è interpretato su vari computer Il bytecode è un codice intermedio tra il sistema host e il codice sorgente di Java.

Continua…

Java è interpretato?

È un linguaggio interpretato portatile e orientato agli oggetti. … Java può essere considerato sia un linguaggio compilato che interpretato perché il suo codice sorgente viene prima compilato in un byte-code binario. Questo byte-code viene eseguito sulla Java Virtual Machine (JVM), che di solito è un interprete basato su software.

Continua…

Eclipse è una JVM?

L’ultima versione di Eclipse richiede una JVM a 64 bit e non supporta una JVM a 32 bit. Le attuali versioni di Eclipse richiedono Java 11 JRE/JDK o più recente.Sep 15, 2021

Continua…

Kotlin gira su JVM?

Sì. Kotlin è compatibile al 100% con la JVM e come tale è possibile utilizzare qualsiasi framework esistente come Spring Boot, vert. … Inoltre ci sono framework specifici scritti in Kotlin come Ktor. Per maggiori informazioni controlla la risorsa sullo sviluppo lato server.Sep 13, 2021

Continua…

La JVM è un’arte?

i formati binari differiscono; Dalvik/ART non genera bytecode JVM; il livello di linguaggio differisce; è in parte una conseguenza del punto precedente, poiché per supportare un dato livello di linguaggio, Dalvik/ART deve reimplementare tutta la produzione di parsing/bytecode per adattarsi alla propria VM.Mar 31, 2016

Continua…

Android è compilato o interpretato?

Le applicazioni Android sono interpretate piuttosto che compilate.Sep 21, 2014

Continua…

Le app Android sono compilate?

Come tutti sappiamo, le app Android possono essere scritte nei linguaggi di programmazione Java e Kotlin. Quindi il processo di compilazione delle app Android si basa sul processo di compilazione del codice Java e Kotlin (a parte l’ambiente Android).

Continua…

Cos’è un gruppo di vista Android?

Un ViewGroup è una vista speciale che può contenere altre viste. Il ViewGroup è la classe base per i layout in Android, come LinearLayout , RelativeLayout , FrameLayout ecc. In altre parole, ViewGroup è generalmente utilizzato per definire il layout in cui le viste (widget) saranno impostate/disposte/elencate sullo schermo di Android.

Continua…

Perché Dalvik VM è usato in Android?

Android utilizza la macchina virtuale Dalvik con compilazione just-in-time per eseguire il bytecode Dalvik, che è solitamente tradotto dal bytecode Java. … Ogni applicazione Android viene eseguita nel proprio processo, con la propria istanza della macchina virtuale Dalvik. Dalvik è stato scritto in modo che un dispositivo possa eseguire più VM in modo efficiente.Oct 25, 2011

Continua…

Come posso ottenere la JVM 11?

OpenJDK 11 è la distribuzione open source di JDK 11, con licenza GNU General Public License versione 2 (GPLv2). Per scaricare OpenJDK 11, devi andare alla pagina di download di OpenJDK Archive. Poi scorri un po’ in basso per trovare la versione 11.0. 2.Sep 23, 2020

Continua…

java 1.8 è uguale a java 8?

In JDK 8 e JRE 8, le stringhe di versione sono 1.8 e 1.8. … Ecco alcuni esempi in cui viene usata la stringa di versione: java -version (tra le altre informazioni, restituisce java versione “1.8. 0” )

Continua…

Qual è più veloce Kotlin o Java?

Java attualmente compila più velocemente di Kotlin, anche se Kotlin sta recuperando terreno. La differenza di velocità non è grande: mentre dipende da una varietà di fattori, Java ha in media un aumento di velocità di circa il 13%.21 gennaio 2020

Continua…

Articolo precedente

Cos’è l’azione che cade in un diagramma della trama?

Articolo successivo

Posso usare il regolatore di acetilene per il propano?

You might be interested in …

Quali sono le caratteristiche di un buon re?

Alcune delle qualità di un buon re includono essere calmo e centrato, essere deciso e avere integrità personale. Essere laborioso ed energico, parlare bene, proteggere le persone, mantenere l’ordine, benedire gli altri e riconoscere gli […]

Quanto è efficace il topotecan?

Il cancro ovarico è uno dei più comuni tumori maligni del tratto genitale femminile che rappresenta circa il 3% di tutti i tumori nelle donne, ed è la principale causa di morte per cancro ginecologico […]