Hoppa till innehållet

Dalvik (programvara)

Från Wikipedia
Dalvik
OperativsystemLinux kärna
PlattformAndroid
TypVirtuell maskin
LicensApache License 2.0
Webbplatshttp://code.google.com/p/dalvik/

Dalvik var tidigare Googles virtuella maskin i operativsystemet Google Android. Dalvik var den systemkomponent som tolkade och körde mobilapplikationermobila enheter baserade på Android.

Dalvik är numera ersatt av efterträdaren Android runtime (ART).

En Android-applikations källkod är vanligen skriven i programspråket Java, och förkompilerad till Java-bytekod som är kompatibel med Oracles motsvarande virtuella maskin Java Virtual Machine (JVM). Ett verktyg som kallas dx används för att konvertera klassfilerna till Dalvik-kompatibel körbar kod i form av Dex- (Dalvik Executable) och Odex-filer (Optimized Dalvik EXecutable). Den körbara koden installeras på enheten, och tolkas och körs av Dalvik när applikationen startas. Konverteringen kallas odexing och de-odexing.

Programvaran Dalvik är skriven som öppen källkod. Det var ursprungligen skriven av Dan Bornstein, som namngav den efter fiskebyn Dalvík i Eyjafjörður, Island, där några av hans anfäder levde.[1]

Dalvik på andra plattformar

[redigera | redigera wikitext]

År 2011 presenterade mjukvaruföretaget Myriad Group "Alien Dalvik". Alien Dalvik är en portning av Dalvik virtual machine till andra plattformar än Android. [2][3]

Funktionsprincip

[redigera | redigera wikitext]

Dalvik är en registerbaserad maskin, till skillnad från Oracles stackbaserade virtuella maskiner. Stackmaskiner är mer oberoende av processorarkitekturen (antalet register, med mera) än en registerbaserad maskin, men tenderar att använda fler instruktioner för att göra samma sak.

Den Dalvik-kompatibla körbara koden har optimerats för att ta litet minnesutrymme och fungera vid begränsad minnesmängd. Vid konvertering från JVM-bytekod till Dalviks körbara kod tas duplicerade konstanter, exempelvis textsträngar, bort så att de endast ingår en gång i dex-filen för att spara utrymme. JVM-bytekoden omvandlas också till en alternativ instruktionsuppsättning som inte alltid baseras på 8 bit ordlängd, och syftar till att ta mindre minnesutrymme.

Från och med Android 2.2 innefattar Dalvik en just-in-timekompilator som kompilerar Dalviks komprimerade körbara kod till snabb binärkod i samband med att koden exekveras, vilket möjliggör att binärkoden kan återanvändas och tolkningen inte behöver upprepas för varje iteration.

Tester utförda av OracleARM-enheter 2010 visar att Android 2.2 kan vara 2 till 3 gånger långsammare än Java SE embedded, som är stack-baserad.[4]

En okomprimerad dex-fil är vanligtvis några procent mindre i storlek än en komprimerad JAR-fil (Java Archive) som härrör från samma klass-filer.