Andorid java dalvic e applicazioni

gaiapuffo

Utente Attivo
310
7
Ciao per chiunque se ne intenda,avevo un dubbio. Solitamente la mia applicazione girà appogiandosi al sistema operativo,sono alle basi di android e mi dice che ad ogni appplicazione viene associata una java dalvic...ma praticamente ho la seguente struttura:

sistema operativo
java dalvic
programma


Ma esattamente cosa fa la java delvic durante l'esecuzione del programma?Forse la java dalvic interviene solo nella compilazione o anche nell'esecuzione?
 
L

lock3r

Ospite
sistema operativo
java dalvic
programma


Ma esattamente cosa fa la java delvic durante l'esecuzione del programma?Forse la java dalvic interviene solo nella compilazione o anche nell'esecuzione?

A parte che la pile è sottosopra, cioé, dal livello più alto al più basso:

programma
JVM/JDVM
HW


La dalvic (come la JVM) ha il compito di interpretare il Java bytecode (una versione semicompilata del tuo codice Java) e "tradurlo" per l'architettura su cui il SW sta girando. Ha il compito di gestire il linking/binding alle librerie etc etc. Per questo motivo un SW scritto in Java gira più o meno senza problemi (sostanzialmente l'unico grosso problema sono i fonts) su qualunque piattaforma HW/SW. La cosa bella è che fondamentalmente te ne freghi del sistema operativo. Ciao :)

- - - Updated - - -

Per capire cos'è il bytecode, scrivi un semplicissimo SW "HelloWorld", compilalo e apri il file compilato (anche se non è propriamente giusto dire che viene compilato).
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Tieni conto che la Dalvik non è una JVM.
La Dalvik è una virtual machine scritta da Google per Android che ha un suo instruction set e bytecode.
Il programma che tu scrivi in Java viene compilato in bytecode Java e poi nuovamente tradotto nel Bytecode Dalvik (eseguibile .dex), che è diverso da quello Java.
Vengono quindi effettuate due conversioni anzichè una come nelle normali virtual machine Java, questo perchè la dalvik non è una JVM ma una VM dedicata all'uso in dispositivi mobile e quindi ottimizzata a tale scopo.
Anche a livello architetturale sono diverse.
Dai un occhio qui: The Stack - Learning Android - OFPS - O'Reilly Media
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili