Inafasiriwa moja kwa moja kutoka kwa Wikipedia ya Kiingereza na Tafsiri ya Google

Java (lugha ya programu)

Java ni lugha ya jumla ya programu ya programu ya kompyuta ambayo ni sawa , ya darasa , msingi -msingi , [15] na hasa iliyoundwa na kuwa na utegemezi wa utekelezaji machache iwezekanavyo. Inalenga kuruhusu waendelezaji wa programu " kuandika mara moja, kukimbia mahali popote " (WORA), [16] maana kwamba kuundwa kwa kanuni ya Java inaweza kukimbia kwenye jukwaa zote zinazounga mkono Java bila ya haja ya kukombolewa. [17] Matumizi ya Java yanajumuishwa kwa bytecode ambayo inaweza kukimbia kwenye mashine yoyote ya Java (JVM) bila kujali usanifu wa kompyuta . Kufikia mwaka wa 2016, Java ni mojawapo ya lugha zinazojulikana zaidi za kutumia programu , [18] [19] [20] [21] hasa kwa programu za wavuti-server, na watengenezaji milioni 9 walioripotiwa. [22] Java ilianzishwa awali na James Gosling kwenye Sun Microsystems (ambayo imepatikana kwa Oracle Corporation ) na iliyotolewa mwaka 1995 kama sehemu ya msingi ya jukwaa la Java Micro Microstems. Lugha hupata kiasi ya yake syntax kutoka C na C ++ , lakini ina wachache ngazi ya chini vifaa ya aidha wao.

.com / java /
Java
Java programu ya programu logo.svg
Paradigm Mtazamo wa aina nyingi : Mwelekeo unaoelekezwa ( darasa-msingi ), muundo , muhimu , generic , reflective , concurrent
Iliyoundwa na James Gosling
Msanidi programu Sun Microsystems (sasa inayomilikiwa na Oracle Corporation )
Kwanza ilionekana Mei 23, 1995 ; Miaka 22 iliyopita ( 1995-05-23 ) [1]
Kuandika nidhamu Imara, imara, salama , kuteuliwa , itaonyeshwa
Leseni GNU General Public License , Jumuiya ya Jumuiya ya Java
Upanuzi wa faili .java, .class , .jar
Tovuti kinywa
Utekelezaji mkubwa
OpenJDK , GNU Compiler ya Java (GCJ), wengine wengi
Inaondoa
Java Generic , Pizza
Inasababishwa na
Ada 83 , C ++ , [2] C # , [3] Eiffel , [4] Generic Java , Mesa , [5] Modula-3 , [6] Oberon , [7] Lengo-C , [8] UCSD Pascal , [9 ] [10] Kitu cha Pascal [11]
Imeathiriwa
Ada 2005 , BeanShell , C # , Chapel , [12] Kivunja , ECMAScript , Fantom , Gambas , [13] Groovy , Hack , [14] Haxe , J # , JavaScript , Kotlin , PHP , Python , Scala , Mbegu7 , Vala

Utekelezaji wa awali na urejelezaji wa kompyuta za Java, mashine za virtual, na maktaba ya darasa zilifunguliwa awali na Sun chini ya leseni za wamiliki. Kufikia mwezi wa Mei 2007, kwa kufuata utaratibu wa Mchakato wa Jumuiya ya Jumuiya , Sun ilitakiwa teknolojia nyingi za Java chini ya Leseni ya Umma GNU ya Umma . Wengine pia wameanzisha utekelezaji mbadala wa teknolojia hizi za Sun, kama vile GNU Compiler ya Java (bytecode compiler), GNU Classpath (maktaba ya kawaida), na IcedTea -Web (browser plugin kwa applets).

Toleo la hivi karibuni ni Java 9 , iliyotolewa mnamo Septemba 21, 2017, [23] na ni moja ya matoleo mawili ambayo sasa yanasaidiwa kwa bure na Oracle. Matoleo mapema kuliko Java 8 yanaungwa mkono na makampuni kwa misingi ya kibiashara; kwa mfano na Oracle kurudi Java 6 mwezi wa Oktoba 2017 (wakati bado "wanapendekeza sana kufuta" [ citation inahitajika ] kabla ya Java 8 kutoka angalau kompyuta za kompyuta).

Yaliyomo

Historia

Duke, mascot ya Java
James Gosling , Muumba wa Java (2008)
TIOBE lugha ya uandishi wa habari umaarufu wa graph kutoka 2002 hadi 2015. Zaidi ya miaka kumi Java (bluu) na C (nyeusi) kushindana kwa nafasi ya juu.

James Gosling , Mike Sheridan, na Patrick Naughton walianzisha mradi wa lugha ya Java mwezi Juni 1991. [24] Java ilikuwa awali iliyoundwa kwa ajili ya televisheni iliyoingiliana, lakini ilikuwa ya juu sana kwa sekta ya televisheni ya cable ya wakati huo. [25] Lugha ilikuwa awali inayoitwa Oak baada ya mti wa mwaloni uliokuwa umesimama nje ya ofisi ya Gosling. Baadaye mradi uliendelea na jina la kijani na hatimaye ikaitwa Java , kutoka kahawa ya Java . [26] Gosling iliunda Java na syntax ya C / C ++ ya mtindo ambayo programu na waombaji wa programu watajifunza. [27]

Sun Microsystems ilitoa utekelezaji wa kwanza wa umma kama Java 1.0 mwaka wa 1995. [28] Iliahidi "Andika Mara, Run Anywhere" (WORA), kutoa nyakati za kukimbia kwa gharama nafuu kwenye majukwaa maarufu. Ulio salama na unaoishi na usalama uliowekwa, uliruhusu vikwazo vya mtandao na faili. Vivinjari vikubwa vya wavuti hivi karibuni vimejumuisha uwezo wa kuendesha programu za Java kwenye kurasa za wavuti, na Java ikawa maarufu. Jumuia ya Java 1.0 ilirejeshwa tena jijini na Arthur van Hoff kwa kufuata madhubuti na vipimo vya lugha ya Java 1.0. [29] Pamoja na ujio wa Java 2 (iliyotolewa awali kama J2SE 1.2 Desemba 1998 - 1999), matoleo mapya yalikuwa na maandamano mengi yaliyoundwa kwa aina mbalimbali za majukwaa. J2EE ilijumuisha teknolojia na API kwa programu za biashara zinaendeshwa kwa mazingira ya seva, wakati J2ME inajumuisha API zilizopangwa kwa ajili ya maombi ya simu. Toleo la desktop liliitwa J2SE . Mwaka 2006, kwa madhumuni ya uuzaji, Sun inaitwa jina j2 mpya kama Java EE , Java ME , na Java SE , kwa mtiririko huo.

Mnamo mwaka wa 1997, Sun Microsystems iliwasiliana na viwango vya mwili wa ISO / IEC JTC 1 na baadaye Ecma Kimataifa ili kuifanya Java, lakini hivi karibuni iliondoka kwenye mchakato. [30] [31] [32] Java bado halisia kiwango , kudhibitiwa kwa njia ya Mchakato Java Community . [33] Wakati mmoja, Sun ilifanya utekelezaji mkubwa wa Java inapatikana bila malipo, licha ya hali ya programu ya wamiliki . Sun inazalisha mapato kutoka Java kwa njia ya kuuza leseni kwa bidhaa maalumu kama vile Java Enterprise System.

Mnamo Novemba 13, 2006, Sun ilitoa kiasi kikubwa cha mashine yake ya Java (JVM) kama programu ya bure na ya wazi , (FOSS), chini ya Sheria ya GNU General Public License (GPL). Mnamo Mei 8, 2007, Sun ilikamilisha mchakato, na kufanya kanuni zote za msingi za JVM inapatikana chini ya masharti ya bure ya programu / usambazaji wa chanzo cha wazi, mbali na sehemu ndogo ya msimbo ambao Sun haishiki hakimiliki. [34]

Makamu wa rais wa Sun Rich Rich alisema kuwa jukumu bora la Sun kuhusiana na Java lilikuwa kama "mhubiri". [35] Ufuatiliaji wa Oracle Corporation wa Sun Microsystems mwaka 2009-10, Oracle amejitambulisha kama "mwendeshaji wa teknolojia ya Java kwa kujitolea kwa kudumisha jamii ya kushiriki na uwazi". [36] Hii haikuzuia Oracle kufuta kesi dhidi ya Google muda mfupi baada ya kuwa kwa kutumia Java ndani ya Android SDK (angalia sehemu ya Google hapa chini). Programu ya Java huendesha kila kitu kutoka kwenye kompyuta za mkononi hadi vituo vya data , vidokezo vya mchezo kwa wasimamizi wa kisayansi. [37] Aprili 2, 2010, James Gosling alijiuzulu kutoka Oracle. [38]

Mnamo Januari 2016, Oracle alitangaza kwamba mazingira ya kukimbia kwa Java kulingana na JDK 9 yatakoma programu ya kivinjari. [39]

Kanuni

Kulikuwa na malengo tano ya msingi katika kuundwa kwa lugha ya Java: [17]

  1. Inapaswa kuwa "rahisi, inayolengwa, na ya kawaida".
  2. Lazima iwe "imara na salama".
  3. Inapaswa kuwa "usanifu-usio na wavuti".
  4. Inapaswa kutekeleza na "utendaji wa juu".
  5. Inapaswa "kutafsiriwa, kufungwa, na nguvu".

Matoleo

Kufikia mwaka wa 2017 , wote wawili wa Java 8 na 9 wanasaidiwa rasmi. Matoleo makubwa ya Java, pamoja na tarehe zao za kutolewa:

  • JDK 1.0 (Januari 23, 1996) [40]
  • JDK 1.1 (Februari 19, 1997)
  • J2SE 1.2 (Desemba 8, 1998)
  • J2SE 1.3 (Mei 8, 2000)
  • J2SE 1.4 (Februari 6, 2002)
  • J2SE 5.0 (Septemba 30, 2004)
  • Java SE 6 (Desemba 11, 2006)
  • Java SE 7 (Julai 28, 2011)
  • Java SE 8 (Machi 18, 2014)
  • Java SE 9 (Septemba 21, 2017)

Mazoezi

Jukwaa la Java

Lengo moja la kubuni la Java ni portability, ambayo ina maana kwamba mipango iliyoandikwa kwa jukwaa la Java inapaswa kukimbia sawasawa na mchanganyiko wowote wa vifaa na mfumo wa uendeshaji na usaidizi wa kutosha wa kukimbia. Hii inafanikiwa kwa kuandaa msimbo wa lugha ya Java kwa uwakilishi wa kati aitwayo Java bytecode , badala ya moja kwa moja kwenye kificho maalum ya mashine . Java intecode maagizo ni sawa na code ya mashine, lakini ni nia ya kutekelezwa na mashine ya kawaida (VM) iliyoandikwa hasa kwa ajili ya vifaa vya mwenyeji. Watumiaji wa mwisho hutumia mazingira ya Java Runtime (JRE) kwenye mashine yao wenyewe kwa maombi ya Java, au kwenye kivinjari cha programu za Java.

Maktaba ya kawaida hutoa njia ya generic ya kufikia vipengele maalum vya jeshi kama vile graphics, threading , na mitandao .

Matumizi ya bytecode ya kila mahali hufanya porting rahisi. Hata hivyo, juu ya kutafsiri kwa bytecode katika maagizo ya mashine yaliyofanywa mipango ya tafsiri karibu daima huendeshwa polepole zaidi kuliko kutekeleza watendaji wa asili. Washiriki wa wakati (JIT) ambao hujumuisha bytecodes kwa msimbo wa mashine wakati wa kukimbia waliletwa kutoka hatua ya mwanzo. Java yenyewe ni kujitegemea jukwaa na inachukuliwa kwa jukwaa fulani ni kuendeshwa na mashine ya virusi ya Java kwa hiyo, ambayo hutafsiri Java kwa njia ya mashine ya jukwaa. [41]

Utekelezaji

Oracle Corporation ni mmiliki wa sasa wa utekelezaji rasmi wa Java jukwaa la jukwaa, kufuatia upatikanaji wao wa Sun Microsystems Januari 27, 2010. Utekelezaji huu unategemea utekelezaji wa awali wa Java na Sun. Utekelezaji wa Oracle unapatikana kwa Microsoft Windows (bado inafanya kazi kwa XP, wakati matoleo ya baadaye tu yanaungwa mkono rasmi), MacOS , Linux , na Solaris . Kwa kuwa Java haina kanuni yoyote rasmi iliyo kutambuliwa na Ecma International , ISO / IEC, ANSI, au shirika lingine la viwango vya tatu, utekelezaji wa Oracle ni kiwango cha kawaida .

Utekelezaji wa Oracle umewekwa katika mgawanyo mawili tofauti: Jedwali la Java Runtime (JRE) ambalo lina sehemu za jukwaa la Java SE zinazohitajika kuendesha mipango ya Java na inalenga watumiaji wa mwisho, na Kitambulisho cha Maendeleo ya Java (JDK) kwa waendelezaji wa programu na inajumuisha zana za maendeleo kama vile compil Java , Javadoc , Jar , na debugger .

OpenJDK ni utekelezaji mwingine unaojulikana wa Java SE ambayo inaruhusiwa chini ya GNU GPL. Utekelezaji ulianza wakati Jua ilianza kutolewa kwa chanzo cha chanzo cha Java chini ya GPL. Kama ya Java SE 7, OpenJDK ni utekelezaji rasmi wa kutekeleza Java.

Lengo la Java ni kufanya kutekelezwa kwa Java zote. Kwa kihistoria, leseni ya biashara ya Sun kwa ajili ya matumizi ya brand ya Java inasisitiza kuwa utekelezaji wote kuwa "sambamba". Hii ilisababisha mgogoro wa kisheria na Microsoft baada ya Sun ilidai kuwa utekelezaji wa Microsoft haukuunga mkono RMI au JNI na umeongeza vipengele maalum vya jukwaa. Sun alimshtakiwa mwaka 1997, na mwaka 2001, alishinda makazi ya dola za Kimarekani milioni 20, pamoja na amri ya mahakama kutekeleza masharti ya leseni kutoka Sun. [42] Matokeo yake, Microsoft haifai tena Java na Windows .

Java-kujitegemea jukwaa ni muhimu kwa Java EE , na uthibitisho mkubwa zaidi unahitajika kuthibitisha utekelezaji. Hali hii inawezesha maombi ya upande wa seva ya portable.

Utendaji

Programu zilizoandikwa katika Java zina sifa ya kuwa ndogo na inahitaji kumbukumbu zaidi kuliko yale yaliyoandikwa kwenye C ++. [43] [44] Hata hivyo, kasi ya utekelezaji wa mipango ya Java iliboreshwa sana na kuanzishwa kwa mkusanyiko wa muda tu mwaka 1997/1998 kwa Java 1.1 , [45] kuongeza kwa vipengele vya lugha vinavyosaidia uchambuzi bora wa kificho (kama vile viwango vya ndani , darasa la StringBuilder, vidokezo vya hiari, nk), na uboreshaji katika mashine ya virusi ya Java, kama HotSpot kuwa default kwa JVM ya Sun katika 2000. Pamoja na Java 1.5, utendaji uliboreshwa na kuongeza ya java.util.concurrent mfuko, ikiwa ni pamoja na Ufungashaji wa bure wa ConcurrentMaps na makusanyo mengine ya msingi, na iliboreshwa zaidi na Java 1.6.

Majukwaa fulani hutoa msaada wa vifaa vya moja kwa moja kwa Java; kuna wasimamizi wadogo ambao wanaweza kukimbia Java kwenye vifaa badala ya mashine ya Java ya programu ya kisayansi [na kinachohitajika ] , na wasindikaji wengine wa ARM wanaweza kuwa na vifaa vya vifaa vya kutekeleza Java bytecode kwa chaguo la Jazelle , ingawa msaada umepungua katika utekelezaji wa sasa wa ARM .

Usimamizi wa kumbukumbu moja kwa moja

Java hutumia mtoza takataka moja kwa moja kusimamia kumbukumbu katika maisha ya kitu . Mpangilio huamua wakati vitu vimeumbwa, na wakati wa kukimbia wa Java huwajibika kwa kurejesha kumbukumbu wakati vitu havipotewi tena. Mara hakuna kumbukumbu juu ya kitu kubaki, kumbukumbu unreachable inaruhusiwa kutolewa moja kwa moja na ushuru takataka. Kitu kingine cha kuvuja kumbukumbu kinaweza kutokea kama msimbo wa programu ya mpango una kumbukumbu ya kitu ambacho hakihitaji tena, kwa kawaida wakati vitu ambavyo havihitaji tena vinahifadhiwa kwenye vyombo ambavyo bado vinatumika. Ikiwa mbinu za kitu kisichopopo kinachoitwa, "ubaguzi wa pointer null" hupigwa. [46] [47]

Moja ya mawazo nyuma ya mfano wa usimamizi wa kumbukumbu ya moja kwa moja ya Java ni kwamba wasimamizi wanaweza kuepuka mzigo wa kufanya usimamizi wa kumbukumbu ya mwongozo. Katika lugha zingine, kukumbukwa kwa uumbaji wa vitu kunachukuliwa kikamilifu kwenye stack au kwa usahihi uliogawa na kuondokana na chungu . Katika kesi ya pili, jukumu la kusimamia kumbukumbu linaishi na programu. Ikiwa programu haipatikani kitu, kuvuja kumbukumbu hutokea. Ikiwa mpango unajaribu kufikia au kuhifadhi kumbukumbu ambayo tayari imesababishwa, matokeo hayajafanywa na ni vigumu kutabiri, na programu hiyo inaweza kuwa imara au ajali. Hii inaweza kupunguzwa kikamilifu na matumizi ya maelekezo ya smart , lakini haya yanaongeza uharibifu na utata. Kumbuka kuwa ukusanyaji wa takataka hauzuizi uvujaji wa kumbukumbu "mantiki", yaani , wale ambao kumbukumbu bado hutajwa lakini haitumiwi kamwe.

Ukusanyaji wa takataka inaweza kutokea wakati wowote. Kwa hakika, itatokea wakati programu haifai. Inahakikishiwa kuwa yalisababishwa kama hakuna kumbukumbu ya bure ya kutosha juu ya chungu kugawa kitu kipya; hii inaweza kusababisha mpango wa kufungia kwa muda mfupi. Usimamizi wa kumbukumbu waziwazi hauwezekani katika Java.

Java haitumii hesabu ya polepole ya C / C ++, ambapo anwani ya vitu na integers zisizosajiliwa (kwa kawaida integers ndefu) zinaweza kutumiwa kwa usawa. Hii inaruhusu mtoza takataka kuhamisha vitu vinavyoelezwa na kuhakikisha usalama na usalama wa aina.

Kama ilivyo katika C ++ na lugha zingine zinazoelekezwa na kitu, vigezo vya aina za data za kwanza vya Java huhifadhiwa moja kwa moja kwenye maeneo (kwa vitu) au kwenye stack (kwa njia) badala ya chungu, kama ilivyo kawaida kwa data zisizo za asili aina (lakini angalia uchambuzi wa kuepuka ). Hii ilikuwa uamuzi wa ufahamu wa wabunifu wa Java kwa sababu za utendaji.

Java ina aina nyingi za watoza takataka. Kwa default, HotSpot hutumia mtoza takataka sambamba . [48] Hata hivyo, kuna pia watoza wengine wengi ambao wanaweza kutumika kusimamia chungu. Kwa ajili ya maombi 90% ya Java, mtoza takataka ya Mchanganyiko wa Chura (CMS) ni wa kutosha. [49] Oracle inalenga kuchukua nafasi ya CMS na mkusanyaji wa takataka (G1). [50]

Syntax

Syntax ya Java inaathiriwa sana na C + + . Tofauti na C ++, ambayo inachanganya syntax kwa programu iliyojengwa, ya kawaida, na ya msingi, Java ilijengwa karibu pekee kama lugha inayolengwa na kitu. [17] Kanuni zote imeandikwa ndani ya madarasa, na kila kitu data ni kitu, isipokuwa aina primitive data, (yaani integer, idadi floating-kumweka, maadili ya bulin , na herufi), ambayo si vitu kwa sababu za utendaji . Java hutumia vipengele vingine maarufu vya C + + (kama vile njia ya printf ().

Tofauti na C ++, Java haina msaada wa uendeshaji overloading [51] au urithi nyingi kwa ajili ya madarasa , ingawa urithi nyingi ni mkono kwa interfaces . [52]

Java inatumia maoni sawa na ya C ++. Kuna mitindo mitatu tofauti ya maoni: mtindo wa mstari mmoja ulio na slashes mbili ( // ), mtindo wa mstari wa multiple ulifunguliwa na /* na kufungwa na */ , na style ya maoni ya Javadoc kufunguliwa na /** na imefungwa na */ . Mtindo wa Javadoc wa kutoa maoni inaruhusu mtumiaji kukimbia Javadoc kutekeleza kuunda nyaraka za programu na inaweza kusoma na mazingira fulani ya maendeleo (IDEs) kama Eclipse kuruhusu watengenezaji kufikia nyaraka ndani ya IDE.

Mfano:

// Hii ni mfano wa maoni ya mstari mmoja kutumia slashes mbili

/ * Hii ni mfano wa maoni ya mstari nyingi kutumia slash na asterisk.
Aina hii ya maoni inaweza kutumika kushikilia habari nyingi au kuacha
kificho, lakini ni muhimu kukumbuka kufunga maoni. * /

mfuko nyuzi za nyuzi;
kuagiza java.util.HashMap;

/ **
* Hii ni mfano wa maoni ya Javadoc; Javadoc inaweza kukusanya nyaraka
* kutoka kwa maandishi haya. Maoni ya Javadoc lazima mara moja kabla ya darasa, njia, au shamba kuwa kumbukumbu.
* /
umma darasa FibCalculator huongeza Fibonacci zana Calculator {Privat static Ramani<Kipengee, Kipengee> unasisimuliwa = mpya HashMap<Kipengee, Kipengee> ();/ *
* Njia kuu iliyoandikwa kama ifuatavyo inatumiwa na JVM kama hatua ya mwanzo ya programu.
* /umma static haipo kuu(Kamba[] args) {unasisimuliwa.kuweka(1, 1);unasisimuliwa.kuweka(2, 1);Mfumo.nje.println(fibonacci(12)); // Pata nambari ya Fibonacci ya 12 na uchapishe ili ufariji}/ **
* Mfano wa mbinu iliyoandikwa katika Java, imefungwa katika darasa.
* Kutokana na nambari isiyo ya hasi FIBINDEX, inarudi
* Nambari ya Fibonacci Nth, ambapo N inalingana na FIBINDEX.
* @param fibIndex Ripoti ya nambari ya Fibonacci
* @return Nambari ya Fibonacci
* /umma static int fibonacci(int fibIndex) {kama (unasisimuliwa.InaKey(fibIndex)) {kurudi unasisimuliwa.kupata(fibIndex);} mwingine {int jibu = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);unasisimuliwa.kuweka(fibIndex, jibu);kurudi jibu;}}
}

&quot;Hello world&quot; mfano

Ya jadi "Hello, dunia!" programu inaweza kuandikwa katika Java kama: [53]

darasa HelloWorldApp {
    jitihada kuu ya utulivu wa umma ( String [] args ) {
        Mfumo . nje . println ( "Hello World!" ); // Kuchapa kamba kwa console.
    }
}

Faili za Chanzo zinapaswa kuitwa jina baada ya darasa la umma ambalo lina vyenye, kupitisha suffix .java , kwa mfano, HelloWorldApp.java . Inapaswa kwanza kuundwa kwenye bytecode, kwa kutumia compil Java , kuzalisha faili aitwaye HelloWorldApp.class . Hiyo basi inaweza kuuawa, au "ilizinduliwa". Faili ya chanzo cha Java inaweza kuwa na darasa moja la umma, lakini linaweza kuwa na madarasa mengi na mengine zaidi ya upatikanaji wa umma na idadi yoyote ya madarasa ya ndani ya umma. Wakati faili ya chanzo ina madarasa mengi, fanya darasa moja "umma" na jina la faili la chanzo na jina la darasa la umma.

class ambalo halitangazwa kwa public inaweza kuhifadhiwa kwenye faili yoyote ya .java. The compiler itazalisha faili ya darasani kwa kila darasa iliyotafsiriwa katika faili ya chanzo. Jina la faili ya darasa ni jina la darasa, na .class imeongezwa. Kwa kizazi cha faili, madarasa yasiyojulikana yanatendewa kama jina lao lilikuwa sambamba ya jina la darasa lao la kufungia, $ , na jumla.

Neno la msingi la public linamaanisha kwamba njia inaweza kuitwa kutoka kwa kanuni katika madarasa mengine, au kwamba darasa inaweza kutumika na madarasa nje ya utawala wa darasa. Utawala wa darasa unahusiana na jina la saraka ambayo faili ya .java iko. Hii inaitwa mpangilio wa ngazi ya upatikanaji. Nyingine cha ufikiaji vivumishi ni pamoja na maneno private na protected .

Neno la msingi static mbele ya mbinu linaonyesha njia ya tuli , inayohusishwa tu na darasa na sio na mfano wowote wa darasa hilo. Njia tu za tuli zinaweza kuingizwa bila kurejelea kitu. Njia static haiwezi kufikia wanachama wa darasa lolote ambao sio static. Njia ambazo hazitumiwa tuli ni njia za mfano na zinahitaji mfano maalum wa darasa kufanya kazi.

Keyword void inaonyesha kuwa njia kuu haina kurudi thamani yoyote kwa mpiga simu. Ikiwa mpango wa Java unatoka kwa msimbo wa hitilafu, ni lazima uita System.exit () wazi.

Jina la " main " la jina sio neno la msingi katika lugha ya Java. Ni jina tu la mbinu ya launcher ya Java kupitisha udhibiti kwenye programu. Madarasa ya Java ambayo yanaendeshwa katika mazingira yaliyosimamiwa kama applets na Enterprise JavaBeans hawatumii au wanahitaji njia main() . Programu ya Java inaweza kuwa na madarasa mengi ambayo yana mbinu main , ambayo inamaanisha kwamba VM inahitaji kufahamishwa kwa darasani ambayo ni ya kuzindua kutoka.

Mbinu kuu lazima kukubali aina ya vitu vya String . Kwa mkataba, args kama args ingawa jina lolote la kitambulisho linaweza kutumika. Tangu Java 5, mbinu kuu pia inaweza kutumia hoja za kutofautiana , kwa namna ya public static void main(String... args) wa public static void main(String... args) , kuruhusu njia kuu kuidhinishwa kwa namba ya kiholela ya hoja za String . Athari ya tangazo hili la ziada linafanana sawa (parameter ya args bado ni safu ya vitu vya String ), lakini inaruhusu syntax mbadala kwa kuunda na kupitisha safu.

Mwendeshaji wa Java huzindua Java kwa kupakia darasa lililopewa (maalum juu ya mstari wa amri au kama sifa katika JAR ) na kuanzia njia yake public static void main(String[]) . Programu za kusimama peke yake zinatakiwa kutangaza njia hii waziwazi. String[] args parameter ni safu ya vitu vya String ambavyo vina vikwazo vyovyote vinavyopitishwa kwa darasa. Vigezo vya main mara nyingi vinapitishwa kwa njia ya mstari wa amri .

Uchapishaji ni sehemu ya Java kiwango maktaba: System darasa amefafanua umma shamba tuli kuitwa out . Kitu out ni mfano wa darasa la PrintStream na hutoa njia nyingi za uchapishaji data kwa kiwango cha nje , ikiwa ni pamoja na println(String) ambayo pia huongeza mstari mpya kwenye kamba iliyopitishwa.

Kamba "Hello World!" ni moja kwa moja kubadilishwa kwa kitu cha String kwa compiler.

Masomo maalum

Applet

Applet za Java ni mipango ambayo imeingizwa katika programu nyingine, kwa kawaida kwenye ukurasa wa wavuti umeonyeshwa kwenye kivinjari cha wavuti.

// Hello.java
kuagiza javax.swing.JApplet;
kuagiza java.awt.Graphics;

darasa la umma Hello huongeza JApplet {
    umma utupu paintComponent (Graphics mwisho g) {
        g . kuteka ( "Hello, dunia!" , 65 , 95 );
    }
}

import taarifa za moja kwa moja Java compiler ni pamoja javax.swing.JApplet na java.awt.Graphics madarasa mkusanyiko. Taarifa ya kuagiza inaruhusu madarasa haya yatafanywa katika msimbo wa chanzo kwa kutumia jina la darasa rahisi (yaani JApplet ) badala ya jina la darasa la kawaida ( FQCN , yaani javax.swing.JApplet ).

Hello darasa extends ( subclasses ) JApplet (Java applet) darasa; JApplet darasa hutoa mfumo wa programu ya mwenyeji kuonyesha na kudhibiti uhai wa applet. JApplet darasa ni JComponent (Java Graphical Component) ambayo hutoa applet na uwezo wa kuonyesha interface graphical user (GUI) na kukabiliana na matukio ya mtumiaji.

Hello darasa yanapewa kipaumbele paintComponent(Graphics) njia (kuongeza unahitajika kwa ufafanuzi , aliunga mkono kama ya JDK 1.5, Override ) iliyorithiwa kutoka Container superclass kutoa code kuonyesha applet. Njia ya paintComponent() inapitishwa kitu cha Graphics ambacho kina muktadha wa picha unaotumiwa kuonyesha applet. Njia ya paintComponent() inaita muktadha wa picha ya drawString(String, int, int) njia ya kuonyesha "Sawa, ulimwengu!" kamba katika kushuka kwa pixel ya ( 65, 95 ) kutoka kona ya juu kushoto katika kuonyesha ya applet.

<! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 // EN"
"http://www.w3.org/TR/html4/strict.dtd">
<! - Hello.html ->
< html >
    < kichwa >
        < title > Hello Applet World </ title >
    </ kichwa >
    < mwili >
        < applet code = "Hello.class" width = "200" urefu = "200" >
        </ applet >
    </ mwili >
</ html >

Applet imewekwa kwenye hati ya HTML kwa kutumia <applet> kipengele cha HTML . Kitambulisho cha applet kina sifa tatu zilizowekwa: code="Hello.class" jina la darasa la JApplet na width="200" height="200" huweka upana wa pixel na urefu wa applet. Applets pia kuwa iliyoingia katika HTML kutumia aidha object au embed element, [54] ingawa msaada kwa ajili ya vipengele hivi na vivinjari haiendani. [55] Hata hivyo, applet tag imepingwa, hivyo object tag ni mkuu kuliko ambapo mkono.

Matumizi ya jeshi, kwa kawaida kivinjari cha wavuti, hujumuisha programu ya Hello na inajenga AppletContext kwa applet. Mara applet imejitambulisha yenyewe, imeongezwa kwa uongozi wa AWT. Njia ya paintComponent() inaitwa na thread ya kupeleka tukio la AWT wakati kila kuonyesha inahitaji applet kuteka yenyewe.

Huduma

Teknolojia ya Servlet Java hutoa wavuti wa Mtandao kwa njia rahisi, thabiti ya kupanua utendaji wa seva ya Mtandao na kwa kupata mifumo ya biashara iliyopo. Watumishi ni sehemu za seva za Java EE zinazozalisha majibu (kawaida kurasa za HTML ) kwa maombi (kwa kawaida maombi ya HTTP ) kutoka kwa wateja . Servlet inaweza karibu kufikiriwa kama applet inayoendesha upande wa seva-bila uso.

// Hello.java
kuagiza java.io. *;
kuingiza javax.servlet. * ;

darasa la umma Hello huongeza GenericServlet {
    umma utupu huduma (ombi mwisho ServletRequest, fainali ServletResponse majibu)
    inatupa ServletException , IOException {
        jibu . SetContentType ( "maandishi / html" );
        PrintWriter ya mwisho pw = majibu . kupataWriter ();
        jaribu {
            pw . println ( "Hello, dunia!" );
        } hatimaye {
            pw . karibu ();
        }
    }
}

Taarifa za import java.io javax.servlet cha Java ili kuingiza madarasa yote ya umma na interfaces kutoka kwa java.io na paket javax.servlet katika mkusanyiko. Vifurushi hufanya Java vizuri kwa maombi makubwa.

Hello darasa extends GenericServlet darasa; darasa la GenericServlet hutoa interface kwa seva ili kupeleka maombi kwenye servlet na kudhibiti maisha ya maisha ya servlet.

Darasa la Hello service(ServletRequest, ServletResponse) njia iliyotumiwa na interface ya Servlet kutoa service(ServletRequest, ServletResponse) ombi la huduma. Njia ya service() inapitishwa: kitu cha ServletRequest kilicho na ombi kutoka kwa mteja na kitu cha ServletResponse kinachotumiwa ili kuunda jibu ServletResponse kwa mteja. Njia ya service() inatangaza kwamba throws mbali ya ServletException na IOException ikiwa tatizo linazuia kuitikia ombi hilo.

Njia ya setContentType(String) katika kitu cha kukabiliana inaitwa kuweka aina ya maudhui ya MIME ya data iliyorejeshwa kwa "maandishi / html" . Njia ya getWriter() katika jibu inarudi kitu cha PrintWriter kinachotumiwa kuandika data iliyotumwa kwa mteja. Njia ya println(String) inaitwa kuandika "Sawa, dunia!" kamba kwa majibu na kisha njia ya close() inaitwa kufunga mwandishi wa magazeti, ambayo husababisha data iliyoandikwa kwenye mkondo ili kurejeshwa kwa mteja.

Kurasa za JavaServer

Kurasa za JavaServer (JSP) ni vipengele vya seva ya Java EE ambazo hutoa majibu, kwa kawaida kurasa za HTML , kwa maombi ya HTTP kutoka kwa wateja . JSPs kupachika Java code katika ukurasa wa HTML kwa kutumia maalum delimiters <% na %> . JSP imeandaliwa kwa servlet ya Java, programu ya Java kwa haki yake, mara ya kwanza inapatikana. Baada ya hapo, servlet inayozalishwa inajenga majibu.

Programu ya Swing

Swing ni maktaba ya interface ya mtumiaji wa jukwaa la Java SE. Inawezekana kutaja kuangalia tofauti na kujisikia kwa njia ya kuangalia na kuhisi mfumo wa Swing. Mawe ya Windows , GTK + , na Motif hutolewa na Sun. Apple hutoa pia kuangalia kwa Aqua na kujisikia kwa macOS . Ambapo kabla ya utekelezaji wa haya inaonekana na huenda ikaonekana kuwa hayatoshi, Swing katika Java SE 6 huzungumzia tatizo hili kwa kutumia zaidi ya asili ya GUI kuchora widget routines ya jukwaa msingi.

Mfano huu wa maombi Swing hujenga dirisha moja na "Sawa, ulimwengu!" ndani:

// Hello.java (Java SE 5)
kuagiza javax.swing *.,

darasa la umma Hello huongeza JFrame {
    Hello umma () {
        super ( "hello" );
        super . setDefaultCloseOperation (WindowConstants EXIT_ON_CLOSE.);
        super . kuongeza ( JLabel mpya ( "Hello, dunia!" ));
        super . pakiti ();
        super . SetVisible ( kweli );
    }

    kizuizi kikubwa cha utulivu wa umma ( mwisho wa kamba [] args ) {
        Hello mpya ();
    }
}

import kwanza kunajumuisha madarasa yote ya umma na interfaces kutoka kwenye mfuko wa javax.swing .

Hello darasa extends JFrame darasa; darasa la JFrame dirisha na bar ya kichwa na udhibiti wa karibu.

Hello() kuujenga initializes frame kwanza kwa kupiga kuujenga superclass, kupita parameter "hello" , ambayo hutumiwa kama jina dirisha la. Inasema mfumo wa setDefaultCloseOperation(int) uliorithi kutoka kwa JFrame ili kuweka operesheni ya kutosha wakati udhibiti wa karibu kwenye bar ya kichwa umechaguliwa kwa WindowConstants.EXIT_ON_CLOSE - hii inasababisha JFrame kutolewa wakati sura imefungwa (kinyume na tu siri), ambayo inaruhusu mashine ya Java ya kutoka na mpango wa kusitisha. Kisha, JLabel imeundwa kwa kamba "Sawa, ulimwengu!" na njia ya add(Component) iliyoritwa kutoka kwenye superclass ya Container inaitwa kuongeza lebo kwa sura. Njia ya pack() iliyorithi kutoka kwenye superclass ya Window inaitwa ukubwa wa dirisha na kuweka yaliyomo yake.

Njia main() inaitwa na mashine ya Java wakati mpango unapoanza. Ni instantiates mpya Hello sura na sababu ni kuonyeshwa kwa kupiga setVisible(boolean) Mbinu iliyorithiwa kutoka Component superclass kwa parameter bulin true . Mara baada ya sura itaonyeshwa, kuacha njia main haina kusababisha programu kukomesha kwa sababu thread ya kupeleka tukio la AWT inabaki kazi mpaka madirisha yote ya ngazi ya juu ya Swing yamepangwa.

Miundombinu

Mwaka wa 2004, generic ziliongezwa kwa lugha ya Java, kama sehemu ya J2SE 5.0. Kabla ya kuanzishwa kwa generic, tamko la kutofautiana kila mmoja lilikuwa la aina fulani. Kwa madarasa ya chombo, kwa mfano, hii ni tatizo kwa sababu hakuna njia rahisi ya kuunda chombo kinachokubali tu aina maalum za vitu. Vile chombo kinafanya kazi kwenye sehemu zote za darasa au interface, kwa kawaida Object , au darasa la chombo tofauti linapaswa kuundwa kwa kila darasa lililopo. Miundombinu inaruhusu kuchunguza aina ya wakati wa kuchunguza bila kuunda madarasa mengi ya chombo, kila kilicho na kificho karibu sawa. Mbali na kuwezesha msimbo wa ufanisi zaidi, tofauti za wakati wa kukimbia huzuiwa kutokea, kwa kutoa makosa ya wakati wa kukusanya. Ikiwa Java ilizuia makosa yote ya aina ya runtime ( ClassCastException 's) kutokea, itakuwa aina salama .

Mwaka 2016, mfumo wa aina alionyeshwa si kuwa salama kabisa, ilikuwa kuthibitika timamu . [56]

Ushauri

Maelekezo yaliyoelekezwa kwa Java yanajumuisha utekelezaji wa jenereta, [57] kasi, [58] utunzaji wa nambari zisizoandikwa, [59] utekelezaji wa hesabu ya kiwango kinachozunguka, [60] na historia ya udhaifu wa usalama katika utekelezaji mkuu wa Java VM HotSpot . [61]

Tumia nje ya jukwaa la Java

Lugha ya programu ya Java inahitaji uwepo wa jukwaa la programu ili mipango iliyoandaliwa ipate kutekelezwa. Oracle hutoa jukwaa la Java kwa matumizi na Java. Android SDK ni jukwaa la programu mbadala, linalotumiwa hasa kwa kuendeleza programu za Android .

Android

Mfumo wa uendeshaji wa Android hufanya matumizi makubwa ya teknolojia inayohusiana na Java.

Lugha ya Java ni nguzo muhimu katika Android , mfumo wa uendeshaji wa simu ya wazi . Ingawa Android, iliyojengwa kwenye kernel ya Linux , imeandikwa kwa kiasi kikubwa katika C, Android SDK inatumia lugha ya Java kama msingi wa maombi ya Android. Lugha ya bytecode inayotumiwa na Android SDK haiendani na Java bytecode na inaendesha kwenye mashine yake mwenyewe ya virtual, iliyoboreshwa kwa vifaa vya chini vya kumbukumbu kama vile simu za mkononi na kompyuta kibao . Kulingana na toleo la Android, bytecode inaweza kutafsiriwa na mashine ya virusi ya Dalvik au iliyoandaliwa kwenye msimbo wa asili na Runtime ya Android .

Android haitoi maktaba kamili ya Java SE, ingawa Android SDK inajumuisha utekelezaji wa kujitegemea kwa sehemu ndogo. Inasaidia Java 6 na vipengele vingine vya Java, vinavyotolewa na utekelezaji sambamba na maktaba ya kawaida ( Apache Harmony ).

Kukabiliana

Matumizi ya teknolojia inayohusiana na Java kwenye Android imesababisha mgogoro wa kisheria kati ya Oracle na Google. Mnamo Mei 7, 2012, jury la San Francisco limegundua kuwa kama API zinaweza kuwa na hati miliki, basi Google ilivunja haki miliki za Oracle kwa matumizi ya Java kwenye vifaa vya Android. [62] District Judge William Haskell ALSUP ilitawala Mei 31, 2012, ambayo APIs haiwezi hakimiliki, [63] lakini hili kuachwa na Marekani Mahakama ya Rufaa kwa Circuit Shirikisho katika Mei 2014. [64] Mnamo tarehe 26 Mei 2016, mahakama ya wilaya iliamua kwa ajili ya Google, ambayo inasimamia ukiukwaji wa hakimiliki wa API ya Java katika Android hufanya matumizi ya haki. [65]

Maktaba ya madarasa

Maktaba ya Hatari ya Java ni maktaba ya kawaida , yaliyoundwa ili kusaidia maendeleo ya maombi katika Java. Inasimamiwa na Sun Microsystems kwa ushirikiano na wengine kupitia mpango wa Jumuiya ya Jumuiya ya Java . Makampuni au watu binafsi wanaohusika katika mchakato huu wanaweza kuathiri kubuni na maendeleo ya API. Utaratibu huu umekuwa suala la utata. [ wakati? ] Maktaba ya darasa kina vipengele kama vile:

  • Maktaba ya msingi, ambayo ni pamoja na:
    • IO / NIO
    • Mtandao
    • Fikiria
    • Concurrency
    • Miundombinu
    • Script / Compiler
    • Programu ya kazi (Lambda, Streaming)
    • Maktaba ya kukusanya ambayo yanatumia miundo ya data kama vile orodha , kamusi , miti , seti , foleni na foleni ya mwisho , au magumu [66]
    • Usindikaji wa XML (Makusanyo, kugeuza, kuhakiki)
    • Usalama [67]
    • Usambazaji wa kimataifa na maktaba ya ujanibishaji [68]
  • Maktaba ya ushirikiano, ambayo inaruhusu mwandishi wa maombi kuwasiliana na mifumo ya nje. Maktaba haya ni pamoja na:
    • Java Database Kuunganishwa (JDBC) API ya upatikanaji wa database
    • Jalada la Jina la Java na Jalada (JNDI) kwa ajili ya kupiga kura na ugunduzi
    • RMI na CORBA kwa kusambazwa kwa maombi
    • JMX kwa ajili ya kusimamia na kufuatilia maombi
  • Maktaba ya interface ya mtumiaji , ambayo ni pamoja na:
    • The (heavyweight, au native ) Kikemikali ya Vitalu cha Dirisha (AWT), ambayo hutoa vipengele vya GUI , njia za kuweka vipengele hivi na njia za kushughulikia matukio kutoka kwa vipengele hivi
    • Maktaba ya (swingweight) ya Swing , yaliyojengwa kwenye AWT lakini hutoa utekelezaji (usio wa asili) utekelezaji wa widgetry ya AWT
    • API ya kukamata sauti, usindikaji, na kucheza
    • JavaFX
  • Utekelezaji wa tegemezi wa jukwaa wa mashine ya virusi ya Java ambayo ni njia ambazo bytecodes za maktaba ya Java na programu za tatu zinatibiwa
  • Plugins, ambayo inawezesha applets kukimbia katika browsers mtandao
  • Java Web Start , ambayo inaruhusu maombi ya Java kuwasambazwa kwa ufanisi kwa watumiaji wa mwisho kwenye mtandao
  • Leseni na nyaraka

Nyaraka

Javadoc ni nyaraka kamili ya nyaraka, iliyoundwa na Sun Microsystems , inayotumiwa na watengenezaji wengi wa Java [ ambao? ] . Inatoa watengenezaji na mfumo uliopangwa wa kuandika msimbo wao. Maoni ya Javadoc yana nyota ya ziada mwanzoni, yaani watangazaji ni /** na */ , ambapo maoni ya kawaida ya mstari katika Java yanawekwa na watangazaji /* na */ . [69]

Mipango

Jua limefafanua na linaunga mkono matoleo minne ya Java inayoelekea mazingira tofauti ya programu na imegawanya API zake nyingi ili wawe katika mojawapo ya jukwaa. Jukwaa ni:

  • Kadi ya Java kwa smartcards. [70]
  • Jukwaa la Java, Micro Edition (Java ME) - kulenga mazingira na rasilimali ndogo. [71]
  • Jukwaa la Java, toleo la kawaida (Java SE) - kulenga mazingira ya kazi. [72]
  • Jukwaa la Java, Toleo la Enterprise (Java EE) - kulenga biashara kubwa ya usambazaji au mazingira ya mtandao. [73]

Madarasa katika APIs ya Java hupangwa katika makundi tofauti yanayoitwa paket . Kila pakiti ina seti ya interfaces kuhusiana, madarasa, na tofauti . Rejea majukwaa tofauti kwa maelezo ya paket zilizopo. [ husika kwa sehemu hii? ]

Jua pia ilitoa toleo lililoitwa PersonalJava ambalo lilisimamishwa na baadaye, viwango vya msingi vya Java ME ya usanifu.

Angalia pia

  • Dalvik - ilitumiwa katika matoleo ya zamani ya Android, kubadilishwa na yasiyo ya JIT Android Runtime
  • JavaOne
  • Javapedia
  • Orodha ya mashine za virusi vya Java
  • Orodha ya APIs za Java
  • Orodha ya lugha za JVM
  • Graal , mradi unaojaribu kutekeleza utendaji wa juu Java compiler na mkalimani
  • Mfumo wa Spring

Kulinganisha kwa Java na lugha zingine

  • Kulinganisha lugha za programu
  • Kulinganisha kwa Java na C ++
  • Kulinganisha kwa C # na Java

Vidokezo

  1. ^ Binstock, Andrew (May 20, 2015). "Java's 20 Years of Innovation" . Forbes . Retrieved March 18, 2016 .
  2. ^ Chaudhary, Harry H. (2014-07-28). "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans" . Retrieved 2016-05-29 .
  3. ^ Java 5.0 added several new language features (the enhanced for loop , autoboxing , varargs and annotations ), after they were introduced in the similar (and competing) C# language. [1] [2]
  4. ^ Gosling, James; McGilton, Henry (May 1996). "The Java Language Environment" .
  5. ^ Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad. "The Java Language Specification, 2nd Edition" .
  6. ^ "The A-Z of Programming Languages: Modula-3" . Computerworld.com.au . Retrieved 2010-06-09 .
  7. ^ Niklaus Wirth stated on a number of public occasions, e.g. in a lecture at the Polytechnic Museum, Moscow in September 2005 (several independent first-hand accounts in Russian exist, e.g. one with an audio recording: Filippova, Elena (September 22, 2005). "Niklaus Wirth's lecture at the Polytechnic Museum in Moscow" . ), that the Sun Java design team licensed the Oberon compiler sources a number of years prior to the release of Java and examined it: a (relative) compactness, type safety, garbage collection, no multiple inheritance for classes – all these key overall design features are shared by Java and Oberon.
  8. ^ Patrick Naughton cites Objective-C as a strong influence on the design of the Java programming language, stating that notable direct derivatives include Java interfaces (derived from Objective-C's protocol ) and primitive wrapper classes. [3]
  9. ^ TechMetrix Research (1999). "History of Java" (PDF) . Java Application Servers Report . The project went ahead under the name "green" and the language was based on an old model of UCSD Pascal , which makes it possible to generate interpretive code
  10. ^ "A Conversation with James Gosling – ACM Queue" . Queue.acm.org. August 31, 2004 . Retrieved 2010-06-09 .
  11. ^ In the summer of 1996, Sun was designing the precursor to what is now the event model of the AWT and the JavaBeans TM component architecture. Borland contributed greatly to this process. We looked very carefully at Delphi Object Pascal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs. White Paper About Microsoft's "Delegates"
  12. ^ "Chapel spec (Acknowledgements)" (PDF) . Cray Inc. 2015-10-01 . Retrieved 2016-01-14 .
  13. ^ "Gambas Documentation Introduction" . Gambas Website . Retrieved 2017-10-09 .
  14. ^ "Facebook Q&A: Hack brings static typing to PHP world" . InfoWorld. March 26, 2014 . Retrieved 2015-01-11 .
  15. ^ Gosling et al. 2014 , p. 1.
  16. ^ "Write once, run anywhere?" . Computer Weekly . May 2, 2002 . Retrieved 2009-07-27 .
  17. ^ a b c "1.2 Design Goals of the Java™ Programming Language" . Oracle. January 1, 1999 . Retrieved 2013-01-14 .
  18. ^ McMillan, Robert (August 1, 2013). "Is Java Losing Its Mojo?" . wired.com . Java is on the wane, at least according to one outfit that keeps on eye on the ever-changing world of computer programming languages. For more than a decade, it has dominated the TIOBE Programming Community Index, and is back on top – a snapshot of software developer enthusiasm that looks at things like internet search results to measure how much buzz different languages have. But lately, Java has been slipping.
  19. ^ RedMonk Index on redmonk.com (Stephen O'Grady, January 2015)
  20. ^ "Programming Language Popularity" . langpop.com. October 25, 2013 . Retrieved 2015-04-02 . Normalized Comparison: 1st C, 2nd Java, 3rd PHP
  21. ^ "TIOBE Programming Community Index" . 2015 . Retrieved 2015-04-03 .
  22. ^ "JavaOne 2013 Review: Java Takes on the Internet of Things" . www.oracle.com . Retrieved 2016-06-19 .
  23. ^ Waters, John K. (September 21, 2017). "Java SE 9 and Java EE 8 Released Today" . ADTMag . Archived from the original on September 21, 2017.
  24. ^ Byous, Jon (c. 1998). "Java technology: The early years" . Sun Developer Network . Sun Microsystems . Archived from the original on April 20, 2005 . Retrieved 2005-04-22 .
  25. ^ Object-oriented programming "The History of Java Technology" . Sun Developer Network . c. 1995 . Retrieved 2010-04-30 .
  26. ^ " So why did they decide to call it Java? ", Kieron Murphy, JavaWorld.com, 10/04/96
  27. ^ Kabutz, Heinz; Once Upon an Oak . Artima. Retrieved April 29, 2007.
  28. ^ "The History of Java Technology" . Retrieved October 6, 2012 .
  29. ^ Object-oriented Programming with Java: Essentials and Applications . Tata McGraw-Hill Education. p. 34.
  30. ^ "JSG – Java Study Group" . open-std.org .
  31. ^ "Why Java™ Was – Not – Standardized Twice" (PDF) .
  32. ^ "What is ECMA—and why Microsoft cares" .
  33. ^ "Java Community Process website" . Jcp.org. May 24, 2010 . Retrieved 2010-06-09 .
  34. ^ "JAVAONE: Sun – The bulk of Java is open sourced" . GrnLight.net . Retrieved 2014-05-26 .
  35. ^ "Sun's Evolving Role as Java Evangelist" . O'Reilly Media .
  36. ^ "Oracle and Java" . oracle.com . Oracle Corporation. Archived from the original on January 31, 2010 . Retrieved 2010-08-23 . Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency.
  37. ^ "Learn About Java Technology" . Oracle . Retrieved November 21, 2011 .
  38. ^ Gosling, James (April 9, 2010). "Time to move on.." On a New Road . Archived from the original on November 5, 2010 . Retrieved 2011-11-16 .
  39. ^ Topic, Dalibor. "Moving to a Plugin-Free Web" .
  40. ^ "JAVASOFT SHIPS JAVA 1.0" . Archived from the original on March 10, 2007 . Retrieved 2008-02-05 .
  41. ^ "Is the JVM (Java Virtual Machine) platform dependent or platform independent? What is the advantage of using the JVM, and having Java be a translated language?" . Programmer Interview . Retrieved 2015-01-19 .
  42. ^ Niccolai, James (January 23, 2001). "Sun, Microsoft settle Java lawsuit" . JavaWorld . International Data Group . Retrieved 2008-07-09 .
  43. ^ Jelovic, Dejan. "Why Java will always be slower than C++" . Retrieved 2008-02-15 .
  44. ^ Google. "Loop Recognition in C++/Java/Go/Scala" (PDF) . Retrieved 2012-07-12 .
  45. ^ "Symantec's Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1" .
  46. ^ "NullPointerException" . Oracle . Retrieved 2014-05-06 .
  47. ^ "Exceptions in Java" . Artima.com . Retrieved 2010-08-10 .
  48. ^ "Java HotSpot™ Virtual Machine Performance Enhancements" . Oracle.com . Retrieved 2017-04-26 .
  49. ^ "Java HotSpot VM Options" . Oracle.com. 2010-09-07 . Retrieved 2012-06-30 .
  50. ^ "Garbage-First Collector" . docs.oracle.com .
  51. ^ "Operator Overloading (C# vs Java)" . C# for Java Developers . Microsoft . Retrieved December 10, 2014 .
  52. ^ "Multiple Inheritance of State, Implementation, and Type" . The Java™ Tutorials . Oracle . Retrieved December 10, 2014 .
  53. ^ "Lesson: A Closer Look at the "Hello World!" Application" . The Java™ Tutorials > Getting Started . Oracle Corporation . Retrieved 2011-04-14 .
  54. ^ "Using applet, object and embed Tags" . oracle.com . Retrieved 2010-10-14 .
  55. ^ "Deploying Applets in a Mixed-Browser Environment" . oracle.com . Retrieved 2010-10-14 .
  56. ^ "Java and Scala's Type Systems are Unsound" (PDF) .
  57. ^ Arnold, Ken. "Generics Considered Harmful" . java.net. Archived from the original on October 10, 2007 . Retrieved September 10, 2015 . . More comments to the original article available at earlier archive snapshots like .
  58. ^ Jelovic, Dejan. "Why Java Will Always Be Slower than C++" . www.jelovic.com . Retrieved October 17, 2012 .
  59. ^ Owens, Sean R. "Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)" . Archived from the original on February 20, 2009 . Retrieved 2011-07-04 .
  60. ^ Kahan, William. "How Java's Floating-Point Hurts Everyone Everywhere" (PDF) . Electrical Engineering & Computer Science, University of California at Berkeley . Retrieved June 4, 2011 .
  61. ^ "Have you checked the Java?" .
  62. ^ Mullin, Joe. "Google guilty of infringement in Oracle trial; future legal headaches loom" . Law & Disorder . Ars Technica . Retrieved 2012-05-08 .
  63. ^ Mullin, Joe (May 31, 2012). "Google wins crucial API ruling, Oracle's case decimated" . Ars Technica . Retrieved 2012-06-01 .
  64. ^ Rosenblatt, Seth (May 9, 2014). "Court sides with Oracle over Android in Java patent appeal" . CNET . Retrieved 2014-05-10 .
  65. ^ Mullin, Joe (2016-05-26). "Google beats Oracle—Android makes "fair use" of Java APIs" . Ars Technica . Retrieved 2016-05-26 .
  66. ^ "Collections Framework Overview" . Java Documentation . Oracle . Retrieved December 18, 2014 .
  67. ^ "Java™ Security Overview" . Java Documentation . Oracle . Retrieved December 18, 2014 .
  68. ^ "Trail: Internationalization" . The Java™ Tutorials . Oracle . Retrieved December 18, 2014 .
  69. ^ "How to Write Doc Comments for the Javadoc Tool" . Oracle Technology Network . Oracle . Retrieved December 18, 2014 .
  70. ^ "Java Card Overview" . Oracle Technology Network . Oracle . Retrieved December 18, 2014 .
  71. ^ "Java Platform, Micro Edition (Java ME)" . Oracle Technology Network . Oracle . Retrieved December 18, 2014 .
  72. ^ "Java SE" . Oracle Technology Network . Oracle . Retrieved December 18, 2014 .
  73. ^ "Java Platform, Enterprise Edition (Java EE)" . Oracle Technology Network . Oracle . Retrieved December 18, 2014 .

Marejeleo

Viungo vya nje