Dalvik var tidigare Googles virtuella maskin i operativsystemet Google Android. Dalvik var den systemkomponent som tolkade och körde mobilapplikationer på mobila enheter baserade på Android.
Dalvik | |
Operativsystem | Linux kärna |
---|---|
Plattform | Android |
Typ | Virtuell maskin |
Licens | Apache License 2.0 |
Webbplats | http://code.google.com/p/dalvik/ |
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Å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
redigeraDalvik ä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.
Prestanda
redigeraTester utförda av Oracle på ARM-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.
Källor
redigera- ^ ”Dalvik smali”. http://code.google.com/p/smali/.
- ^ ”Alien Dalvik för Meego”. Arkiverad från originalet den 8 april 2012. https://web.archive.org/web/20120408192509/http://www.allaboutmeego.com/news/item/12571_Alien_Dalvik_hopes_to_bring_An.php. Läst 6 november 2011.
- ^ ”Alien Dalvik”. Arkiverad från originalet den 11 februari 2011. https://archive.is/20110211170510/http://www.myriadgroup.com/Device-Manufacturers/Android-solutions/Alien-Dalvik.aspx.
- ^ ”Java SE Embedded Performance Versus Android 2.2”. Arkiverad från originalet den 30 september 2012. https://web.archive.org/web/20120930163343/https://blogs.oracle.com/javaseembedded/entry/how_does_android_22s_performance_stack_up_against_java_se_embedded. Läst 30 Oktober 2012.