Дальвик (бағдарламалық жасақтама) - Dalvik (software)

Дальвик
Түпнұсқа автор (лар)Дэн Борнштейн
Операциялық жүйеLinux ядросы
ПлатформаAndroid
ІзбасарAndroid жұмыс уақыты
ТүріВиртуалды машина
ЛицензияApache лицензиясы 2.0
Веб-сайтқайнар көзі.android.com/ құрылғылар/ tech/ dalvik/ индекс.html

Дальвик тоқтатылған болып табылады виртуалды машина (VM) in Android операциялық жүйесі Android үшін жазылған қосымшаларды орындайды.[1] (Dalvik байт-кодының форматы әлі де тарату форматы ретінде пайдаланылады, бірақ жаңа Android нұсқаларында жұмыс уақытында болмайды.) Dalvik Android-те бағдарламалық жасақтама жинағының ажырамас бөлігі болды (қазір қолдау көрсетілмейді) Android нұсқалары 4.4 «KitKat» сияқты ұялы құрылғыларда әдетте қолданылған Ұялы телефондар және планшеттік компьютерлер сияқты кейбір құрылғыларда және т.б. ақылды теледидарлар және тозуға болатын заттар. Дальвик ашық бастапқы бағдарламалық жасақтама, бастапқыда Дэн Борнштейн жазған, оны балықшылар ауылының атымен атаған Дальвик жылы Эйяфьордюр, Исландия.[2][3]

Бағдарламалар Android үшін әдетте жазылған Java және құрастырылған байт коды үшін Java виртуалды машинасы, ол Dalvik байт-кодына аударылады және сақталады .dex (Dalvik орындалатын) және .odex (Оңтайландырылған Dalvik орындалатын) файлдар; байланысты терминдер одекс және де-одекс байт-кодтың түрлендірулерімен байланысты. Dalvik Executable ықшам форматы шектеулі жүйелерге арналған жады және процессор жылдамдық.

Дальвиктің мұрагері болып табылады Android жұмыс уақыты (ART), ол бірдей байт-кодты және .dex файлдарын қолданады (бірақ .odex файлдарын емес), тізбектелген өнімділікті жақсартуға бағытталған, соңғы пайдаланушылар. Жаңа жұмыс ортасы алғаш рет Android 4.4 «KitKat» жүйесіне а технологияны алдын-ала қарау,[4][5] және Dalvik-ті кейінгі нұсқаларында толығымен ауыстырды; Android 5.0 «Lollipop» - бұл ART жалғыз жұмыс уақыты кіретін бірінші нұсқа.

Сәулет

Дальвик пен салыстыру ӨНЕР сәулет

Айырмашылығы жоқ Java виртуалды машиналары, олар стек машиналары, Dalvik VM а. қолданады тіркеуге негізделген архитектура бұл виртуалды машинаның азырақ, әдетте күрделірек нұсқауларын қажет етеді. Dalvik бағдарламалары Java-да Android көмегімен жазылады қолданбалы бағдарламалау интерфейсі (API), Java байт-кодымен жинақталған және қажет болған жағдайда Dalvik нұсқауларына ауыстырылған.

Деп аталатын құрал dx Java-ны түрлендіру үшін қолданылады .класс файлдарды .dex форматына жібереді. Бірнеше сыныптар бір .dex файлына енгізілген. Көшірме жіптер және бірнеше кластық файлдарда қолданылатын басқа тұрақтылар кеңістікті сақтау үшін .dex шығарылымына бір рет қана қосылады. Java байт коды сонымен қатар баламаға айналады нұсқаулар жинағы Дальвик В.М. қолданған. Қысылмаған .dex файлы өлшемі a-ға қарағанда бірнеше пайызға кіші сығылған Java мұрағаты (JAR) бірдей .class файлдарынан алынған.[6]

Дальвиктің орындалатын файлдары мобильді құрылғыға орнатылған кезде қайтадан өзгертілуі мүмкін. Әрі қарай жету үшін оңтайландыру, байт реті қарапайым мәліметтермен ауыстырылуы мүмкін мәліметтер құрылымы және функциясы кітапханалар мүмкін байланысты кезекте, және бос сынып нысандары қысқа тұйықталуы мүмкін, мысалы.

Далвиктің жадының төмен деңгейіне байланысты оңтайландырылған, оны басқа стандартты ВМ-лерден ерекшелендіретін кейбір ерекшеліктері бар:[7]

  • Аз орын пайдалану үшін VM жіңішкертілді.
  • The тұрақты бассейн тек пайдалану үшін өзгертілген 32 бит жеңілдету үшін индекстер аудармашы.
  • Стандартты Java байт коды орындайды 8 бит стек нұсқаулары. Жергілікті айнымалылар операнд стегіне немесе одан бөлек нұсқаулар арқылы көшірілуі керек. Оның орнына Дальвик өздікін қолданады 16 бит тікелей жергілікті айнымалыларда жұмыс істейтін нұсқаулар жиынтығы. Жергілікті айнымалыны әдетте a таңдайды 4 бит «виртуалды тіркелу» өрісі. Бұл Дальвиктің нұсқауын азайтады және оның аудармашының жылдамдығын арттырады.

Google-ге сәйкес, Dalvik дизайны құрылғыға VM бірнеше даналарын тиімді басқаруға мүмкіндік береді.[8]

Android 2.2 «Froyo» әкелді ізге негізделген дәлме-дәл (JIT) жинақ қосымшалардың орындалуын үнемі оңтайландыратын Дальвикке профильдеу қосымшалар әр іске қосылған сайын және динамикалық түрде құрастыру олардың байт-кодының қысқа сегменттері жергілікті болып орындалады машина коды. Дальвик түсіндіреді қосымшаның қалған байт-коды, «іздер» деп аталатын байтекодтың қысқа сегменттерінің жергілікті орындалуы өнімділіктің айтарлықтай жақсаруын қамтамасыз етеді.[9][10][11]

Өнімділік

Дальвикпен жұмыс жасайтын телефон

Салыстырмалы артықшылығы стек машиналары қарсы тіркелу -білімге негізделген тәсілдер үздіксіз пікірталастың тақырыбы болып табылады.[12]

Әдетте стекке негізделген машиналар қолданылуы керек нұсқаулық деректерді стекке жүктеу және сол деректермен жұмыс жасау, және сол үшін енгізу машиналарына қарағанда көбірек нұсқаулар қажет жоғары деңгейлі код, бірақ регистр машинасындағы нұсқаулар бастапқы және тағайындалған регистрлерді кодтауы керек, сондықтан үлкенірек болуы керек. Бұл айырмашылық VM аудармашылар үшін маңызды, ол үшін опкод диспетчер басқа факторлармен бірге қымбатқа түседі дәл қазір жинау.

Тесттер орындалды ARMv7 2010 жылға арналған құрылғылар Oracle (Java технологиясының иесі) стандартты графикалық емес Java эталондарымен көрсетті HotSpot VM of Java SE ендірілген қарағанда 2-3 есе жылдам болуы керек JIT - негізделген Dalvik VM Android 2.2 (JIT компиляторын қамтыған алғашқы Android шығарылымы).[13] 2012 жылы академиялық эталондар 3 коэффициентін растады HotSpot және Dalvik сол Android тақтасында, сонымен қатар Dalvik коды Hotspot-тан кем емес екенін атап өтті.[14]

Сонымен қатар, 2014 жылғы наурыздағы жағдай бойынша, Android құрылғысында орындалған критерийлер жергілікті қолданбалар мен сол Android құрылғысындағы Dalvik қосымшасы арасында әлі де 100 факторды көрсетеді.[15][өзіндік зерттеу? ][дұрыс емес синтез? ] 2009 ж. Ерте аудармашысының көмегімен эталондар бойынша жұмыс істегенде Java жергілікті интерфейсі (JNI) және жергілікті код жылдамдықтың жылдамдығын көрсетті.[16]

Лицензиялау және патенттер

Dalvik. Шарттарына сәйкес шығарылады Apache лицензиясы 2.0.[17] Кейбіреулер Дальвикті а таза бөлме стандартты Java жұмыс уақытының үстіндегі дамудан гөрі іске асыру, бұл оның авторлық құқыққа негізделген лицензиялық шектеулерді стандартты басылымнан немесе ашық көзден шыққан Java жұмыс уақыттарынан мұраға қалдырмайтындығын білдіреді.[18]Oracle және кейбір рецензенттер бұған қарсы.[19]

2010 жылдың 12 тамызында, Oracle сатып алынған Sun Microsystems 2009 жылдың сәуірінде және сондықтан Java-ға құқықтары бар, авторлық құқықтар мен патенттерді бұзды деп Google-ды сотқа берді. Oracle Google Android-ті дамыта отырып, Oracle-дің Java-ға қатысты зияткерлік меншігін біле тұра, бірнеше рет бұзды деп мәлімдеді.[20][21][22] 2012 жылдың мамырында бұл істі алқабилер Google компаниясы Oracle патенттерін бұзбаған деп тапты және сот судьясы Google қолданған Java API құрылымы авторлық құқыққа ие емес деп шешті.[23][24] Тараптар нөлдік долларға келісті заңды шығындар көшірілген кодтың 9 жолына арналған.[25][26]

Сондай-ақ қараңыз

Пайдаланылған әдебиеттер

  1. ^ «ART қоқысты жинауды жөндеу». Алынған 6 қазан 2015. Dalvik жұмыс уақыты бұдан былай сақталмайды немесе қол жетімді емес [қазіргі Android нұсқаларында] және оның байт-кодтық форматы қазір ART-де қолданылады.
  2. ^ Журналға жазба атаудың көзіне сілтеме жасау
  3. ^ «Google Calling: Android ішінде, gPhone SDK». onlamp.com. Алынған 2008-02-05.
  4. ^ Шон Бакли (2013-11-06). "'Android KitKat-тағы ART эксперименті батареяның қызмет ету мерзімін жақсартады және қолданбаларды жылдамдатады «. Энгаджет. Алынған 2014-07-05.
  5. ^ Даниэль П. (2013-11-07). «Android KitKat-тағы эксперименталды Google ART жұмыс уақыты қосымшаны екі есе жылдам орындауға мүмкіндік береді». phonearena.com. Алынған 2014-07-05.
  6. ^ Борнштейн, Дэн (2008-05-29). «Dalvik VM Internals презентациясы» (PDF). б. 22. Алынған 2010-08-16.
  7. ^ Роуз, Джон (2008-05-31). «Google I / O жүйесінде Android және Dalvik-пен». Архивтелген түпнұсқа 2008-06-04. Алынған 2008-06-08.
  8. ^ Google (2009-04-13). «Android деген не?». Алынған 2009-04-19.
  9. ^ Бен Ченг; Билл Базби (мамыр 2010). «Android-ке арналған JIT компиляторы Dalvik VM» (PDF). android-app-developer.co.uk. 5-14 бет. Архивтелген түпнұсқа (PDF) 2015-11-06. Алынған 18 наурыз, 2015.
  10. ^ Фил Никкинсон (26 мамыр 2010). «Google Android әзірлеушісі Dalvik және Froyo-дағы JIT туралы көбірек түсіндіреді». androidcentral.com. Алынған 8 шілде, 2014.
  11. ^ «Nexus One Android 2.2 Froyo жұмыс істейді. Оны 2.1-мен салыстыру қаншалықты жылдам? О, бар болғаны 450% жылдам». 2010-05-13. Алынған 2010-05-21.
  12. ^ Ши, Юнхэ; Грегг, Дэвид; Битти, Эндрю; Эртл, М.Антон (2005-06-11). «Виртуалды машинаны көрсету: тізілімдерге қарсы стек» (PDF). Алынған 2009-12-22.
  13. ^ Вандетт, Боб (2010-11-22). «Java SE Embedded Performance Versus Android 2.2». Oracle корпорациясы. Архивтелген түпнұсқа 2011-06-28. Алынған 2011-09-04. Нәтижелер көрсеткендей, Androids-тің жаңа JIT-і оның тек аудармашысының орындалуымен жақсарғанымен, Android біздің Hotspot-пен жұмыс жасайтын Java SE Embedded-тен әлі де артта қалып отыр. Жоғарыда келтірілген нәтижелерден көріп отырғаныңыздай, Java SE Embedded Java байт кодтарын Android 2.2-ге қарағанда 2-ден 3 есе жылдам орындай алады.
  14. ^ Хён-Сок Ох; Беом-Джун Ким; Хён-Кю Чой; Су-Мук Мун (2012). Нақты уақыттағы және ендірілген жүйелерге арналған Java технологиялары бойынша 10-шы Халықаралық семинардың материалдары - JTRES '12. Есептеу техникасы қауымдастығы. б. 115. дои:10.1145/2388936.2388956. ISBN  9781450316880. JITC режимінде Даквик HotSpot-қа қарағанда 2,9 есеге баяу жұмыс істейді және оның кодтың мөлшері HotSpot-тан кіші емес, өйткені оның сапасы нашар және код тізбегі.
  15. ^ «AndEBench үздік ұпайлары». www.eembc.org. Алынған 2014-03-23.
  16. ^ Батюк, Леонид; Шмидт, Обри-Деррик; Шмидт, Ханс-Гюнтер; Кәмтепе, Ахмет; Албайрак, Сахин (2009-04-29). Android жүйесінде жергілікті Linux қосымшаларын әзірлеу және салыстыру. Компьютерлік ғылымдар, әлеуметтік информатика және телекоммуникация техникасы институтының дәрістері. 7. 381-392 бет. дои:10.1007/978-3-642-01802-2_28. ISBN  978-3-642-01801-5. S2CID  12131309. Нәтижелер көрсеткендей, жергілікті C қосымшалары Dalvik VM-де жұмыс жасайтын бірдей алгоритмден 30 есе жылдам болуы мүмкін. Java қосымшалары JNI қолданған кезде 10 есеге дейін жылдамдатуы мүмкін.
  17. ^ «Дереккөзді жүктеу - Android ашық көзі». Android.git.kernel.org. Архивтелген түпнұсқа 2009-04-17. Алынған 2012-06-07.
  18. ^ https://www.wired.com/2012/04/google-oracle-experts
  19. ^ Эд Ботт (8 қыркүйек, 2011 жыл). «Java және Android-тің нақты тарихы, Google айтқан». ZDNet. Алынған 2011-11-27. «Таза бөлме» бағдарламасының анықтамасы кодты жазатын инженерлердің түпнұсқаға, авторлық құқықпен қорғалған материалға, оның ішінде кодқа, сипаттамаларға және басқа құжаттамаға тікелей әсер етпейтіндігінде. Бұл Google үшін проблема, мен кешегі жазбада атап өткенімдей, өйткені жобада жұмыс жасайтын инженерлердің авторлық құқықпен қорғалған материалға тікелей қол жеткізе алатындығы туралы айтарлықтай дәлелдер бар.
  20. ^ «Oracle Google-ді Java-дан Android құрылғыларында сотқа береді». digitaltrends.com. 2010-08-13. Алынған 2011-08-08.
  21. ^ Джеймс Никколай (2010-08-12). «Oracle Google-ді Java-да Android-да қолдану үшін сотқа береді». Computerworld. Алынған 2010-08-13.
  22. ^ Марк Хахман (2010-08-13). «Oracle Google-ді Android-дің Java-да қолдануын талап етеді». PC журналы. Зифф Дэвис.
  23. ^ Джош Лоенсон (23 мамыр, 2012). «Қазылар алқасы Google-ді Oracle патентін бұзудан тазартады». ZDNet. Алынған 2012-05-25.
  24. ^ Джо Муллин (31 мамыр 2012). «Google маңызды API шешімін жеңіп алды, Oracle ісі шешілді». Ars Technica. Алынған 2012-06-01.
  25. ^ Никколай, Джеймс (20.06.2012). «Oracle Google сот ісіндегі зиянның» нөлдік «болуына келіседі, көз шағымданады». Алынған 2012-06-23.
  26. ^ Адам Оутлер (16 мамыр 2012). «Google Trial-қа қарсы Oracle нұсқасын жаңарту». Алынған 2013-01-18. Oracle талаптарының негізгі бөлігі Java.Util.Arrays.rangeCheck () ішіндегі 9 жолдық кодқа негізделген. Қарастырылып отырған код: ...

Сыртқы сілтемелер