Almindelig- vs. Android Java bytecode?

Software d.  04. marts. 2011, skrevet af Hessi
Vist: 529 gange.

Hessi
 
Elitebruger
Tilføjet:
04-03-2011 15:58:54
Svar/Indlæg:
1972/260
Hey,

Ville lige høre jer om i ved hvad forskellen på "almindelig" Java bytecode er i forhold til Java bytecode til Android.

Sådan som jeg har forstået det, betyder det at den Java Virtual Machine der kører på en Android baseret enhed er markant anderledes i forhold til de Java Virtual Machines der køre på desktop/laptops OS'er, netop fordi bytecoden er anderledes. Men i virkeligheden gør den det samme som en "almindelig" Java Virtual Machine.

Er det korrekt?

Jeg takker.

Mvh.
Hessam 🙂


Tråden blev redigeret 2 gange, sidst af Hessi d. 04-03-2011 15:59:51.
Hessi
 
Elitebruger
Tilføjet:
04-03-2011 16:26:17
Svar/Indlæg:
1972/260
Så vidt jeg lige selv kan se så bliver Java source code compilet til noget der hedder .dex fil.

Ved kørsel af koden bliver .dex filen aflæst af Dalvik Virtual Machine (som er en del af Android) og når man igangsætter en funktion loader VM'en de nødvendige variabler i memory og ved hjælp af en JIT compiler bliver koden oversat til chip-instructions.

Er jeg helt galt på den? 😀


Svaret blev redigeret 1 gang, sidst af Hessi d. 04-03-2011 16:31:28.


Hessi
 
Elitebruger
Tilføjet:
04-03-2011 17:18:32
Svar/Indlæg:
1972/260
Til de interesserede, sådan sker det...

Du koder dit program i Java syntax, men bruger Apache Home frameworket (Den indeholder base classes som Dalvik Virtual Machine understøtter).

Når du har compilet din Java kode får du dine .class filer, disse filer skal oversættes til .dex filer - .class filer indeholder Java bytecode og nogle informationer om koden som Java Virtual Machine skal bruge, og .dex filer indeholder Dalvik bytecode og nogle informationer om koden som Dalvik Virtual Machine skal bruge.

Oversættelsen sker ved hjælp af en plugin eller en tool. (Plugin til eclipse eller dx tool).

.dex filerne bliver pakket (zippet) til en .apk fil som kan føres over på en Android enheden og køres ved hjælp af Dalvik Virtual Machine, som oversætter Dalvik bytcoden til Android instructions. 😀