Dalvik (programvara)

Från Wikipedia
Hoppa till: navigering, sök
Dalvik
Operativsystem Linux kärna
Plattform Android
Typ Virtuell maskin
Licens Apache License 2.0
Webbplats http://code.google.com/p/dalvik/

Dalvik är Googles virtuella maskin i operativsystemet Google Android. Dalvik är den systemkomponent som tolkar och kör mobilapplikationermobila enheter baserade på Android.

Applikationens källkod är vanligen skriven i programspråket Java, och förkompilerad till Java bytekod (klassfiler av typen .java) som är kompatibla 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 EXexutable). 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 Broinstein, 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 tolkning inte behöver upprepas för varje iteration.

Prestanda[redigera | redigera wikitext]

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.

Källor[redigera | redigera wikitext]

  1. ^ ”Dalvik smali”. http://code.google.com/p/smali/. 
  2. ^ ”Alien Dalvik för Meego”. http://www.allaboutmeego.com/news/item/12571_Alien_Dalvik_hopes_to_bring_An.php. 
  3. ^ ”Alien Dalvik”. http://www.myriadgroup.com/Device-Manufacturers/Android-solutions/Alien-Dalvik.aspx. 
  4. ^ ”Java SE Embedded Performance Versus Android 2.2”. https://blogs.oracle.com/javaseembedded/entry/how_does_android_22s_performance_stack_up_against_java_se_embedded. Läst 30 Oktober 2012.