From Wikipedia, the free encyclopedia
Јава виртуелна машина (ЈВМ) је апстрактна рачунарска машина која омогућава рачунање рачунару за покретање Јава програма. Постоје три представе о ЈВМ: спецификација, имплементација и инстанца. Спецификација је документ који формално описује шта је потребно од имплементације ЈВМ. Имајући једну спецификацију обезбеђено је да су све имплементације интероперабилне. Имплементација ЈВМ је компјутерски програм који задовољава захтеве ЈВМ спецификације. Инстанца ЈВМ је имплементација рада у процесу који извршава компјутерски програм преведен у Јава бајт кодове.
Ораклеј корпорација, која је власник заштитног знака Јава, дистрибуира Јава виртуелну машину за имплементацију ХотСпота заједно са имплементацијом класе Јава библиотеке под називом Јава Рантајм Енвиронмент (ЈРЕ).
Јава виртуелна машина је апстрактни (виртуелни) рачунар који се дефинише спецификацијом. Спецификација изоставља детаље имплементације који нису неопходни за обезбеђивање интероперабилности. На пример, распоред меморије на подручјима података Ран-тајм, алгоритам користи ђубретар-колекцију, и интерна оптимизација виртуелне машине инструкцијама Јаве (њихово превођење у машински код). Главни разлог овог пропуста је да није непотребно ограничавати имплементаторе. Свака Јава апликација се може покренути само унутар неке конкретне примене апстрактне спецификације Јава виртуелне машине.[1]
Почевши од Јава платформе, стандардног издања (Ј2СЕ) 5.0, промене у спецификацији ЈВМ су развијени у процесу Јава заједнице као ЈСР 924.[2]Од 2006. године, промене у спецификацији подржане предложеним изменама у формату класа датотеке (ЈСР 202)[3] се врше као одржавање ослобађања ЈСР 924. Спецификација ЈВМ је објављена као плава књига,[4] Предговор стања:
Један од Ораклеј ЈВМ се зове ХотСпот, с друге стране, је наслеђен од БЕА система је ЈРокит. Чишћење собе Јава имплементације укључује Кафе и IBM Ј9. Ораклеј поседује заштитни знак Јаве, а може и дозволити њено коришћење да потврди имплементацију делова као потпуно компатибилних са Ораклеј спецификацијом .
Једна од организационих заједница ЈВМ бајткодова је класа. Имплементација платформе класе мора да препозна и учита све што је у складу са форматом Јава класе датотеке. Било која имплементација је слободна да препозна друге бинарне облике, поред класе фајлова, али мора да препозна класни фајл.
Класа платформе обавља три основне строге радње :
У принципу, постоје две врсте класа пуњења: бутстреп класа пуњења и корисничке дефинисане класе пуњења.
Сваки имплементација Јава виртуелне машине мора имати класе пуњења бутстрепова, способних за утовар вероване класе. Спецификација Јава виртуелна машина не прецизира колико платформи класа треба лоцирати класе.
ЈВМ има инструкције за следеће групе задатака:
Циљ је бинарна компатибилност. Сваки посебни домаћин оперативног система треба да има властито спровођење ЈВМ и рантиме. Ове ЈВМ тумаче бајт кодове семантички на исти начин, али стварна реализација може бити другачија. Сложенији се угледају бајт кодове се компатибилношћу и ефикасно спроводе Јава језгро АПИ који се мора мапирати сваки главни оперативни систем.
ЈВМ језик је било који језик са функционалношћу која се може изразити у смислу важећег фајла класе који може бити домаћин Јава виртуелној машини. Класа датотека садржи Јава виртуелна машина и упутства (или бајт кодове) и табелу симбола, као и остале пратеће информације. Формат класе фајл је опремљености и оперативни систем независан бинарног формата користи се за представљање састављања класе и интерфејса.[5] Java 7 ЈВМ имплементира ЈСР 292: подржањем динамичног типа језика [6] на Јава платформи, нова функција која подржава динамички откуцан језик у ЈВМ. Ова функција је развијена у оквиру пројекта Да Винчијеве машине чија је мисија да продужи ЈВМ тако да она подржава и друге језике осим Јава.[7][8]
Основна филозофија Јаве је да је инхерентно обезбеди становишта да ниједан корисник програма не може да сруши домаћин машину или на други начин неадекватно омета са другим операцијама на домаћин машинама, и да је могуће да заштити одређене методе и структуре података који припадају коду поверења из приступа или корупције од стране непознатог кода који се извршава у истој ЈВМ. Поред тога, заједничке програмерске грешке које су често довели до корупције података или непредвидивих понашања, као што је приступ ван крај низа или коришћење неиницијализованог показивача није дозвољено да се деси. Неколико карактеристика Јава комбинују да обезбеди ову сигурност, укључујући класе модела, гомиле ђубрета-прикупљени и верификатора.
ЈВМ верификује све бајткодове пре него што је уништен. Ова верификација се састоји углавном из три врсте провера:
Прве два од ових провера се одвијају првенствено током корака верификације који се јавља када се класа учита и створи право коришћења. Трећи се пре свега обавља динамички, када се створе податаци или методе класе прво приступи другим класама.
Верификатор дозвољава само неке секвенце бајткодова у важећим програмима, нпр скок (грана) упутство може циљати инструкцију у исту методу. Осим тога, верификатор осигурава да свако дато упутство ради на фиксној локацији складиштења,[9] омогућавајући ЈИТ преводиоцу трансформацију складиштења приступа у регистру основних приступа. Због тога, ЈВМ је гомила архитектура и не подразумева брзину казну за опонашање на архитектури регистра заснованог када се користи ЈИТ преводилац. У бази провереног кода ЈВМ архитектуре, нема разлике у ЈИТ преводиоцу да ли добија по имену имагинарне регистре или имагинарне позиције складиштења које морају бити распоређене на регистрима циљне екипе архитектуре. У ствари, код верификације чини ЈВМ и разликује га од класичних складиштења архитектура, од којих је ефикасна емулација са ЈИТ преводиоцем компликованија и обично обавља спорије превод.
Оригинална спецификација верификатора бајт кода користи природни језик који је непотпун или нетачан у неким аспектима. Један број покушаја је учињен да се одреди ЈВМ као формални систем. На овај начин, сигурност тренутних имплементација ЈВМ може детаљније да се анализира, а потенцијални безбедносни подвизи су спречени. Такође могуће да се оптимизира ЈВМ прескачући непотребне безбедносне провере, ако је доказано да је апликација безбедна .[10]
Виртуелне машине архитектуре омогућававају веома фину контролу над акцијама које код у машини је дозвољен. Ово је дизајнирно да омогући безбедно извршавање кода непоузданих удаљених извора, модел који користе Јава програмчићи. Програмчићи покренути у року ВМ искорпорирани у бровсеру корисника, извршавају преузети кода са удаљеног ХТТП сервера. Даљински код ради у ограниченом кутијом са песком, која је дизајнирна да заштити корисника од злих или злонамерних кодова. Издавачи могу купити потврду за дигитално потписивање програмчића, дајући им дозволу да затражи од корисника да се пробије из кутије с песком и приступи локалним системима датотека, остави, и изврши спољашње делове софтвера или мреже.
За сваку архитектуру хардвера је потребан другачији Јава бајт код интерпретатор. Када рачунар има Јава бајт код преводиоца, може покренути било који Јава бајт код програм, а исти програм се може покренути на било ком рачунару који има таквог преводиоца.
Јава бајт код треба да буде независна и безбедна платформа.[11] Неке имплементације ЈВМ не укључују преводиоца, али се састоје из само истовремених тумача.[12]
Од раних фазама процеса пројектовања Јаве (и ЈВМ) она је продавана као веб технологије за креирање богатих интернет апликација.
На страни клијента, веб претраживачи могу бити продужени са НПАПИ Јава утикачима које извршава тзв. Јава програмчић у ХТМЛ. Програмчићу је дозвољено да увуче правоугаони крај на страницу додељену њему и користити ограничен скуп АПИ-ја који омогућавају на пример приступ микрофон корисника или 3Д убрзање. Јава програмчићи су супериорнији у односу на ЈаваСкрипт како у перформансима од 2011. године, када су знатно брже направљени ЈаваСкрипт мотори у претраживачима и ХТМЛ 5 пакет веб технологија почела са унапређивањем ЈаваСкрипт са новим АПИ. Јава програмчићи нису у могућности да измене страну изван његових правоугаоних крајева што није тачно о ЈаваСкрипт Адоб Флеш Плејер, главни такмичар технологије, ради на исти начин у том погледу. Јава програмчићи нису ограничени за Јава и уопште могу бити креирани у било ком ЈВМ језику.
У јуну 2015, према В3Технологији, употреба Јава програмчића је пала на 0,1% свих веб сајтова. Флеш је пао на 10,8% и Силверлајт на 0,1% веб сајтова.[13]
ЈВМ имплементација у ЈаваСцрипт не постоје, али су углавном ограничени на хоби пројекте неподесне за распоређивање производње или развојних алата да се избегне сваки пут када инвеститор жели да прегледате направљене промене.
Са континуираним побољшањима у брзини ЈаваСкрипт извршења, у комбинацији са повећаном употребом мобилних уређаја чији веб претраживачи не спроводе подршку за додатке, постоје напори који циљају на оне кориснике кроз компилацију за ЈаваСкрипт. Могуће је било и саставити изворни код или ЈВМ бајт код на ЈаваСкрипту. Израда ЈВМ бајт кодва који су универзални за ЈВМ језика омогућава изградњу на постојећим бајт кодовима преводилац.
Главни ЈБМ бајт код ЈаваСкрипт преводиоца јеТеаВм,[14] преводилац садржан у Драгом веб СДК[15] Бцк2Брвср,[16] и ј2јс-преводилац.[17]
Водећи преводиоци ЈВМ језика у ЈаваСкрипту укључују да ЈаваСкрипт преводилац буде садржан у Гугл веб тулкитут, Clojure скрипти (Clojure), ГруСкрипти (Груви), Скала.јс (Скала) и други.[18]
Јава рантајм енвиронмент (ЈРЕ) је објавила Ораклеј дистрибуција софтвера која садржи самосталан Јава ВМ (Хотспот), бровсер плугин, стандардне Јава библиотеке и алатку за конфигурацију. То је најчешћи Јава окружење инсталирано на виндоус рачунарима. То је слободно доступно за преузимање на сајту јава.цом.
Спецификација ЈВМ даје много простора имплементаторима у вези детаља имплементације. Од Јава 1.3, ЈРЕ до Ораклеја садржи ЈВМ под називом ХотСпот. Он је дизајниран да буде ЈВМ високих перформанси.
За убрзано извршавање кода, ХотСпот се ослања на истовремену компилацију. Да би се убрзала алокацију објекта и одвоз смећа, ХотСпот користи генерацијске гомиле.
Гомила виртуелна Јава машине је подручје меморије коју користи ЈВМ за управљање меморијом.[19]
У ХотСпот гомиле су подељене на генерације:
Стална генерација (или пермген) је коришћена за дефиниције класе и повезивала метаподатке пре Јаве 8. Стална генерација није био део гомиле.[20][21] Стална генерација је уклоњена из Јаве 8.[22]
Првобитно је била стална генерација, а предмети и клаце су заједно чувани у истој области. Али, како се класа истовара јавља много ређе него што су предмети сакупљени, креће класа структура у одређеној области дозвољеној за значајна побољшања перформанса.[20]
Ораклејев ЈРЕ је инсталиран на великом броју рачунара. Пошто сваку веб страницу корисник може покренути страницу Јава програмчића. Јава обезбеђује лако доступан напад на површину злонамерним сајтовима које корисник посећује. Касперски Лабс наводи да је Јава веб бровсер плугин метода избора компјутерских криминалаца. Јава подвизи су укључени у многим користима пакета које хакери распоређују на хакованим сајтовима.[23]
У прошлости, последњи корисници су често користили застарелу верзију ЈРЕ која је рањива на многим познатим нападима. То је довело до широког заједничког уверења међу корисницима да је Јава инхерентно несигурна.[24] Од Јава 1.7, Ораклеј ЈРЕ за виндоус укључује аутоматску функционалност ажурирања.
Почев од 2005. године, Сан (сада Ораклеј) ЈРЕ укључења се не односе на подразумевано инсталиране софтвер. У почетку је то било Гугл тулбар, касније МСН тулбар, Јаху тулбар и на крају Аск тулбар. АСК Тулбар показује да је посебно контроверзан. Било је и петицију тражених Ораклеја да га уклоне. Потписници су изразили своје уверење да Ораклеј "крши поверење стотине милиона корисника који воде Јаву на својим машинама. Они су искаљали углед некада поносној платформи.".[25] Зднет назива њихово понашање варљивим, јер је инсталатер наставио да нуди алатке током сваког ажурирања, чак и након што је корисник претходно одбио да га инсталира, повећавајући шансе на траци са алаткама да се инсталира када би корисник био превише заузет или растројен.[26]
У јуну 2015, Ораклеј је објавио да је завршио своје партнерство са Аск.цом у корист са Јахуом!, где ће корисници бити, и затражио је да промени своју почетну страну и ставе као подразумевани претраживач Јаху. [27]
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.