From Wikipedia, the free encyclopedia
A Dalvik virtuális gép a Google által létrehozott Android operációs rendszer virtuális számítógépe (VM). Ez az a szoftver, amely futtatja a programokat az Android OS-sel ellátott készülékeken. Emiatt nyugodtan mondhatjuk, hogy a Dalvik szerves részét képezi az Android OS-nek, mely leginkább a mobiltelefonokon és táblagépeken használatos. Ezen a készülékeken futó programok legtöbbször Java nyelven íródnak, és első lépésben Java bájtkódra fordulnak. Ezután a Java virtuális gép számára könnyen feldolgozható .class fájlról a Dalvik számára feldolgozható .dex fájlra konvertálódnak, még mielőtt feltelepülnének az őket futtató eszközre. A .dex (Dalvik executable) fájlformátumot úgy tervezték, hogy megfelelően fusson a korlátozott erőforrással (memória és processzor) rendelkező készülékeken is.
Dalvik | |
Fejlesztő | Dan Bornstein |
OS-család | Linux kernel |
Kernel | Java virtuális gép |
Licenc | Apache Licenc |
Weboldal | Dalvik |
A Dalvik szabad szoftver. Eredetileg Dan Bornstein írta, és egy Eyjafjörður-ben található Dalvík nevű halászfaluról nevezte el, ahol a felmenői éltek.[1][2]
A Java virtuális gépektől eltérően, melyek verem alapú gépek, a Dalvik virtuális gép regiszter-bázisú architektúrán alapszik.
A dx eszköz segítségével történik a Java .class file-ok (nem minden class file) konvertálása .dex kiterjesztésre. Egy .dex file-ban több osztály is szerepelhet. A többször előforduló stringek és egyéb konstansok, melyek több osztályban is szerepelhetnek egyetlenegyszer kerülnek a .dex file kimenetébe, az optimális méret elérésének a céljából. A Java bájtkód emellett még egy speciális utasításkészletté is konvertálódik, melyet a Dalvik virtuális gép használ. Egy tömörítetlen .dex file méretben csupán pár százalékkal kisebb egy ugyanazon .class fileokat tartalmazó .jar (Java Archive) formátumtól.[3]
A futtatható dalvik állományok módosítására lehetőség van az eszközre történő telepítés után is. A további optimalizáció elérésének érdekében lehetőségünk van, bájt sorrend felcserélésére egyes adatok esetében, egyszerű adatszerkezetek és függvény könyvtárak inline linkelésére, és az üres osztály objektumok zárolására.
Az Android 2.2 óta, a Dalvik rendelkezik futásidejű fordítóval.[4] A JIT fordítók lényege, hogy nem egyszerre fordítja le az alkalmazást, hanem futás közben részenként, ezzel jelentős akár három-, négyszeres gyorsulást is el lehet érni egy-egy alkalmazás esetében.
Mivel az alacsony memória követelmények elérése a cél, a Dalvik különbözik a többi hagyományosnak nevezett virtuális géptől:[5]
Ráadásul a Google szerint, a Dalvik gépet úgy alkották meg, hogy hatékonyan tudjon egy eszközön több példányban is futni.[6]
Napjainkban is vita folyik arról, hogy mely gépek a jobbak, a verem-alapúak vagy a regiszter-alapúak.[7]
Általában, a verem alapú gépeknek szükségük van utasítások használatára ahhoz, hogy adatot tudjanak a veremből betölteni és módosítani, és emiatt sokkal több utasítást használnak ugyanazon magasabb szintű kód végrehajtásához, mint egy regiszter alapú gép, viszont utóbbi gép esetén az utasításoknak be kell kódolniuk az opkódba a forrás és cél regisztereket is, így ezeknél általában nagyobb méretű kód keletkezik. Ezen különbségek főként a VM interpreter számára fontosak, mivel a méret és egyéb tényező releváns a futásidejű fordításnál (just-in-time compilation).
Viszont az Oracle (amely a Sun felvásárlása óta a Java technológia tulajdonosa) által végrehajtott ARM alapon nyugvó benchmark tesztek esetében megállapítható, hogy az Android 2.2 két-, háromszor lassabb eredményt produkált, mint a hasonló Java SE embedded.[8]
A Dalvik nem igazodik a Java SE, sem a Java ME osztálykönyvtárakhoz [9][10] (például, Java ME osztályok, AWT vagy Swing sem támogatott). Ehelyett saját könyvtárrendszerrel dolgozik[11] mely az Apache Harmony Java megvalósításának egy részhalmazára támaszkodik.
A Dalvik az Apache Licenc 2.0 feltételei alapján jelent meg.[12] A Google állítása szerint a Dalvik egy clean-room implementációja a standard Java Runtime-nak és nem egy Java Runtime-ra támaszkodó fejlesztés, amely nem sértett meg egyetlen szerzői-jog megszorítást, sem a Java Runtime, sem a standard Java változat esetében sem.[13] Ugyanakkor a Google állítása, miszerint a Dalvik implmentációja egy Java runtime clean-room implementáció, vitatott mind az Oracle, mind jópár bíráló által.[14]
2010. augusztus 12-én az Oracle cég, mely 2009. áprilisától a Sun Microsystems és ezen kívül a Java szerzői jogainak a tulajdonosa, beperelte a Google céget, mert azt állította, hogy az megsértette a szerzői jogokat és a szabadalmakat. Az Android fejlesztői azt állították, hogy a Google tudatosan és ismételten szándékosan szegte meg az Oracle Java-vonatkozású szerzői jogait.[15][16][17]
2011-ben, a Myriad Group által szoftverfejlesztő cég bejelentette az "Alien Dalvik"-ot, amely egy Dalvik virtuális gép portolása nem Android platformokra.[18][19]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.