Далвик је дисконтинуирани процес виртуалне машине (ВМ) који се користи у Гугл-овом Андроид оперативном систему. Он је интегрални део Адроидовог софтверског сета којег користи Андроид 4.4 "КитКет" и његови претходници, ово користе мобилни телефони, таблети, и све чешће, смарт телевизори и преносни рачунари. Далвик је софтвер отвореног типа кодирања, оригинал је написао Дан Борстеин, који га је назвао по рибарском селу Далвик у Eyjafjörður на Исланду.Journal entry referencing the source of the name

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Види још Развој Андроид софтвера  Андроид виртуализација Поређење Аапликацијских виртуализованих софтвера Поређење Јаве и Андроида АПИ ЈЕБ преводилац – Далвик (ДЕКС и АПК) преводилац Далвик Турбо виртуелна машина – власничка алтернативна Далвик имплементацббија 

Референце

Спољашње везе Dalvik bytecode – official Android documentation of the instruction set Dex Executable format – official Android documentation , Google I/O 2010, by Ben Cheng and Bill Buzbee Dalvik VM Internals , Google I/O 2008, by Dan Bornstein The $800 Million Dollar Question: What’s the Difference Between Trademark and Copyright?

Категорија:Андроид (оперативни систем)