Ո՞րն է տարբերությունը JVM- ի և Java- ի ժամանակին կազմողի միջև:


պատասխանել 1:

JVM («Java վիրտուալ մեքենա») երկու իմաստ ունի.

  1. Այն Java ծրագրերը կատարելու հրահանգների վերացական շարք է: Այս հրահանգների հավաքածուն սահմանում է համեմատաբար պարզ հրմշտոցային սարք, որի վրա կազմվում են Java աղբյուրի ծրագրերը: Այս հրահանգները պահվում են «. Դաս» ֆայլերում: Դա ծրագիր է, որն աշխատում է իրական համակարգչի վրա և այնուհետև կարող է կատարել աբստրակտ JVM հրահանգները: Նման JVM- ն պարունակում է «թարգմանիչ» ՝ JVM անհատական ​​ցուցումների համար, այլև բոլոր օժանդակ մեքենաներ, որոնք պահանջվում են աջակցելու Java ծածկագրի կատարմանը, ներառյալ թվաբանությունը, գործառույթի զանգերը, հիշողության բաշխումը, հիշողության մաքրումը, թելերի պլանավորումը, դասի ֆայլերի բեռնիչը, ֆայլը E / A և տեղական օպերացիոն համակարգի այլ մուտք, ինչպես անհրաժեշտ է, բարդ Java ծրագրեր գործադրելու համար:

Հին JVM- ները բառացիորեն մեկնաբանում էին JVM- ի հայտարարությունները անհատական ​​ժամանակով: Սա հեշտ է իրականացնել, ինչի պատճառով էլ արվել է: Բայց ինչպես ցանկացած թարգմանչի, այսպիսի գործողության ժամանակ մեկնաբանումը հանգեցնում է ծրագրի կատարման ժամանակների, որոնք սովորաբար ավելի մեծ չափի կարգ են դնում, քան հայրենի կազմած մեքենայի ծածկագիրը:

«JIT կազմող» («JITter») ժամանակակից JVM- ների առավելագույն գործառույթն է, որը JVM հրահանգների բլոկները կազմում է հայրենի մեքենայի կոդով, երբ JVM ծածկագրի նոր բլոկները կամ նախկինում հանդիպած կտորները պատահում են կատարման ընթացքում: Կարող եք օգտագործել օֆլայն Java- ը բնօրինակ կոդերի կազմիչից (իրականում գոյություն ունեն մի քանիսը) `խմբաքանակի ավանդական հավաքածու նպատակներն ապահովելու համար, բայց այդպես չի գործում Java աշխարհը:

JITters- ը առավելություն ունի խմբաքանակի կազմողների նկատմամբ. Դուք կարող եք կազմել կոդ, որը համապատասխանում է այն, ինչ տեղի է ունենում ժամանակի ընթացքում, դրանով իսկ օպտիմալացնելով Java ծածկագրի դինամիկ հատկությունները, օրինակ. B. դինամիկ առաքում, որը տեղի է ունենում գերբեռնված Java մեթոդի զանգերի հետ: Դրանք ունեն մեկ թերություն. Նրանք ծրագիրը մեծ մասշտաբով չեն տեսնում և, ընդհանուր առմամբ, չեն կարող անել այն, ինչին լավ են խմբաքանակային կազմողները. Գլոբալ օպտիմիզացում: Գործնականում փոխզիջումը նշանակում է, որ Java ծրագրերը, որոնք JIT կազմված են, բավականին լավ են ընթանում, բայց ոչ այնքան արագ, որքան C կամ C ++ ծրագրերը, որոնք կազմվում են ավանդական մեթոդներով:


պատասխանել 2:

Արդեն իսկ ժամանակին կազմողը կամ JIT- ը աղբահանության հետ միասին Java վիրտուալ մեքենայի բաղկացուցիչ մասն են: Ինչպես անունն է հուշում, տեղի է ունենում արդար ժամանակի կազմումը: Այն ի վիճակի է Java- ի կոդը ուղղակիորեն համակարգչային լեզվով կազմել, ինչը կարող է էապես բարելավել Java հավելվածի կատարումը:

Ի դեպ, չկա որևէ երաշխիք, թե որ ծածկագիրը կկազմվի և երբ: JIT- ը սովորաբար ներդնում է թեժ ծածկագիրը hotspot JVM- ում, հենց որ դրա կատարումը գերազանցի որոշակի սահմանը, օրինակ. Օրինակ, մեթոդը վերածվում է մեքենայական լեզվին, եթե այն կոչվում է ավելի քան 10,000 անգամ և այլն:

Ահա Java ծրագրավորման հարթակում JVM- ի և JIT- ի ևս մի քանի տարբերություններ.

1) JVM- ի և JIT- ի հիմնական տարբերությունն այն է, որ JVM- ի հիմնական նպատակն է ապահովել պլատֆորմի անկախությունը, մինչդեռ JIT- ի նպատակն է բարելավել JVM- ի կատարումը `կազմելով ավելի շատ մեքենայական կոդ: Հիշեք, որ այս կազմումը նույնպես ժամանակ է պահանջում, այնպես որ չարժե ամբողջ ծածկագրերը բնօրինակ կոդով թարգմանել: Դրա պատճառով JIT– ը սովորաբար օգտագործում է օգտագործված ծածկագիրը հայրենի կոդով:

2) JIT- ի և JVM- ի մեկ այլ տարբերությունն այն է, որ JIT- ը JVM- ի մաս է: JIT- ի օրինակ է Oracle- ի թեժ կետը JIT, որը գալիս է Hotspot JVM- ի հետ: Այն կոչվում է թեժ կետ, քանի որ դրա պարզապես ժամանակին կազմողը միայն տաք կոդն է կազմում իր մայրենի լեզվով ՝ կոդ, որը վարում է ժամանակի 90% -ը:

Կա շեմի կարգավորում: Եթե ​​ծածկագիրն իրականացնում է այս շեմից ավելին, ապա այն կարող է կազմվել հենց ժամանակին: Ի դեպ, թեժ կետը միակ JVM- ն չէ, որը պարունակում է պարզապես ժամանակին կազմողներ: Կան այլ JVM, օրինակ. B. բնօրինակը JRockit JVM- ը Oracle- ից:

3) JVM- ը վերջապես ավելի հին գաղափար է, քան JIT- ը: JIT- ը իրականում հորինվել է JVM- ի կատարողականը բարելավելու համար Java առաջին թողարկման տարիներ անց, մինչդեռ Java վիրտուալ մեքենան Java- ի առաջին տարբերակի մի մասն էր:

Ամեն ինչ կախված է Java- ում JVM- ի և JIT- ի տարբերությունից: Ինչպես ավելի վաղ նշվեց, JIT- ը JVM- ի մի մասն է և օգտագործվում է JVM- ի կատարողականը բարելավելու համար `գործադրման ժամանակ դինամիկ կերպով կազմելով Java բայթային կոդերը կամ դրանք թարգմանելով մայրենի մեքենայական կոդով:


պատասխանել 3:

Հիմնական տարբերությունն այն է.

  • JVM- ն Java վիրտուալ մեքենա է, մինչդեռ JIT- ը պարզապես ժամանակի հավաքածու է: JIT- ը JVM- ի ենթահամակարգ է, որը բարելավում է JVM- ի աշխատանքը: JVM- ն օգտագործվում է Java ծրագրերից բայթային կոդ կատարելու համար, ինչը Java պլատֆորմը դարձնում է ինքնուրույն, մինչդեռ JIT- ը ներկայումս կատարում է բայթը, կազմելով մեքենայական կոդը: JVM- ի ավելի լավ կատարման համար JIT- ը նաև պահում է այս կազմված ծածկագիրը:

Շնորհակալություն և բարեմաղթանքներ

Շուջաթ խանը

Կոնտակտային տվյալները ՝ [email protected]