«Ջավա»–ի խմբագրումների տարբերություն

Content deleted Content added
չ փոխարինվեց: 5թ → 5 թ (7) oգտվելով ԱՎԲ
չ clean up, փոխարինվեց: → (29), ): → )։ (12) oգտվելով ԱՎԲ
Տող 12.
}}
 
'''Java'''-ն պլատֆորմից անկախ, ընդհանուր նշանակության [[ծրագրավորման լեզու]] է, որը զուգահեռ, կլասսների վրա հիմնված, օբյեկտ – կողմնորոշված և հատուկ մշակված է, որպեսզի ունենա ինչքան հնարավոր է շատ իրագործումներ։ Այն նախատեսված է, որպեսզի «Գրվի մեկ անգամ, աշխատի ամենուր» (“ Write once, run anywhere”, WORA ), որը նշանակում է, կոմպիլացված Java կոդը կարող է կատարվել բոլոր Java աջակցող պլատֆորմների վրա առանց նորից կոմպիլացվելու։ Java ծրագրերը կոմպիլացվում են բայթկոդ-ի, որոնք կարող են իրագործվել ցանկացած Java վիրտեւալ մեքենայի (JVM) վրա, անկախ համակարգչային ճարտարապետությունից։ Մինչ 2015 թ. Java-ն հանդիսանում է ամենահայտնի օգտագործվող ծրագրավորման լեզուներից մեկը, մասնավորապես կլիենտ – սերվեր ծրագրերի համար, մոտ 9 միլլիոն գրանցված ծրագրավորողներով։ Java-ն ստեղծվել է Ջեյմս Գոսլինգի կողմից Sun Microsystems – ում (որը հետագայում Oracle կազմակերպությունը գնեց) և ներկայացվեց 1995 թ. որպես Java պլատֆորմի հիմնական մաս։ Այն ծրագրավորվել է [[C++]]-ի միջոցով։ Լեզվի սինտաքսիսը մեծ մասամբ համընկնում է C և C++ լեզուների հետ, բայց այն ունի ավելի քիչ ցածր – մակարդակի միջոցներ, քան նրանցից յուրաքանչյուրը։ Ի տարբերություն C++-ի Java-ն ունի նաև ինտեգրված լայն կլասսների գրադարան (օրինակ բազմապրոցեսային, համացանց, ֆայլային և այլն), որոնք ի շնորհիվ պլատֆորմային անկախության աշխատում են տարատեսակ [[օպերացիոն համակարգ]]երում։ Որպեսզի Java լեզվով ստեղծված ծրագիրը կարողանա աշխատել ձեր համակարգչում կամ շարժական էլեկտրոնային սարքում, դուք պետք է ունենաք համապատասխան միջավայր՝ JRE (Java Runtime Environment)։ Օրիգինալ և ներդրված Java կոմպիլյատորների, վիրտուալ մեքենաների և կլասսների գրադարանի իրագործումը ի սկզբանե թողարկվել է Sun – ի պատենտավորված լիցենզիայի տակ։ 2007 թ. մայիսի դրությամբ, Sun – ը Java տեխնոլոգիայի մեծ մասի լիցենզիան փոխել է GNU General Public License:
 
== Պատմությունը ==
Ծրագրավորման մեջ C++ ծրագրավորման լեզվի հեղափոխությունից հետո քչերն էին սպասում ավելի բեկումնային հեղափոխության, որը կատարեց Java-ն։ Կանխատեսելով շարժական էլեկտրոնային սարքերի լայն տարածումը, Sun-ը 1991–ին հիմնեց այդ ուղղությամբ զբաղվող ներքին կորպորատիվ հետազոտական նախագիծ, որը ստացավ ''Green'' անվանումը։ Նախագծի արդյունքում ստեղծվեց C/C++ վրա հիմնված ծրագրավորման լեզու, որին նրա ստեղծող Ջեյմս Գոսլինգը անվանեց Oak (կաղնի) ի պատիվ այն կաղնու, որը երևում էր նրա աշխատասենյակից։ Հետագայում հայտնաբերվեց, որ արդեն գոյություն ունի ծրագրավորման լեզու Oak անունով և [[Sun]]-ը նրան տվեց նոր անուն Java, որով էլ այն հետագայում ներկայացվեց հասարակությանը։ Այն անվանվել է ի պատիվ Java սուրճի տեսակի (որը այն ժամանակ շատ տարածված էր ծրագրավորողների շրջանում), որն էլ իր հերթին իր անվանումը ստացել է Ինդոնեզական Յավա կղզուց։ Sun-ի սպասված շարժական էլեկտրոնային սարքերի արագ առաջընթացը չէր ստացվում և նրա հրապարակումը ուշանում էր։ ՄիաԺամանակ [[համացանց]]ը սկսել էր մեծ զարգացում ապրել և 1993 թվականին Sun-ի աշխատակիցները սկսեցին Java-ն համալրել համացանցում դինամիկ էջեր ստեղծելու ունակություններով։ Sun Microsystems-ը ներկայացրեց Java-ի առաջին տարբերակը՝ Java 1.0 1995 թ.-ին։ Java-ի երկրորդ տարբերակի հետ ( ներկայացվեց 1998 թ. Սեպտեմբերին որպես J2SE 1.2) նոր տարբերակները ունեին բազմաթիվ կոնֆիգուրացիաներ տարբեր տեսակի պլատֆորմների համար։ J2EE-ն ներառում տեխնոլոգիաներ սերվերների վրա աշխատող ծրագրերի համար, մինչդեռ J2ME- ն օպտիմիզացված էր շարժական պլատֆորմների համար։ Դեսկտոպ տարբերակը վերանվանվեց J2SE: 2006 թ. մարքեթինգային նկատառուներից ելնելով Sun-ը վերանվանեց J2-ի տարբերակները Java EE, Java ME և Java SE համապատասխանաբար։ Java-ն համարվում է փաստացի ստանդարտավորված, կառավարվում է JCP-ի կողմից (JCP – Java Community Process):։
2006 թ. նոյեմբերի 13-ին Sun–ը ներկայացրեց Java-ի մեծ մասը որպես FOSS (Free and open source software), համապատասխան GNU- ի Հիմանական հասարակական լիցենզիայի (GPL – General Public License) սկզբունքների։ 2007 թ. մայիսի 8-ին Sun–ը վերջացրեց այդ պրոցեսսը։
Java ծրագրերը աշխատում են ամենուրեք, սկսած շարժական համակարգիչներից (laptops) մինչև տվյալների կենտրոններ ( data centers), խաղային կոնսոլներից մինչև գիտական սուպերհամակարգիչներ։ Java-ն օգտագործվում է դինամիկ պարունակությամբ վեբ էջեր, բազմատեսակ սպառողական ծրագրեր ստեղծելու, շարժական բազմապիսի էլեկտրոնային սարքերը ծրագրերով ապահովելու համար։
 
== Տեխնիկական նկարագրություն==
Տող 29.
Java-ի տեղափոխելությունը պայմանավորված է նրանով, որ կոմպիլացվելուց հետո կոդն անմիջապես չի դառնում միջավայրին համապատասխան մեքենայական կոդ, այլ վերածվում է միջանկյալ կոդի, որը կոչվում է Java բայթկոդ։ Վերջինս աշխատեցվում է Java վիրտուալ մեքենայի կողմից, որն արդեն հատուկ է տվյալ միջավայրին։ Սովորաբար բոլոր օգտագործողների սարքերում էլ տեղադրված է Java Runtime Environment-ը (JRE), որն էլ ապահովում է [[Java վիրտուալ մեքենա]]յի առկայությունը։ Վերջինիս աշխատանքը ներկայացված է նկարում։ Ինչպես երևում է նկարից՝ Java վիրտուալ մեքենան նախատեսված է ոչ միայն Java-ի, այլ նաև այլ ծրագրավորման լեզուների համար (նկարում ներկայացված է [[Python]]-ը)։ Սովորաբար Java-ով գրված ծրագրերը [[C++]]-ով գրվածների հեմեմատ ունեն ավելի դանդաղ աշխատելու և շատ հիշողություն օգտագործելու համբավ։ Բայց Java-ի [[Just-in-time (JIT)]] կոմպիլացայի ներդրումից հետո ծրագրերի արագագործությունը զգալիորեն մեծացել է։ JIT-ի դերը կայանում է նրանում, որ այն դինամիկ ձևով Java բայթկոդը թարգմանում է մեքենայական կոդի, որն էլ միանգամից կատարվում է։
 
Ծրագրերի կատարման այս մեթոդի առավելությունը կայանում է նրանում, որ բայթկոդը անկախ է օպերացիոն համակարգից և սարքավորումից, հետևաբար Java ծրագրերը կարելի է կատարել ցանկացած սարքի վրա, որի համար գոյություն ունի համապատասխան վիրտուալ մեքենա։
Մյուս կարևոր առանձնահատկությունը կայանում է ճկուն անվտանգության համակարգում, որի շրջանակներում ծրագրի կատարումը ամբողջությամբ կառավարում է վիրտուալ մեքենան։ Ցանկացած օպերացիա, որը գերազանցում է ծրագրի իրավունքները (օրինակ չթույլատրված մուտք դեպի տվյաներ կամ ուրիշ համակարգչի հետ կապ), առաջացնում են ծրագրի անահապաղ դադարեցում։
Վիրտուակ մեքենայի գլխավոր թերությունը ցածր արագագործությունն է համարվում։ Որոշ կատարելագործումենր բարձրացրել Java ծրագրերի կատարման արագությունը։
*Բայթկոդի հեռարձակումը մեքենայական կոդի դինամիկ ձևով ծրագրի կատարման ժամանակ (JIT տեխնոլոգիա, [[Just-in-time (JIT)]]):։
*Պլատֆորմ – կողմնորոշված կոդի լայն օգտագործում (native կոդ) ստանդարտ գրադարաններում։
*Սարքերի միջոցներ, որոնք ապահովում են բայթկոդի արագացված մշակում (օրինակ Jazelle տեխնոլոգիան, որը կիրառվում է որոշ ARM պրոցեսսորների համար):։
 
Ըստ http://shootout.alioth.debian.org կայքի, 7 տարբեր խնդիրների համար Java-ով գրված ծրագրի կատարման ժամանակը 1.5 – 2 անգամ ավելի շատ է, քան C\C++ -ով գրված ծրագրի համար։ Առանձին դեպքերում Java-ն ավելի արագ է, իսկ որոշ դեպքերում 7 անգամ ավելի դանդաղ։ Մյուս կողմից, այդ խնդիրներից շատերի համար հիշողության սպառումը 10 – 30 անգամ ավելի շատ է, քան C\C++ -ով գրված ծրագրերի համար։
Վիրտուալ մեքենայի կոնցեպցիան մեծ ազդեցություն թողեց, և շատ ծրագրավորման լեզուների համար ստեղծվեցին համապատասխամ տեխնոլոգիաներ։ Այդ գաղափարը նաև իրագործվել է CLI ինֆաստրուկտուրայի մեջ, որը հանդիսանում է Microsoft ընկերության .NET պլատֆորմի հիմքը։
 
Java-ն օգտագործում է [[աղբահավաք]]՝ ({{lang-en|[https://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29 Garbage collector - GC]}}) հիշողության ավտոմատ կազմակերպման համար։ Երբ ծրագրի աշխատանքի ժամանակ որևէ օբյեկտ չի օգտագործվում, այսինքն չկա նրա վրա ցուցող որևէ հղում, ապա աղբահավաքը ջնջում է այն հիշողությունից։ Չնայած այս ավտոմատացված կազմակերպմանը՝ [[հիշողության արտահոսք]]ի ({{lang-en|[https://en.wikipedia.org/wiki/Memory_leak Memory leak]}}) վտանգը դեռ մնում է։ Օրինակ հիշողության արտահոսք կարող է լինել, եթե ոչ պետքական օբյեկտի վրա ցուցող [[հղում]] ({{lang-en|[https://en.wikipedia.org/wiki/Reference_%28computer_science%29 Refernce]}}) մնա։ Ի տարբերություն [[C++]]-ի Java-ն հնարավորություն չի տալիս [[ցուցիչ]]ների ({{lang-en|[https://en.wikipedia.org/wiki/Pointer_%28computer_programming%29 Pointer]}}) հետ աշխատելու, ձեռքով հիշողությունն ազատելու, [[խելացի ցուցիչ]]ներ ({{lang-en|[https://en.wikipedia.org/wiki/Smart_pointer Smart pointer]}}) օգտագործելու և այլն։ Աղբահավաքը կարող է աշխատել ցանկացած պահի, իդեալական դեպքում այն աշխատում է համեմատաբար պարապուրդի մեջ եղած ժամանակ։ Երաշխավորված է, որ այն կաշխատի, երբ բավարար հիշողություն չլինի նոր օբյեկտ ստեղծելիս։ Սա թույլ է տալիս աղբահավաքին տեղափոխել օբյեկտների հասցեները և տալիս է տիպերի ապահովություն։ Ինչպես C++-ում և որոշ օբյեկտ-կողմնորոշված ծրագրավորման լեզեւներում, Java - ում պրիմիտիվ տիպերը(int, double, boolean, char) պահվում են դաշտերում (օբյեկտների համար), ստեկում ({{lang-en|[https://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29 Stack]}}) (ֆունկցիաների համար), այդ պատճառով դրանց համար աղբահավաք չի աշխատում։ Սա Java - ի ստեղծողների գիտակցված որոշումն է, որի նպատակն է բարձրացնել արագագործությունը։
Java-ն ունի մի քանի տեսակի աղբահավաքներ։ Java - ով գրված ծրագրերի 90% -ի համար Concurrent Mark-Sweep ({{lang-en|[https://en.wikipedia.org/wiki/Concurrent_mark_sweep_collector Concurrent mark sweep collector]}}) աղբահավաքը բավարար է։ Oracle -ը մտադրված է փոխարինել այն Garbage-first collector (G1) աղբահավաքով։
 
== Java տարբերակների պատմությունը ==
Տող 77.
 
Java 5 սպեցիֆիկացիան թողարկվեց 2004 թ. սեպտեմբերին։ Այս տարբերակում լեզու մտցրվեցին մի շարք կարևոր հնարավորություններ։
* Թվարկվող տեսակ (enum):։ Այն մշակված էր C++ -ի enum-ի նման, բարց ուներ մի շարք հավելյալ հնարավորություններ։
** Java-ում enum-ը լիարժեք կլասս է, այսինքն ունի կոնստրուկտոր, դաշտեր, մեթոդներ, այդ թվում թաքուն և աբստրակտ։
** Այն կարող է իրագործել ինտերֆեյսներ։
**Այն ունի ներդրված մեթոդներ, որոնք թույլ են տալիս ստանալ արժեքը ըստ անվան, վերափոխումը համարի և արժեքի միջև, տեսակի ստուգումը և այլն։
* Մետատվյաներ (metadata, annotations), թույլ է տալիս ավելացնել կոդի մեջ մետատվյալներ, որոնք չեն ազդում կոդի կատարման վրա, բայց թույլ են տալիս ստանալ տարբեր տվյալներ կոդի և նրա կատարման մասին։
* Ընդհանուր ծրագրավորման միջոցներ (generics), Eiffel-ին համարժեք տեխնոլոգիա (սկզբունքորեն տարբերվում է C++-ի կաղապարներից), որը թույլ է տալիս ստեղծել կլասսներ և մեթոդներ ցանկացած տեսակի դաշտերով և պարամետրերով։ Այս մեխանիզմով իրականացվել են Java-յի ստանդարտ գրադարանի հավաքածուների նոր տարբերակները։
* Անորոշ թվով պսրամետրեր ունեցող մեթոդներ։
* Autoboxing/Unboxing, Java-յի սկալյար տիպերի և դրանց համապատասխան տիպ-վրապպերների միջև ավտոմատ փոխակերպումը (օրինակ int - Integer):։
* Ստատիկ մեթոդների և փոփոխականների ներմուծում։
* Լեզվի մեջ ավելացան օբյեկտների հավաքածուի վրայով ցիկլերը (իտերատոր, foreach):։
 
=== Java SE7 ===
Տող 92.
* Վիրտուալ մեքենան սկսեց աջակցել դինամիկ լեզուները։
* 64 բիթանոց սեղմված ցուցիչներ։
* Զուգահեռ իրականացման համար միջոցներ (JSR 166):։
* Մուտք - ելք նոր գրադարանը, որը լավացնում էր պլատֆորմ-անկախությունը։
* XRender Java 2D-ի համար, որը լավացնում էր ժամանակակից GPU-ների կառավարման հնարավորություննրը։
Տող 117.
 
Java պլատֆորմները
*Java SE – Java Standart Edition, Java-ի հիմնական հրատարակությունը, պարունակում է կոմպիլյատորներ. API, JRE (Java Runtime Enviroment):։ Օգտագործվում է սպառողական ծրագրերի ստեղծման համար, մասնավորապես PC-ների և Laptop-ների համար։
*Java EE – Java Enterprise Edition, պարունակում է սպեցիֆիկացիաների հավաքածու կազմակերպությունների ծրագրային ապահովման ստեղծման համար։
*Java ME – Java Micro Edition, ստեղծվել է, որպեսզի օգտագործվի այնպիսի սարքերում, որոնք սահմանափակ հաշվարկային հզորություն ունեն, օրինակ բջջային հեռախոսները, պլանշետները, ներդրված համակարգերը։
*Java FX - տեխնոլոգիա, որը հանդիսանում է Java-ի էվոլյուցիան Rich Client Platform – ում։ Նախատեսված է, ազմակերպությունների ծրագրային ապահովման և բիզնես ծրագրերի գրաֆիական ինտերֆեյսի ստեղծման համար։
*Java Card – տեխնոլոգիան ներկայացնում է անվտանգ միջավայր այն ծրագրերի համար, որոնք աշխատում են սմարթ քարտերի և այլ սարքերի վրա, որոնք ունեն չափազանց սահմանափակ հիշողության ծավալ և մշակաման հնարավորություններ։
 
== Շարահյուսությունը ==
Java-ի սինտակսիսը մեծ մասամբ համընկնում է C++ -ի սինտակսիսի հետ։ Ի տարբերություն C++ -ի, որը կոմբինացրել է ստրուկտուրային, ընդհանուր և օբյեկտ-կողմնորոշված ծրագրավորումը, Java-ն կառուցված է որպես օբյեկտ-կողմնորոշված լեզու։ Ամբողջ կոդը գրվում է կլասսների ներսում, և ցանկացած տվյալ, բացառությամբ պրիմիտիվ տիպերի, գտնվում է օբյեկտի մեջ։ Java -ն կրկնում է C++ -ի որոշ հայտնի ասպեկտները (օրինակ printf() ֆունկցիան)։
Ի տարբերություն C++-ի, Java-ում չկա օպերատորների վերասահմանում ({{lang-en|[https://en.wikipedia.org/wiki/Operator_overloading Operator overloading]}}) կամ բազմակի ժառանգում ({{lang-en|[https://en.wikipedia.org/wiki/Multiple_inheritance Multiple inheritance]}}) կլասսների համար, բայց բազմակի ժառանգումը իրագործված է ինտերֆեյսների համար։ Դա պարզեցնում է լեզուն և կանխում հնարավոր սխալները։
Java-ն մեկնաբանությունների (comments) սինտակսիսը համարժեք է C++-ին։ Կա երեք տեսակի մեկնաբանություն։ Մեկ տողի համար (<code>//</code>), մի քանի տողերի համար՝ սկսվում է <code>/*</code> - ով և վերջանում <code>*/</code> -ով, և Javadoc ({{lang-en|[https://en.wikipedia.org/wiki/Javadoc Javadoc]}})տեսակը, որը սկսվում է <code>/**</code>-ով, և վերջանում <code>*/</code> -ով։
 
Տող 186.
</source>
 
Ֆալլերը պետք է անվանվեն այն public կլասսի անունով, որը նրանք պարունակում են։ Օրինակ <code>HelloWorldApp.java</code>։ Այն սկզբում կոմպիլացվելու է բայթկոդի, որի արդյունքում ստացվելու է <code>HelloWorldApp.class</code> ֆայլը։ Դրանից հետո միայն այն կկատարվի։ Java ֆայլը կարող է պարունակել միայն մեկ <code>public</code> կլասս, բայց այն կարող է պարունակել բազմաթիվ կլասսներ <code>public</code>-ից բացի այլ թույլտվության սպեցիֆիկատորներով և ցանկացած թվով ներդրված կլասսներ (նաև <code>public</code>)։
 
<code>public</code> սպեցիֆիկատորը նշանակում է, որ ֆունկցիան կարող է կանչվել այլ կլասսներից կամ որ կլասսը կարող է օգտագործվել հիերարխիայից դուրս այլ կլասսներում։ Կլասսների հիերարխիան կապված է այն կատալոգին, որտեղ գտնվում է Java ֆայլը։ Սա կոչվում է թույլտվության աստիճանի մոդիֆիկատոր։ Մյուս թույլտվության աստիճանի մոդիֆիկատորներն են <code>private</code> և <code>protected</code>։
 
<code>static</code> սպեցիֆիկատորը սահմանում է ստատիկ ֆունկցիա, որը կապված է միայն կլասսին, և ոչ թե նրա օբյեկտների հետ։ Միայն ստատիկ ֆունկցիաները կարող են կանչվել առանց օբյեկտի հասցեի։ Ստատիկ ֆունկցիաները չեն կարող դիմել կլասսի այն անդամներին, որոնք ստատիկ չեն։
Տող 213.
Java լեզուն ակտիվ օգտագործվում է [[Android]] օպերացիոն համակարգի վրա տեղափոխելի ծրագրեր գրելու համար։ Ծրագրերը կոմպիլացվում են ոչ ստանդարտ բայթկոդ, որպեսզի այն կարողանա օգտագործվել Dalvik վիրտուալ մեքենայում։ Այսպիսի կոմպիլյացիայի համար օգտագործվում է լրացուցիչ գործիք՝ Software Development Kit, մշակված [[Google]] ընկերության կողմից։
 
Ծրագրերի իրագործումը կարելի է կատարել հետևյալ միջավայրերում՝ [[Android Studio]], [[NetBeans]], [[Eclipse]] (օգտագործելով Android Development Tools (ADT) պլագինը), [[IntelliJ IDEA]]։ JDK-ի տարբերակը պետք է լինի 5․0 կամ բարձր։
 
2014 թ․-ի դեկտեմբերի 8-ին Google-ը ճանաչեց Android Studio-ն նախընտրելի միջավայր Android ՕՀ-ւմ նախագծելու համար"
Տող 232.
=== Պրիմիտիվ տիպերը ===
Java լեզվում կան ընդամենը 8 պրիմիտիվ տիպեր՝ boolean, byte, char, short, int, long, float, double. Գոյություն ունի նաև 9-րդ տիպ՝ void, բայց այս տիպի փոփոխականներ և դաշտեր հայտարարելը կոդում արգելված է։ Այ օգտագործվում է կլասսներում և մեթոդներում, որպես ոչինչ չվերադարձնող արժեք։
Տիպերի երկարությունը և արժեքների միջակայքը որոշվում են ստանդարտով, ոչ թե իրագործմամբ։ Char-ը երկու բայթ է զբաղեցնում, լոկալիզացիայի հարմարության համար։ Երբ մշակվում էր ստանդարտը, արդեն գոյություն ուներ Unicode-32-ը, բայց ոչ Unicode-64-ը։ Քանի որ չկար մեկ բայթանոց փոփոխական, ավելացրեցին նոր տիպ՝ byte, և ի տարբերություն ուրիշ ծրագրավորման լեզուների, այն առանց նշանի չէ։ Float և double տիպերը կարող են ունենալ հատուկ արժեքներ ՝ <math>+\infty</math>, <math>-\infty</math> и «ոչ թիվ» ([[NaN]]):։ Double տեսակի համար դրանք ցույց են տրվում <code>Double.POSITIVE_INFINITY</code>, <code>Double.NEGATIVE_INFINITY</code>, <code>Double.NaN</code>; Float տիպի համար նմանապես, միայն Double-ի տեղը պետք է դնել Float: Առավելագույն և նվազագույն արժեքները նույնպես ստանդարտավորված են։
 
{| class="wikitable"
Տող 280.
Օբյեկտային են համարվում բոլոր տեսակի փոփոխականները, բացի պրիմիտիվ տիպերի փոփոխականներից։ Java-ում ակնհայտ ցուցիչներ չկան։ Ի տարբերություն C, C++ և այլ լեզուների, հղումների օգտագործումը java-ում ունի բարձր անվտագույան շեմ, քանի որ դրված են խիստ սահմանափակումներ դրանց օգտագործման վրա՝
* Չի կարելի փոխակերպել պրիմիտիվ տեսակի օբյեկտը ցուցիչի կամ հղումի, և հակառակը։
* Ցուցիչների հետ չի կարելի կատարել հանրահաշվական գործողություններ (++, --, +, -):։
* Տիպերի փոխակերպումը խիստ կառավարվում է։ Բացառությամբ զանգվածների վրա հղումներից, թույլատրված փոխակերպել հղումները միայն ժառանգվող տիպի և նրա ծնողի միջև, ընդ որում փոխակերպումը պետք է ակնհայտ ցույց տրվի։
* Java-ում չկա հասցե վերցնելու օպերատոր (&) և օբյեկտի վերցնումը ըստ հասցեի (*):։
Այսպիսով կառավարել հիշողությունը ֆիզիկական մակարդակի վրա անհնար է։ Նաև կարելի է ստուգել, արդյոք ցուցիչ հղված է null-ի վրա։
=== Հղումների կրկնօրինակումը ===
Տող 294.
<code>clone()</code> մեթոդը պահանջում է, որպեսզի կլասսը իրագործի <code>Cloneable</code> ինտերֆեյսը։
=== Փոփոխականների սկզբնաարժեքավորումը ===
Բոլոր փոփոխականները պահանջում են սկզբնաարժեքավորում, կամ ավտոմատ լցվում 0-ներով (0, null, զրոների զանգված):։ Այսպիսով անհետանում են C լեզվին բնորոշ չսկզբնաարժեքավորված փոփոխականների օգտագործումը։
 
=== Աղբի հավաքումը ===
Ստացված է «https://hy.wikipedia.org/wiki/Ջավա» էջից