Реклама
Јава виртуелна машина (ЈВМ) је стварна капаљка за име када програмирате у Јави. Супротно ономе што име говори, Јава Виртуал Мацхине се може наћи и у односу на остале програмске језике.
Уопште, није неопходно знати шта је Јава виртуелна машина, или чак шта она ради, да бисте могли да програмирате у Јави. Са друге стране, упознавање са унутрашњим радом машине помаже да се повећа ваше разумевање и општи увид.
Овај чланак говори о идеји Јава виртуелне машине, шта то чини за вас и неким од најважнијих предности и недостатака. Иако сам покушао да буде једноставно, и дефинитивно је напреднија литература на ту тему, очекује се рудиментарно разумевање Јаве и програмирања.
Језици на високом нивоу
Семантика програмског језика дизајнирана је тако да буде блиска нашем природном језику, а истовремено је сажета и лака за тумачење машине. Као што вероватно знате, програмски језик се у потпуности разликује од машинског кода, скупа упутстава које рачунар користи за прављење и покретање програма. Ово ми зовемо језици на високом нивоу; један или више нивоа апстракције од машинског кода.
Пре него што је у стању да се покрене, код високог нивоа прво мора бити протумачен. Много програмских сучеља се компајлира унапријед (АОТ компилација) за одређену платформу. То чини програм ефикаснијим током извођења, али далеко мање компатибилан са различитим платформама. Јава, насупрот томе, ради са средњим језиком који се зове Јава бајт код и тхе Јава Виртуал Мацхине.
ЈВМ и Јава бајт код
Када се ваш Јава пројекат изгради, преводи изворни код (садржан у *.јава изворне датотеке) на Јава бајт код (који се најчешће налази у * .цласс датотекама). Ово ће вам код високог нивоа бити корак ближе машинском коду, али још увек не тамо. Овај бајт код је збирка компактних упутстава; лакше за машину за тумачење, али мање за читање.
Када покренете Јава апликацију на рачунару, мобилном телефону или било којој другој платформи која подржава Јава, у суштини просљеђујете овај Јава бајт код на Јава Виртуал Мацхине. Тумач у Јава виртуелној машини обично почиње сабирање читавог бајт кода током извођења, следећи принципе тзв. правовремена компилација. То чини типично, иако често незнатно одлагање приликом отварања Јава апликације, али генерално побољшава перформансе програма у поређењу са интерпретирана компилација.
Главна предност овог система је повећана компатибилност. Будући да се ваше апликације покрећу у виртуелној машини уместо директно на вашем хардверу, програмер може да програмира и једном састави њихову апликацију, која се затим може извршити на сваком уређају помоћу имплементације Јава Виртуал-а Машина. Овај принцип је родио Јава слоган:Пиши једном, трчи свуда.”
Про: Компатибилност и повећана сигурност
Осим компатибилности кода, Јава Виртуал Мацхине нуди и друге погодности. Једна од најважнијих од њих је релативна сигурност Јава програма као резултат Јава виртуелне машине. Безбедност, што значи да програм који се покреће на виртуелној машини има много мању вероватноћу да ће покварити оперативни систем корисника или оштетити датотеке података ако дође до грешака.
Цон: Различите ЈВМ имплементације и уклањање погрешака
Једна од главних критика изражена против компатибилности кода и Јава виртуелне машине је због много различитих имплементација овог потоњег. Видите, Јава Виртуал Мацхине није део софтвера. Орацле, власници Јаве, имплементирају Јава виртуелну машину, али други људи могу је поднети ако задовољава различите практичне и уговорне тврдње.
Ове различите имплементације значе да ваш код може несметано да се покреће на једној Јава виртуелној машини, али се руши и спали на другој. Иако у пракси можете једанпут да напишете код и покренете га свуда, понекад и сложенији код и даље мора да буде уклоњен грешком у различитим имплементацијама Јава Виртуал Мацхине-а како би се осигурао исправан рад.
Имате ли искуства са радом са Јава виртуелном машином? Ако је тако, да ли бих овде пропустила нешто што би требало споменути?
Кредитна слика: Мицхаелав, Дцоетзее
Ја сам писац и студент рачунарских наука из Белгије. Увек ми можете учинити услугу помоћу добре идеје за чланак, препоруку књиге или идеју за рецепт.