Далвик (софтвер)

Из Википедије, слободне енциклопедије
Далвик
Првобитни
аутор(и)
Dan Bornstein
ОС Језгро Линукса
Платформа Андроид
Тип Виртуелна машина
Лиценца Apache лиценца 2.0
Веб-сајт source.android.com/devices/tech/dalvik/index.html
Далвик извршни модул
Екстензија фајла .dex

Далвик је дисконтинуирани[1] процес виртуалне машине (ВМ) који се користи у Гугл-овом Андроид оперативном систему. Он је интегрални део Адроидовог софтверског сета којег користи Андроид 4.4 "КитКет" и његови претходници, ово користе мобилни телефони, таблети, и све чешће, смарт телевизори и преносни рачунари. Далвик је софтвер отвореног типа кодирања, оригинал је написао Дан Борстеин, који га је назвао по рибарском селу Далвик у Eyjafjörður на Исланду.[2][3]

Програми за Андроид су најчешће написани у Јави и преведени су у бајткодове намењене за Јава виртуелну машину, који се касније преводи на Далвика бајткод и складишти у .dex (Dalvik EXecutable) и .odex (Optimized Dalvik EXecutable) фајлове; повезани термини odex и de-odex су повезани са одговарајућом бајткод конверзијом. Компактни .dex формат је намењен системима који су ограничени меморијом и брзином процесора.

Далвиков следбеник је Андроид Рантајм (АРТ), који користи исте бајткодове и .dex фајлове (али не и .odex фајлове) како би се перформансе видљиво побољшале у корист крајњег корисника. Нови систем извршавања се појавио код Андроид 4.4 "КитКет" верзије система,[4][5] а у следећој верзији Далвик је у потпуности замењен АРТ-ом; Андроид 5.0 "Лизалица" је прва верзија оперативног система у којој једино АРТ поседује систем извршавања.[6]

Архитектура[уреди]

Поређење Далвик и АРТ архитектуре

За раслику од Јава ВМ које су у суштини машине за распоређивање података, Далвик ВМ користи архитектуру која се базира на регистрима, захтева мање али компликованије механичке инструкције. Далвик је написан у Јави користећи Андроид апликацију за програмирање интерфејса (АПИ), преведена на Јава бајткод, и претворена на Далвикове инструкција ако је то потребно. 

Алатка названа dx се користи да Јавине .class фајлове претвари у .dex формат. Више class фајлова може бити уврштено у један .dex фајл. Дуплиране ниске и остале константе се користе у више class фајлова упаковани у један .dex фајл како би се уштедело на меморији. Јава бајткод се такође претвара у алтернативни скуп инструкција које користи Далвик ВМ. Некомпримовани .деx фајл је обично мало мањи од компримоване Јава архиве (ЈАР) изведени из истих .class фајлова.[7]

Извршни фајлови који се инсталирају помоћу Далвика се могу модификовати након инсталирања на мобилни уређај. Како би се унапредила оптимизација, редослед бајтова се може изменити у податак, струкура података и функционална библиотека могу да се споје, а празни class објекти би се на кратко преспојили, на пример.

Пошто јако мало меморије захтева, Далвик има посебне карактеристике и разликује се од осталих ВМ:[8]

  • ВМ сада заузима мање меморије.
  • Табела са константним вредностима је модификована за 32-битни систем како би се поједноставио интерпретатор
  • Стандардни Јава бајткод извршава наредбе величине 8 бита. Локалне променљиве се морају копирати из оперативног складишта помоћу посебних наредби. Уместо тога Далвик користи 16-битни скуп инструкција који ради директно са локалним променљивама. Локалне променљиве су најчешће упаковане у виртуалне регистре величине 4-бита. То смањује његову количину инструкција и убрзава брзину интерпретатора.

Према Гугл-у, дизајн Далвика дозвољава уређају да покрене више примерака ВМ ефикасности. .[9]

Андроид 2.2 "Фроyо" је проширио Далвик са ЈИТ компилацијом која је базирана на основу нацрта, која оптимизира спровођење апликација анализирајући апликацију сваки пут када се врши динамичко превођење кратких сегмената њеног бајткода у машински код. Док Далвик интерпретира остатак бајткодова апликације, инструкције извучене из кратких сегмената бајкодова који се зову "нацрти", обезбеђују значајна побољшања перформанси.[10][11][12]

Перформансе[уреди]

Ко заслужује похвале, да ли машине за складиштење података или приступ региртрације података,је дебата која траје већ поприлично дуго.[13]

Генерално, машине за складиштење података мора да користи инструкције да очита податак на стек и да манипулише тим податком, и, самим тим, захтева више инструкција него регистар машина за имплементацију кода високог нивоа, али су инструкције у регистар машини морају да кодирају изворе и одредишта регистара и, самим тим, имају тенденцију да буду већи. Ова разлика је врло важна кад је у питању ВМ интерпретација за сваки опкод  и којој брзина слања оперативног кода вреди много, а то важи и за остале сличне и битне факторе ЈИТ компилације.

Какогод, Oracle (власник Јава технологије) је 2010. године тестирао ARMv7 уређај са стандарном Јавом без графике као основним мерилом. Уградбена Јава СЕ је очигледно 2 до 3 ута бржа од Андроида 2.2, који је иницијално користио ЈИТ компајлер.[14]

2012. године акадмски програм за тестирање потврдио фактор 3 разлике између Жаришта и Далвика на истој Андроид Платформи, исто тако није било говора о томе да је Далвиков код мањи од кода Жаришта.[15]

Надаље, од марта 2014. године, тестирања обављена на Андроиду показују фактор 100 разлике између апликација на машинском језику и Далвикових апликација на истом Андроид уређају[16] У току тестирања која су се касније одвијала ЈНИ и машински код су показали огромно убрзање користећи интерпретатор из 2009. године.[17]

Лиценце и патенти[уреди]

Далвик је објављен под условима Apache лиценце 2.0.[18] Гугл каже да је Далвик применио дизајн чисте собе а не производ који је развијен на Јавином извршењу, што би значило да није наследио дозволу за копирање података ни од једне верзије Јава извршитеља.[19]Оракл и још неки критичари оспоравају о овоме.[20]

12.08.2010.године Оракл, који је у априлу 2009. добио Sun Microsystems а с тим и права на Јаву, је тужио Гугле због наводног кршења закона о патентима и ауторским правима. Оракл наводи да је Гугл, док је развијао Андроид, свесно, директно и константно крао Оракл-ову интелектуалну својину везану за Јаву.[21][22][23] Легалну анализу овог случаја обавила је Памела Џоунс и на Groklaw-у је прокоментаисала како се осећа непријатно.[24] У мају 2012. године порота је изгласала да Гоогле није крив.[25][26] Странке су се договориле да неце платити трошкове суђења ако предају 9 копија кода.[27][28]

9.5.2014. године је Федерални суд делом пресудио у Ораклову корист на тему ауторских права, а остатак проблема је пренешен у окружни суд где ће бити расправљен.[29][30]

Види још[уреди]

Референце[уреди]

  1. „Debugging ART Garbage Collection”. Приступљено 6. 10. 2015. »The Dalvik runtime is no longer maintained or available [in latest versions of Android] and its byte-code format is now used by ART.« 
  2. Journal entry referencing the source of the name
  3. „Google Calling: Inside Android, the gPhone SDK”. onlamp.com. Приступљено 05. 02. 2008. 
  4. Buckley, Sean (06. 11. 2013). „'ART' experiment in Android KitKat improves battery life and speeds up apps”. Engadget. Приступљено 05. 07. 2014. 
  5. Daniel P. (07. 11. 2013). „Experimental Google ART runtime in Android KitKat can bring twice faster app executions”. phonearena.com. Приступљено 05. 07. 2014. 
  6. Linder, Brad (октобар 15, 2014). „What's new in Android 5.0 Lollipop?”. liliputing.com. Приступљено октобар 15, 2014.  Проверите вредност парамет(а)ра за датум: |access-date=, |date= (помоћ)
  7. Bornstein, Dan (29. 05. 2008). „Presentation of Dalvik VM Internals” (PDF). Google. стр. 22. Приступљено 16. 08. 2010. 
  8. Rose, John (31. 05. 2008). „with Android and Dalvik at Google I/O”. Приступљено 08. 06. 2008. 
  9. Google (13. 04. 2009). „What is Android?”. Приступљено 19. 04. 2009. 
  10. Cheng, Ben; Buzbee, Bill (May 2010). „A JIT Compiler for Android's Dalvik VM” (PDF). android-app-developer.co.uk. Google. стр. 5—14. Приступљено март 18, 2015.  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)
  11. Nickinson, Phil (мај 26, 2010). „Google Android developer explains more about Dalvik and the JIT in Froyo”. androidcentral.com. Приступљено јул 8, 2014.  Проверите вредност парамет(а)ра за датум: |access-date=, |date= (помоћ)
  12. „Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster”. 13. 05. 2010. Приступљено 21. 05. 2010. 
  13. Shi, Yunhe; Gregg, David; Beatty, Andrew; Ertl, M. Anton (11. 06. 2005). „Virtual Machine Showdown: Stack Versus Registers” (PDF). Приступљено 22. 12. 2009. 
  14. Vandette, Bob (22. 11. 2010). „Java SE Embedded Performance Versus Android 2.2”. Oracle Corporation. Приступљено 04. 09. 2011. »The results show that although Androids new JIT is an improvement over its interpreter only implementation, Android is still lagging behind the performance of our Hotspot enabled Java SE Embedded. As you can see from the above results, Java SE Embedded can execute Java bytecodes from 2 to 3 times faster than Android 2.2.« 
  15. Hyeong-Seok Oh; Beom-Jun Kim; Hyung-Kyu Choi; Soo-Mook Moon (2012). „Evaluation of Android Dalvik virtual machine”. Association for Computing Machinery. Приступљено 23. 03. 2014. »In the JITC mode, however, Dakvik is slower than HotSpot by more than 2.9 times and its generated code size is not smaller than HotSpot's due to its worse code quality and trace-chaining code.« 
  16. „Top AndEBench Scores”. www.eembc.org. Приступљено 23. 03. 2014. 
  17. „Developing and Benchmarking Native Linux Applications on Android”. Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering. Springer Publishing. 29. 04. 2009. Приступљено 23. 03. 2014. »The results show that native C applications can be up to 30 times as fast as an identical algorithm running in Dalvik VM. Java applications can become a speed-up of up to 10 times if utilizing JNI.« 
  18. „Downloading the Source Tree - Android Open Source”. Android.git.kernel.org. Приступљено 07. 06. 2012. 
  19. Mazzocchi, Stefano (12. 11. 2007). „Dalvik: how Google routed around Sun’s IP-based licensing restrictions on Java ME”. Приступљено 16. 08. 2010. 
  20. Bott, Ed (8. 09. 2011). „The real history of Java and Android, as told by Google”. ZDNet. Приступљено 27. 11. 2011. »The definition of a “clean room” implementation is that the engineers writing the code have no direct exposure to the original, copyrighted material, including code, specifications, and other documentation. That’s a problem for Google, as I noted in yesterday’s post, because there is substantial evidence that the engineers working on the project had direct access to the copyrighted material. « 
  21. „Oracle Sues Google Over Java in Android Devices”. digitaltrends.com. 13. 08. 2010. Приступљено 08. 08. 2011. 
  22. Niccolai, James (12. 08. 2010). „Oracle sues Google over Java use in Android”. Computerworld. Приступљено 13. 08. 2010. 
  23. Hachman, Mark (13. 08. 2010). „Oracle Sues Google Over Android Java Use”. PC Magazine. Ziff Davis. 
  24. Jones, Pamela (16. 08. 2010). „Oracle America's complaint against Google, as text”. Groklaw. 
  25. Lowensohn, Josh (23. 05. 2012). „Jury clears Google of infringing on Oracle's patents”. ZDNet. Приступљено 25. 05. 2012. 
  26. Mullin, Joe (31. 05. 2012). „Google wins crucial API ruling, Oracle’s case decimated”. Ars Technica. Приступљено 01. 06. 2012. 
  27. Niccolai, James (20. 06. 2012). „Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal”. Приступљено 23. 06. 2012. 
  28. Outler, Adam (16. 05. 2012). „Update on the Oracle Versus Google Trial”. Приступљено 18. 01. 2013. »A major portion of the Oracle’s claims are based on 9 lines of code contained within Java.Util.Arrays.rangeCheck(). Here is the code in question:...« 
  29. Rosenblatt, Seth (9. 05. 2014). „Court sides with Oracle over Android in Java patent appeal”. CNET. Приступљено 10. 05. 2014. 
  30. „ORACLE AMERICA, INC. , Plaintiff - Appellant, v. GOOGLE INC., Defendant - Cross - Appellant.” (PDF). Court of Appeals for the Federal Circuit. 9. 05. 2014. Приступљено 10. 05. 2014. 

Спољашње везе[уреди]