Dalvik

**Dalvik** er heiti sýndarvélar Android-stýrikerfisins frá Google. Dalvik er innbyggður hluti Android, sem er aðallega notað í meðbærum tækjum svo sem farsímum, töflutölvum og netfartölvum. Áður en Android-forrit eru keyrð, er þeim breytt yfir á hið samþjappaða **Dalvik Executable** (**.dex**)-snið, sem er hannað fyrir kerfi með takmarkað vinnsluminni og örgjörvahraða.

Dalvik-sýndarvélin er, eins og Android að öðru leyti, opinn hugbúnaður. Upprunalegur höfundur hennar er Dan Bornstein, sem nefndi hana eftir bænum Dalvík þaðan sem hann er ættaður að langfeðgatali.

## Bygging

Ólíkt flestum sýndarvélum og sönnum Java-sýndarvélum sem eru staflavélar, er Dalvik-sýndarvélin gistursvél.

Skiptar skoðanir eru um hvor gerðin, staflavélar eða gistursvélar, hefur fleiri kosti Almennt talað þurfa vélar af staflagerð að nota skipanir til að hlaða gögnum á staflann og meðhöndla þau, og þurfa því fleiri skipanir en gistursvélar til að inna sama hástigsmálið, en skipanirnar í gistursvél verða að kóða uppruna- og áfangastaðarskrárnar og eru því yfirleitt stærri. Þessi mismunur skiptir mestu máli fyrir sýndarvélartúlka en hjá þeim er oppkóða-tímaveiting yfirleitt dýr sem og aðrir þættir er varða tímanlega þýðingu.

Tól er nefnist **dx** er notað til að breyta sumum (en ekki öllum) Java-klasa-skrám yfir á .dex-sniðið. Margir klasar rúmast í einni .dex-skrá. Strengir og aðrir fastar sem notaðir eru í marg-klasa-skrám koma aðeins fyrir einu sinni í .dex-frálagi til að spara pláss. Java-bætakóða er einnig breytt yfir í annarskonar skipanamengi sem Dalvik-sýndarvélin notar. Óþjöppuð .dex-skrá er venjulega nokkrum prósentum minni en þjappað Java-gagnasafn sem leitt er út frá sömu .class-skrám.

Dalvik-keyrsluskrám kann að vera breytt aftur þegar þær eru settar upp á meðbæru tæki. Í skyni frekari beztunar kann bætaröð að vera skipt út í vissum gögnum, einfaldir gagnastrúkturar og falla-söfn kunna að vera innlínu-tengd og tómum klasahlutum kann að vera skammhleypt, til dæmis.

Frá og með Android 2.2 hefur Dalvik tímanlegan þýðanda.

Þar eð Dalvik er beztuð fyrir litlar minniskröfur, hefur hún viss séreinkenni sem greina hana frá öðrum stöðluðum sýndarvélum:
* Sýndarvélin var minnkuð svo hún tæki minna pláss.
* Fastaknippinu hefur verið breytt þannig að það noti aðeins 32 bita vísa til að einfalda túlkinn.
* Hún notast við sinn eigin bætakóða, ekki Java-bætakóðann.

Ennfremur hefur Dalvik verið hönnuð þannig að tæki geti keyrt fleiri en eitt tilvik sýndarvélarinnar á skilvirkan hátt.

## Klasasafn
Dalvik lagar sig hvorki að Java SE né Java ME klasasafna-prófílum  (þ.e. Java ME-klasar, AWT og Swing eru ekki studd). Hún notar sitt eigið safn í staðinn á grundvelli hlutmengis Apache Harmony-Java-fullbúningarinnar.

## Leyfismál

Dalvik er sögð vera fullbúning af gerð hreins-herbergis-hönnunar en ekki þróun ofan á staðlaða Java-keyrsluskrá, sem þýðir að hún erfir höfundarréttartengdar leyfistakmarkanir hvorki frá staðal- né opins-uppruna-útgáfum Java-keyrsluskráa.

Dalvik er gefin út undir Apache 2-leyfinu.

## Tilvísanir

## Tenglar
* Groklaw grein um málarekstur Oracle America gegn Google 
* Dex-skráasniðið 
* Dalvik VM OpCode kóðar
* Dalvik VM Internals  - Kynning frá Google I/O 2008 eftir Dan Bornstein
* android-dalvik-vm-on-java  er virkt verkefni sem gengur út á að þróa hreina Java-fullbúningu Android Dalvik-sýndarvélarinnar.
*Myndræn skýringarteikning af Android-stýrikerfinu