Java (programmalastırıw tili)
| Java | |
|---|---|
| Paradigmaları | Kóp paradigmalı: ulıwma, obyektke baǵdarlanǵan (klass tiykarında), funkcional, imperativ, reflektiv, parallel |
| Dóretiwshi | Djeyms Gosling |
| Baǵdarlamashı | Oracle Corporation |
| Birinshi shıǵarılıwı | 23-may 1995 |
| Turaqlı reliz | Java SE 24 / 18-mart 2025 |
| Tiplestiriw tártibi | Statikalıq, kúshli, qáwipsiz, nominativ, manifest |
| Yadtı basqarıw | Avtomat qaldıqlardı jıynaw |
| Fayl keńeytpeleri | .java, .class, .jar, .jmod, .war |
| Veb-saytı | oracle.com/java/ |
Java — joqarı dárejeli, ulıwma maqsetli, yad ushın qáwipsiz, obyektke baǵdarlanǵan programmalastırıw tili. Ol baǵdarlamashılarǵa «bir ret jazıp, hámme jerde iske túsiriwge» (WORA) imkaniyat beriwge arnalǵan,[1] yaǵnıy kompilyaciyalanǵan Java kodı Javanı qollap-quwatlaytuǵın barlıq platformalarda qayta kompilyaciyalawdı talap etpesten isley alatuǵının ańlatadı[2]. Java qosımshaları, ádette, tiykarǵı kompyuter arxitekturasına qaramastan, hár qanday Java virtual mashinası (JVM) arqalı orınlanatuǵın bayt-kodqa kompilyaciyalanadı. Javanıń sintaksisi C hám C++ tillerine uqsas, biraq olardıń ekewine qaraǵanda tómen dárejeli imkaniyatları azıraq. Java orınlaw ortalıǵı ádettegi kompilyaciyalanatuǵın tillerde ushıraspaytuǵın dinamikalıq imkaniyatlardı (mısalı, refleksiya hám orınlaw waqtında kodtı modifikaciyalaw) usınadı.
Java shıǵarılǵannan keyin tez arada ataqlılıqqa eristi hám sol waqıttan berli belgili programmalastırıw tili bolıp kelmekte[3]. GitHubtıń maǵlıwmatları boyınsha, 2022-jılı Java eń ataqlı úshinshi programmalastırıw tili boldı[4]. Ol elege shekem keńnen ataqlı bolsa da, sońǵı jılları JVM'dı qollanatuǵın basqa tillerdiń tanımalılıǵı artıwı menen Javadan paydalanıw áste-aqırın tómenlep barmaqta[5].
Javanı Djeyms Gosling Sun Microsystems kompaniyasında islep shıqqan. Ol 1995-jıldıń may ayında Sun kompaniyasınıń Java platformasınıń tiykarǵı komponenti retinde shıǵarıldı. Túpnusqa hám etalon ámelge asırıwdaǵı Java kompilyatorları, virtual mashinaları hám klasslar kitapxanaları Sun tárepinen menshikli licenziyalar tiykarında shıǵarılǵan. 2007-jıldıń may ayına kelip, Java Community Process specifikaciyalarına muwapıq, Sun óziniń kópshilik Java texnologiyaların tek ǵana GPL-2.0 licenziyası tiykarında qayta licenziyaladı. 2010-jılı Sundı satıp alǵan Oracle kompaniyası óziniń HotSpot Java Virtual Machine-ın usınadı. Degen menen, rásmiy etalon ámelge asırıw - bul OpenJDK JVM bolıp, ol kópshilik baǵdarlamashılar tárepinen qollanılatuǵın ashıq kodlı programmalıq támiynat hám derlik barlıq Linux distributivleri ushın standart JVM bolıp tabıladı.
2025-jıldıń mart ayındaǵı Java 24 aǵımdaǵı versiya bolıp esaplanadı. Java 8, 11, 17 hám 21 - uzaq múddetli qollap-quwatlaw versiyaları bolıp, olarǵa elege shekem texnikalıq xızmet kórsetilmekte.
Tariyxı


Djeyms Gosling, Mayk Sheridan hám Patrik Noton 1991-jıldıń iyun ayında Java tili joybarın basladı[6]. Java dáslep interaktiv televidenie ushın islep shıǵılǵan, biraq ol sol waqıttaǵı cifrlı kabelli televidenie sanaatı ushın júdá rawajlanǵan edi[7]. Til dáslebinde Goslingtiń keńsesiniń sırtında turǵan emen tereginiń húrmetine Oak dep atalǵan. Keyinirek joybar Green ataması menen belgili boldı hám aqırında Indoneziyadan kelip shıqqan kofe túri - Java kofesiniń atı menen Java dep qayta ataldı[8]. Gosling Javanı sistemalı hám ámeliy baǵdarlamashılarǵa tanıs bolatuǵın C/C++ stilindegi sintaksis penen islep shıqqan[9].
Sun Microsystems 1996-jılı Java 1.0 retinde birinshi jámiyetshilikke usınılǵan implementaciyasın shıǵardı[10]. Ol ataqlı platformalarda biypul orınlaw ortalıqların usınıp, «bir ret jaz, hámme jerde iske túsir» (WORA) funkcionallıǵın wáde etti. Jetkilikli qáwipsiz hám konfiguraciyalanatuǵın qáwipsizlikke iye bolıp, ol tarmaqqa hám fayllarǵa kiriwdi sheklewge ruqsat berdi. Iri veb-brauzerler tez arada veb-betler ishinde Java appletlerin iske túsiriw imkaniyatın qostı, hám Java tez arada tanımal bola basladı. Java 1.0 kompilyatorı Artur van Xoff tárepinen Java 1.0 tili specifikaciyasına qatań sáykes keliwi ushın Javada qayta jazıldı[11]. Java 2 niń (dáslep J2SE 1.2 retinde 1998-jıldıń dekabr ayında - 1999-jılları shıǵarılǵan) payda bolıwı menen, jańa versiyalarda hár qıylı platformalar ushın bir neshe konfiguraciyalar payda boldı. J2EE ádette server ortalıqlarında iske túsiriletuǵın kárxana qosımshaları ushın texnologiyalar hám API lerdi óz ishine alsa, J2ME mobil qosımshalar ushın optimallastırılǵan API lerge iye edi. Kompyuter versiyası J2SE dep qayta ataldı. 2006-jılı marketing maqsetlerinde Sun jańa J2 versiyaların sáykes túrde Java EE, Java ME hám Java SE dep qayta atadı.
1997-jılı Sun Microsystems Javanı rásmiylestiriw ushın ISO/IEC JTC 1 standartlar shólkemine, keyinirek Ecma Internationalǵa tilek-ótinishin bildirdi, biraq bul processten tez arada shıǵıp ketti[12][13][14]. Java Community Process arqalı basqarılatuǵın de-fakto standart bolıp qalmaqta[15]. Bir waqıtları Sun óziniń kópshilik Java implementaciyaların, olardıń menshikli programmalıq támiynat statusına qaramastan, biypul etip usındı. Sun Java Enterprise System sıyaqlı qánigelestirilgen ónimler ushın licenziyalardı satıw arqalı Javadan tabıs aldı.
2006-jıl 13-noyabrde Sun óziniń Java virtual mashinasınıń (JVM) úlken bólegin tek ǵana GPL-2.0 licenziyası shártlerine muwapıq biypul hám ashıq kodlı programmalıq támiynat (FOSS) retinde shıǵardı. 2007-jıl 8-mayda Sun bul processti juwmaqlap, Sun avtorlıq huqıqına iye bolmaǵan kodtıń kishkene bir bóleginen basqa, óziniń JVM tiykarǵı kodınıń barlıǵın biypul programmalıq támiynat/ashıq kodlı tarqatıw shártleri tiykarında qoljetimli etti[16].
Sun vice-prezidenti Rich Grin Sunnıń Javaǵa baylanıslı ideal roli evangelist retinde ekenligin ayttı[17]. 2009–10-jılları Oracle Corporation Sun Microsystemstı satıp alǵannan keyin, Oracle ózin qatnasıw hám ashıqlıq jámiyetshiligin rawajlandırıwǵa úziliksiz umtılısı bar Java texnologiyasınıń basqarıwshısı dep atadı[18]. Bul jaǵday tez arada Oracledıń Android SDK ishinde Javadan paydalanǵanı ushın Googleǵa qarsı sud isin ashıwına tosqınlıq etpedi (Android bólimin qarań).
2010-jıl 2-aprelde Djeyms Gosling Oracle degi jumısınan ketti[19].
2016-jıl yanvar ayında Oracle JDK 9 ǵa tiykarlanǵan Java orınlaw ortalıqları brauzer plaginin toqtatatuǵının járiyaladı[20].
Java programmalıq támiynatı noutbuklerden baslap maǵlıwmatlar oraylarına shekem, oyın konsollerinen baslap ilimiy superkompyuterlerge shekemgi kópshilik qurılmalarda isleydi[21].
Oracle (hám basqalar) eski versiyalardaǵı sheshilmegen qáwipsizlik máselelerine baylanıslı Javanıń eskirgen hám qollap-quwatlanbaytuǵın versiyaların óshirip taslawdı qatań usınıs etedi[22].
Principleri
Java tilin jaratıwda bes tiykarǵı maqset bar edi:
- Ol ápiwayı, obyektke baǵdarlanǵan hám tanıs bolıwı kerek.
- Ol isenimli hám qáwipsiz bolıwı kerek.
- Ol arxitekturaǵa biytárep hám kóshiriwge qolaylı bolıwı kerek.
- Ol joqarı ónimdarlıq penen orınlanıwı kerek.
- Ol interpretaciyalanatuǵın, kóp aǵımlı hám dinamikalı bolıwı kerek.
Versiyalar
2024-jıl noyabr ayına kelip, Java 8, 11, 17 hám 21 uzaq múddetli qollap-quwatlaw (LTS) versiyaları retinde qollap-quwatlanadı, al 2025-jıl sentyabrde shıǵarılatuǵın Java 25 kelesi jobalastırılǵan LTS versiyası boladı[23].
Oracle kompaniyası kommerciyalıq maqsette qollanıw ushın eskirgen Java 8 LTS versiyasınıń aqırǵı biypul ashıq jańalanıwın 2019-jıl yanvar ayında shıǵardı, biraq olar Java 8 di jeke maqsette qollanıw ushın ashıq jańalawlar menen sheklenbegen múddetke qollap-quwatlawdı dawam ettiredi. Adoptium sıyaqlı basqa satıwshılar OpenJDK nıń uzaq múddetli qollap-quwatlaw (LTS) versiyalarınıń biypul jıynaqların usınıwdı dawam etpekte. Bul jıynaqlar qosımsha qáwipsizlik jamawları hám qátelerdi dúzetiwlerdi óz ishine alıwı múmkin[24].
Javanıń tiykarǵı reliz versiyaları hám olardıń shıǵarılǵan sáneleri:
| Versiya | Sáne |
|---|---|
| JDK Beta | 1995 |
| JDK 1.0 | 23-yanvar, 1996[25] |
| JDK 1.1 | 19-fevral, 1997 |
| J2SE 1.2 | 8-dekabr, 1998 |
| J2SE 1.3 | 8-may, 2000 |
| J2SE 1.4 | 6-fevral, 2002 |
| J2SE 5.0 | 30-sentyabr, 2004 |
| Java SE 6 | 11-dekabr, 2006 |
| Java SE 7 | 28-iyul, 2011 |
| Java SE 8 (LTS) | 18-mart, 2014 |
| Java SE 9 | 21-sentyabr, 2017 |
| Java SE 10 | 20-mart, 2018 |
| Java SE 11 (LTS) | 25-sentyabr, 2018[26] |
| Java SE 12 | 19-mart, 2019 |
| Java SE 13 | 17-sentyabr, 2019 |
| Java SE 14 | 17-mart, 2020 |
| Java SE 15 | 15-sentyabr, 2020[27] |
| Java SE 16 | 16-mart, 2021 |
| Java SE 17 (LTS) | 14-sentyabr, 2021 |
| Java SE 18 | 22-mart, 2022 |
| Java SE 19 | 20-sentyabr, 2022 |
| Java SE 20 | 21-mart, 2023 |
| Java SE 21 (LTS) | 19-sentyabr, 2023[28] |
| Java SE 22 | 19-mart, 2024 |
| Java SE 23 | 17-sentyabr, 2024 |
| Java SE 24 | 18-mart, 2025[29] |
Basılımlar
Sun kompaniyası hár qıylı qosımshalar ortalıqlarına arnalǵan Javanıń tórt basılımın anıqladı hám qollap-quwatlaydı hám óz API leriniń kóbisin usı platformalardıń birine tiyisli bolatuǵınday etip segmentlerge bóldi. Platformalar:
- Java Card – smart-kartalar ushın[30].
- Java Platform, Micro Edition (Java ME) – sheklengen resurslarǵa iye ortalıqlarǵa arnalǵan[31].
- Java Platform, Standard Edition (Java SE) – jumıs stanciyası ortalıqlarına arnalǵan[32].
- Java Platform, Enterprise Edition (Java EE) – iri bólistirilgen korporativlik yamasa Internet ortalıqlarına arnalǵan[33].
Java API lerindegi klasslar paketler dep atalatuǵın bólek toparlarǵa shólkemlestirilgen. Hárbir paket óz-ara baylanıslı interfeysler, klasslar, ishki paketler hám ayrıqsha jaǵdaylar jıynaǵın óz ishine aladı.
Sun sonday-aq, keyinirek standartlarǵa tiykarlanǵan Java ME konfiguraciya-profil jubı menen almastırılǵan Personal Java dep atalatuǵın basılımdı usınǵan.
Orınlaw sisteması
Java JVM hám bayt-kod
Javanıń tiykarǵı dizayn maqsetleriniń biri – bul portativlik, yaǵnıy Java platforması ushın jazılǵan programmalar jetkilikli orınlaw waqtında qollap-quwatlawǵa iye bolǵan hár qanday apparatlıq támiynat hám operaciyalıq sistema kombinaciyasında birdey islewi kerek. Buǵan Java tili kodın tikkeley arxitekturaǵa tán mashina kodına emes, al Java bayt-kodı dep atalatuǵın aralıq kóriniske kompilyaciyalaw arqalı erisiledi. Java bayt-kodınıń kórsetpeleri mashina kodına uqsas, biraq olar xost apparatlıq támiynatı ushın arnawlı jazılǵan virtual mashina (VM) tárepinen orınlanıwı ushın arnalǵan. Aqırǵı paydalanıwshılar ádette ózbetinshe Java qosımshaları ushın óz qurılmalarına ornatılǵan Java orınlaw ortalıǵın (JRE) yamasa Java appletleri ushın veb-brauzerdi qollanadı.
Standart kitapxanalar grafika, aǵımlar hám tarmaq sıyaqlı xostqa tán ózgesheliklerge erisiwdiń universal usılın usınadı.
Universal bayt-kodtı qollanıw kóshiriwdi ápiwayılastıradı. Degen menen, bayt-kodtı mashinalıq kórsetpelerge interpretaciyalawdıń qosımsha júklemesi interpretaciyalanatuǵın programmalardıń tuwrıdan-tuwrı orınlanatuǵın fayllarǵa qaraǵanda derlik bárqulla ásterek islewine sebep boldı. Orınlaw waqtında bayt-kodlardı mashina kodına kompilyaciyalaytuǵın dál waqtında (JIT) kompilyatorları erte basqıshlardan baslap engizilgen. Javanıń Hotspot kompilyatorı shın mánisinde bir kompilyator ishindegi eki kompilyator bolıp esaplanadı; hám GraalVM (mısalı, Java 11 ge kirgizilgen, biraq Java 16 dan baslap alıp taslanǵan) kóp dárejeli kompilyaciyaǵa imkaniyat beredi[34]. Javanıń ózi platformaǵa ǵárezsiz bolıp, ol isleytuǵın belgili bir platformaǵa Java bayt-kodın sol platformanıń mashina tiline awdaratuǵın Java virtual mashinası (JVM) arqalı sáykeslestiriledi[35].
Ónimdarlıq
Javada jazılǵan programmalar C++ tilinde jazılǵanlarǵa qaraǵanda ásterek isleytuǵın hám kóbirek yad talap etetuǵını menen belgili[36][37]. Biraq, Java programmalarınıń orınlaw tezligi 1997/1998-jılları Java 1.1 ushın dál waqtında kompilyaciyanıń engiziliwi, jaqsıraq kod analizin qollap-quwatlaytuǵın til ózgeshelikleriniń qosılıwı (mısalı, ishki klasslar, StringBuilder klası, opcional tastıyıqlawlar, hám t.b.) hám 2000-jılı HotSpottıń Sunnıń standart JVMine aylanıwı sıyaqlı Java virtual mashinasındaǵı optimallastırıwlar menen ádewir jaqsılandı[38]. Java 1.5 penen ónimdarlıq java.util.concurrent paketiniń qosılıwı menen jaqsılandı, bul ConcurrentMaps hám basqa kóp yadrolı kollekciyalardıń bloklawsız ámelge asırılıwın óz ishine aladı, hám Java 1.6 da jáne de jetilistirildi.
JVM emes
Ayırım platformalar Java ushın tuwrıdan-tuwrı apparatlıq támiynat qollap-quwatlawın usınadı; programmalıq támiynat bolǵan Java virtual mashinasınıń ornına Java bayt-kodın apparatlıq támiynatta orınlay alatuǵın mikrokontrollerler bar, hám ayırım ARM arxitekturasına tiykarlanǵan processorlar Jazelle opciyası arqalı Java bayt-kodın orınlaw ushın apparatlıq qollap-quwatlawǵa iye bolıwı múmkin edi, biraq bul qollap-quwatlaw ARMnıń házirgi implementaciyalarınıń kópshiliginde toqtatılǵan[39].
Yadtı avtomat túrde basqarıw
Java obekttiń ómirlik ciklında yadtı basqarıw ushın avtomat shıǵındı jıynaǵıshtı qollanadı. Baǵdarlamashı obektlerdiń qashan jaratılatuǵının belgileydi, al Java orınlaw ortalıǵı obektler endi qollanılmay qalǵanda yadtı qaytarıw ushın juwapker boladı. Obektke hesh qanday siltemeler qalmaǵannan keyin, jetip bolmaytuǵın yad shıǵındı jıynaǵısh tárepinen avtomat túrde bosatılıwı múmkin boladı. Eger baǵdarlamashınıń kodı endi zárúr bolmaǵan obektke siltemeni uslap tursa, ásirese, endi kerek emes obektler házir de qollanılıp atırǵan konteynerlerde saqlansa, yadtıń aǵıp ketiwine uqsas jaǵday júz beriwi múmkin. Eger bar bolmaǵan obekt ushın metodlar shaqırılsa, null pointer exception (null kórsetkish ayrıqsha jaǵdayı) payda boladı[40][41].
Javanıń yadtı avtomat basqarıw modeliniń artında turǵan ideyalardıń biri – baǵdarlamashılardı yadtı qol menen basqarıw júginen azat etiw. Ayırım tillerde obektlerdi jaratıw ushın yad stekte jasırın túrde yamasa jıynaqtan (heap) anıq túrde ajıratıladı hám bosatıladı. Sońǵı jaǵdayda, yadtı basqarıw juwapkershiligi baǵdarlamashınıń juwapkershiliginde boladı. Eger programma obektti bosatpasa, yadtıń aǵıp ketiwi júz beredi. Eger programma aldın ala bosatılǵan yadqa kiriwge yamasa onı bosatıwǵa háreket etse, nátiyje anıqlanbaǵan hám boljaw qıyın boladı, hám programmanıń turaqsız bolıp qalıwı yamasa islemey qalıwı itimal. Bunı aqıllı kórsetkishlerdi qollanıw arqalı bir qatar sheshiwge boladı, biraq olar qosımsha júkleme hám qıyınshılıq tuwdıradı. Shıǵındılardı jıynaw logikalıq yad aǵıwlarınıń, yaǵnıy yadqa ele de silteme jasalǵan, biraq hesh qashan qollanılmaytuǵın jaǵdaylardıń aldın almaydı.
Shıǵındılardı jıynaw hár qanday waqıtta júz beriwi múmkin. Ideal jaǵdayda, bul programma háreketsiz bolǵanda júz beredi. Eger jıynaqta (heap) jańa obekt ajıratıw ushın bos yad jetkilikli bolmasa, onıń iske túsiwine kepillik beriledi; bul programmanıń bir máwritke toqtap qalıwına sebep bolıwı múmkin. Javada yadtı anıq basqarıw múmkin emes.
Java C/C++ stilindegi kórsetkishler arifmetikasın qollap-quwatlamaydı, onda obekt adreslerin arifmetikalıq túrde ózgertse boladı (mısalı, bir sandı qosıw yamasa alıw arqalı)[42]. Bul shıǵındı jıynaǵıshqa silteme berilgen obektlerdiń ornın ózgertiwge imkaniyat beredi hám tipler qáwipsizligi menen qorǵanıwın támiyinleydi.
C++ hám basqa da ayırım obektke baǵdarlanǵan tillerdegi sıyaqlı, Javanıń primitiv maǵlıwmatlar tipleriniń ózgeriwshileri, primitiv emes maǵlıwmatlar tipleri ushın ádettegidey jıynaqta (heap) emes, al tikkeley aymaqlarda (obektler ushın) yamasa stekte (metodlar ushın) saqlanadı (biraq shıǵıp ketiw analizine qarıń). Bul Javanı islep shıǵıwshılardıń ónimdarlıq sebeplerine baylanıslı sanalı túrde qabıl etken sheshimi boldı.
Java bir neshe túrdegi shıǵındı jıynaǵıshlardı óz ishine aladı. Java 9 dan baslap, HotSpot standart retinde Garbage First Garbage Collector (G1GC) shıǵındı jıynaǵıshın qollanadı[43]. Biraq, jıynaqtı basqarıw ushın qollanıwǵa bolatuǵın bir neshe basqa da shıǵındı jıynaǵıshlar bar, mısalı, Java 11 de engizilgen Z Garbage Collector (ZGC) hám Java 12 de engizilgen, biraq Oracle tárepinen islep shıǵarılǵan OpenJDK jıynaqlarında ushıraspaytuǵın Shenandoah GC. Onıń ornına, Shenandoah dı Eclipse Temurin sıyaqlı úshinshi táreplerdiń OpenJDK jıynaqlarında tabıwǵa boladı. Javadaǵı kópshilik qosımshalar ushın G1GC jetkilikli. Javanıń aldınǵı versiyalarında, mısalı, Java 8 de, Parallel Garbage Collector standart shıǵındı jıynaǵısh retinde qollanılǵan.
Yadtı basqarıw mashqalasınıń sheshilgenligi baǵdarlamashını tarmaq yamasa maǵlıwmatlar bazası baylanısları, fayl deskriptorları, hám t.b. sıyaqlı basqa túrdegi resurslardı, ásirese ayrıqsha jaǵdaylar bolǵanda, durıs basqarıw júginen azat etpeydi.
Sintaksis

Java sintaksisi tiykarınan C++ hám C tillerinen tásirlengen. Strukturalıq, ulıwma hám obyektke baǵdarlanǵan programmalastırıw sintaksisin birlestiretuǵın C++ tilinen ayırmashılıǵı, Java derlik tek ǵana obyektke baǵdarlanǵan til retinde qurılǵan. Barlıq kod klasslardıń ishinde jazıladı hám ónimdarlıqtı asırıw maqsetinde obyekt bolıp esaplanbaytuǵın primitiv maǵlıwmat tiplerinen (yaǵnıy, pútin sanlar, haqıyqıy sanlar, logikalıq mánisler hám belgiler) basqa hárbir maǵlıwmat elementi obyekt bolıp tabıladı.
C++-ten ayırmashılıǵı, Java operatorlardı artıqsha júklewdi[44] yamasa klasslar ushın kóp miyrasxorlıqtı qollap-quwatlamaydı, biraq interfeysler ushın kóp miyrasxorlıq qollap-quwatlanadı[45].
Java C++ tilindegige uqsas kommentariyalarden paydalanadı. Kommentariyalardıń úsh túrli usılı bar: eki sızıqsha (//) menen belgilengen bir qatarlı usıl, /* penen baslanıp, / menen tamamlanatuǵın kóp qatarlı usıl, hám /* penen baslanıp, */ menen tamamlanatuǵın Javadoc kommentariya usılı. Javadoc kommentariya usılı paydalanıwshıǵa programma ushın hújjetlerdi jaratıw maqsetinde Javadoc orınlawshı faylın iske túsiriwge imkaniyat beredi hám Eclipse sıyaqlı ayırım integraciyalasqan islep shıǵıw ortalıqları (IDE) tárepinen oqılıwı múmkin, bul baǵdarlamashılarǵa IDE ishinde hújjetlerge kiriw múmkinshiligin beredi.
Hello world
Tómendegi standart shıǵarıwǵa xabar jazatuǵın "Hello, World!" programmasınıń mısalı keltirilgen:
void main() {
IO.println("Hello World!");
}
Arnawlı klasslar
Applet
Java appletleri basqa qosımshalarǵa, tiykarınan veb-brauzerlerde kórsetiletuǵın veb-betlerge jaylastırılǵan programmalar edi. Java applet API 2017-jılı Java 9 shıǵarılıwı menen eskirgen dep járiyalandı[46][47].
Servlet
Java servlet texnologiyası veb-baǵdarlamashılarǵa veb-serverdiń funkcional imkaniyatların keńeytiw hám ámeldegi biznes sistemalarına kiriw ushın ápiwayı, izbe-iz mexanizmdi usınadı. Servletler - bul klientlerdiń sorawlarına juwap payda etetuǵın server táreptegi Java EE komponentleri. Kóbinese, bul HTTP sorawlarına juwap retinde HTML betlerin payda etiwdi ańlatadı, degen menen, basqa da bir qatar standart servlet klassları bar, mısalı, WebSocket baylanısı ushın.
Java servlet API belgili bir dárejede veb-xızmetler ushın eki standart Java texnologiyası menen almastırıldı (biraq ele de ishki processlerde qollanıladı):
- AJAX, JSON hám REST xızmetleri ushın paydalı bolǵan RESTful veb-xızmetleri ushın Java API (JAX-RS 2.0), hám
- SOAP veb-xızmetleri ushın paydalı bolǵan XML veb-xızmetleri ushın Java API (JAX-WS).
Bul API-lerdiń Qosımsha Serverleri yamasa Servlet Konteynerlerindegi ádettegi ámelge asırılıwı anıq biznes logikası ushın veb-xızmet metodlarına tapsırılatuǵın HTTP sorawları hám juwapları menen barlıq óz-ara tásirlerdi qayta islew ushın standart servletten paydalanadı.
JavaServer Pages
JavaServer Pages (JSP) - bul klientlerdiń HTTP sorawlarına juwap, ádette HTML betlerin payda etetuǵın server táreptegi Java EE komponentleri. JSP-ler <% hám %> arnawlı shegaralawshı belgileri arqalı Java kodın HTML betine jaylastıradı. JSP birinshi ret qollanılǵanda, ol Java servletine, yaǵnıy óz aldına Java qosımshasına kompilyaciya etiledi. Sonnan keyin, payda bolǵan servlet juwaptı jaratadı[48].
Swing qosımshası
Swing - bul Java SE platforması ushın grafikalıq paydalanıwshı interfeysi kitapxanası. Swing-tiń jalǵanatuǵın sırtqı kórinis hám sezim sisteması (pluggable look and feel system) arqalı basqasha kórinis beriw múmkin. Windows, GTK+ hám Motif klonları Sun tárepinen usınılǵan. Apple da macOS ushın Aqua sırtqı kórinisin usınadı. Bul sırtqı kórinislerdiń aldıńǵı ámelge asırılıwları jetkiliksiz dep esaplanǵan bolsa, Java SE 6 daǵı Swing bul máseleni tiykarındaǵı platformalardıń jergilikli GUI vidjetlerin sızıw rutinaların kóbirek qollanıw arqalı sheshedi[49].
JavaFX qosımshası
JavaFX - bul desktop qosımshaların, sonday-aq hár túrli qurılmalarda isley alatuǵın bay veb-qosımshalardı jaratıw hám jetkerip beriwge arnalǵan programmalıq támiynat platforması. JavaFX Java SE ushın standart grafikalıq paydalanıwshı interfeysi (GUI) kitapxanası retinde Swing-ti almastırıwǵa arnalǵan, biraq JDK 11-den baslap JavaFX tiykarǵı JDK quramında emes, al jeke modul retinde shıǵarıladı[50]. JavaFX Microsoft Windows, Linux hám macOS sistemalarındaǵı desktop kompyuterleri hám veb-brauzerlerdi qollap-quwatlaydı. JavaFX jergilikli operaciyalıq sistema sırtqı kórinislerin qollap-quwatlamaydı[51].
Ulıwmalastırıwlar (Generics)
2004-jılı J2SE 5.0 bólimi retinde Java tiline ulıwmalastırıwlar (generics) qosıldı. Ulıwmalastırıwlar kiritilgenge shekem, hárbir ózgeriwshi anıq bir tipte járiyalanıwı kerek edi. Mısalı, konteyner klassları ushın bul bir mashqala edi, sebebi tek anıq bir tiptegi obyektlerdi qabıllaytuǵın konteyner jaratıwdıń ańsat usılı joq edi. Konteyner yamasa bir klass yamasa interfeystiń barlıq kishi tipleri menen, ádette Object penen isleytuǵın edi, ya bolmasa hár bir qamtılǵan klass ushın bólek konteyner klassı jaratılıwı kerek edi. Ulıwmalastırıwlar derlik birdey kodtı óz ishine alǵan kóplegen konteyner klassların jaratpastan, kompilyaciya waqtında tiplerdi tekseriwge imkaniyat beredi. Nátiyjeli kod jaratıw menen bir qatarda, kompilyaciya waqtında qáteliklerdi kórsetiw arqalı ayırım orınlanıw waqtındaǵı qáteliklerdiń aldın aladı. Eger Java orınlanıw waqtındaǵı barlıq tip qátelikleriniń (ClassCastExceptions) júz beriwiniń aldın alǵanda, ol tip jaǵınan qáwipsiz bolatuǵın edi.
2016-jılı Java-nıń tip sisteması nadurıs ekenligi dálillendi, sebebi ulıwmalastırıwlardı (generics) paydalanıp, bir klass mısalın basqa baylanıssız klass ózgeriwshisine tayınlawǵa imkaniyat beretuǵın klasslar hám metodlar qurıw múmkin. Bunday kod kompilyator tárepinen qabıl etiledi, biraq orınlanıw waqtında klass túrin ózgertiw qáteligi (class cast exception) menen tamamlanadı[52].
Sın
Javaǵa baylanıslı sın-pikirler ulıwmalastırıwlardıń (generics) ámelge asırılıwı,[53] tezligi, belgisiz sanlar menen islesiw,[54] jıljımalı útirli arifmetikanıń ámelge asırılıwı,[55] hám tiykarǵı Java VM bolǵan HotSpot-taǵı qáwipsizlik hálsizlikleriniń tariyxın[56] óz ishine aladı. Baǵdarlamashılar Java EE-niń standart bólimi Java Persistence API (JPA) diń quramalılıǵı hám kóp sózliligin sınǵa aldı. Bul Spring Data JPA sıyaqlı joqarı dárejeli abstraktlı qatlamlardıń qabıl etiliwiniń artıwına alıp keldi, bul maǵlıwmatlar bazası operaciyaların ápiwayılastırıw hám shablon kodtı azaytıwǵa baǵdarlanǵan. Bunday freymvorklerdiń barǵan sayın keń tarqalıwı standart JPA-nıń zamanagóy Java baǵdarlamaların islep shıǵıwda qollanıw ushın qolaylılıǵında sheklewler bar ekenligin kórsetedi[57].
Derekler
- ↑ «Write once, run anywhere?». Computer Weekly (2-may 2002-jıl). 13-avgust 2021-jılda túp nusqadan arxivlendi. Qaraldı: 27-iyul 2009-jıl.
- ↑ «1.2 Design Goals of the Java Programming Language». Oracle (1-yanvar 1999-jıl). 23-yanvar 2013-jılda túp nusqadan arxivlendi. Qaraldı: 14-yanvar 2013-jıl.
- ↑ Melanson, Mike «Don't call it a comeback: Why Java is still champ». GitHub (9-avgust 2022-jıl). 25-avgust 2023-jılda túp nusqadan arxivlendi. Qaraldı: 15-oktyabr 2023-jıl.
- ↑ «The top programming languages». The State of the Octoverse. GitHub. 2-avgust 2023-jılda túp nusqadan arxivlendi. Qaraldı: 15-oktyabr 2023-jıl.
- ↑ McMillan, Robert (August 1, 2013). „Is Java Losing Its Mojo?“. Wired. February 15, 2017da túp nusqadan arxivlendi. Qaraldı: October 15, 2023.
- ↑ Byous, Jon «Java technology: The early years». Sun Developer Network. Sun Microsystems (16-dekabr 1998-jıl). 20-aprel 2005-jılda túp nusqadan arxivlendi. Qaraldı: 22-aprel 2005-jıl.
- ↑ Object-oriented programming «The History of Java Technology». Sun Developer Network (16-dekabr 1995-jıl). 10-fevral 2010-jılda túp nusqadan arxivlendi. Qaraldı: 30-aprel 2010-jıl.
- ↑ Murphy, Kieron «So why did they decide to call it Java?». JavaWorld (4-oktyabr 1996-jıl). 13-iyul 2020-jılda túp nusqadan arxivlendi. Qaraldı: 13-iyul 2020-jıl.
- ↑ Kabutz, Heinz; Once Upon an Oak Aprel 13, 2007[Sáne tuwrı kelmeydi], sánesinde Wayback Machine saytında arxivlendi.. Artima. Retrieved April 29, 2007.
- ↑ «JAVASOFT SHIPS JAVA 1.0». 10-mart 2007-jılda túp nusqadan arxivlendi. Qaraldı: 13-may 2018-jıl.
- ↑ [[[:Úlgi:Google books]] Object-oriented Programming with Java: Essentials and Applications]. Tata McGraw-Hill Education — 34 bet.
- ↑ «JSG – Java Study Group». open-std.org. 25-avgust 2006-jılda túp nusqadan arxivlendi. Qaraldı: 2-avgust 2006-jıl.
- ↑ «Why Java Was – Not – Standardized Twice». 13-yanvar 2014-jılda túp nusqadan arxivlendi. Qaraldı: 3-iyun 2018-jıl.
- ↑ «What is ECMA—and why Microsoft cares». ZDNet. 6-may 2014-jılda túp nusqadan arxivlendi. Qaraldı: 6-may 2014-jıl.
- ↑ «Java Community Process website». Jcp.org (24-may 2010-jıl). 8-avgust 2006-jılda túp nusqadan arxivlendi. Qaraldı: 9-iyun 2010-jıl.
- ↑ «JAVAONE: Sun – The bulk of Java is open sourced». GrnLight.net. 27-may 2014-jılda túp nusqadan arxivlendi. Qaraldı: 26-may 2014-jıl.
- ↑ «Sun's Evolving Role as Java Evangelist». O'Reilly Media. 15-sentyabr 2010-jılda túp nusqadan arxivlendi. Qaraldı: 2-avgust 2009-jıl.
- ↑ «Oracle and Java». oracle.com. Oracle Corporation. — „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.“. 31-yanvar 2010-jılda túp nusqadan arxivlendi. Qaraldı: 23-avgust 2010-jıl.
- ↑ Gosling, James «Time to move on...». On a New Road (9-aprel 2010-jıl). 5-noyabr 2010-jılda túp nusqadan arxivlendi. Qaraldı: 16-noyabr 2011-jıl.
- ↑ Topic, Dalibor «Moving to a Plugin-Free Web». 16-mart 2016-jılda túp nusqadan arxivlendi. Qaraldı: 15-mart 2016-jıl.
- ↑ «Learn About Java Technology». Oracle. 24-noyabr 2011-jılda túp nusqadan arxivlendi. Qaraldı: 21-noyabr 2011-jıl.
- ↑ «Why should I uninstall older versions of Java from my system?». Oracle. 12-fevral 2018-jılda túp nusqadan arxivlendi. Qaraldı: 24-sentyabr 2021-jıl.
- ↑ «Oracle Java SE Support Roadmap». Oracle (13-sentyabr 2021-jıl). 19-sentyabr 2021-jılda túp nusqadan arxivlendi. Qaraldı: 18-sentyabr 2021-jıl.
- ↑ «Temurin™ Support; Adoptium». adoptium.net. 29-mart 2024-jılda túp nusqadan arxivlendi. Qaraldı: 29-mart 2024-jıl.
- ↑ «JAVASOFT SHIPS JAVA 1.0». sun.com. 10-mart 2007-jılda túp nusqadan arxivlendi. Qaraldı: 5-fevral 2008-jıl.
- ↑ Chander, Sharat. "Introducing Java SE 11". https://blogs.oracle.com/java-platform-group/introducing-java-se-11.
- ↑ Chander, Sharat (September 15, 2020). "The Arrival of Java 15!". Oracle. https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15.
- ↑ «JDK 21». openjdk.org. 20-sentyabr 2023-jılda túp nusqadan arxivlendi. Qaraldı: 20-sentyabr 2023-jıl.
- ↑ «JDK 24».
- ↑ «Java Card Overview». Oracle Technology Network. Oracle. 7-yanvar 2015-jılda túp nusqadan arxivlendi. Qaraldı: 18-dekabr 2014-jıl.
- ↑ «Java Platform, Micro Edition (Java ME)». Oracle Technology Network. Oracle. 4-yanvar 2015-jılda túp nusqadan arxivlendi. Qaraldı: 18-dekabr 2014-jıl.
- ↑ «Java SE». Oracle Technology Network. Oracle. 24-dekabr 2014-jılda túp nusqadan arxivlendi. Qaraldı: 18-dekabr 2014-jıl.
- ↑ «Java Platform, Enterprise Edition (Java EE)». Oracle Technology Network. Oracle. 17-dekabr 2014-jılda túp nusqadan arxivlendi. Qaraldı: 18-dekabr 2014-jıl.
- ↑ «Deep Dive Into the New Java JIT Compiler – Graal | Baeldung» (en-US). www.baeldung.com (6-avgust 2021-jıl). 28-oktyabr 2021-jılda túp nusqadan arxivlendi. Qaraldı: 13-oktyabr 2021-jıl.
- ↑ «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. 19-yanvar 2015-jılda túp nusqadan arxivlendi. Qaraldı: 19-yanvar 2015-jıl.
- ↑ Jelovic, Dejan «Why Java will always be slower than C++». 11-fevral 2008-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2008-jıl.
- ↑ Hundt, Robert «Loop Recognition in C++/Java/Go/Scala». 16-noyabr 2011-jılda túp nusqadan arxivlendi. Qaraldı: 12-iyul 2012-jıl.
- ↑ «Symantec's Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1». 28-iyun 2010-jılda túp nusqadan arxivlendi. Qaraldı: 1-avgust 2009-jıl.
- ↑ Salcic, Zoran; Park, Heejong; Teich, Jürgen; Malik, Avinash; Nadeem, Muhammad (2017-07-22). "Noc-HMP: A Heterogeneous Multicore Processor for Embedded Systems Designed in SystemJ". ACM Transactions on Design Automation of Electronic Systems 22 (4): 73. doi:10.1145/3073416. ISSN 1084-4309.
- ↑ «NullPointerException». Oracle. 6-may 2014-jılda túp nusqadan arxivlendi. Qaraldı: 6-may 2014-jıl.
- ↑ «Exceptions in Java». Artima.com. 21-yanvar 2009-jılda túp nusqadan arxivlendi. Qaraldı: 10-avgust 2010-jıl.
- ↑ Walter, A. (2010). Towards Certification of Java Applications for Safety Critical Projects. Proceedings of Embedded Real-Time Software and Systems, ERTS2, 1-7.
- ↑ «Java HotSpot™ Virtual Machine Performance Enhancements». Oracle.com. 29-may 2017-jılda túp nusqadan arxivlendi. Qaraldı: 26-aprel 2017-jıl.
- ↑ «Operator Overloading (C# vs Java)». C# for Java Developers. Microsoft. 7-yanvar 2015-jılda túp nusqadan arxivlendi. Qaraldı: 10-dekabr 2014-jıl.
- ↑ «Multiple Inheritance of State, Implementation, and Type». The Java Tutorials. Oracle. 9-noyabr 2014-jılda túp nusqadan arxivlendi. Qaraldı: 10-dekabr 2014-jıl.
- ↑ «Deprecated APIs, Features, and Options». Oracle. 19-iyun 2019-jılda túp nusqadan arxivlendi. Qaraldı: 31-may 2019-jıl.
- ↑ «Applet (Java Platform SE 7)». Docs. Oracle. 2-avgust 2020-jılda túp nusqadan arxivlendi. Qaraldı: 1-may 2020-jıl.
- ↑ «What Is a JSP Page? - The Java EE 5 Tutorial». docs.oracle.com. 2-avgust 2020-jılda túp nusqadan arxivlendi. Qaraldı: 1-may 2020-jıl.
- ↑ «Trail: Creating a GUI With JFC/Swing (The Java Tutorials)». docs.oracle.com. 29-aprel 2020-jılda túp nusqadan arxivlendi. Qaraldı: 1-may 2020-jıl.
- ↑ «Removed from JDK 11, JavaFX 11 arrives as a standalone module». InfoWorld (20-sentyabr 2018-jıl). 14-oktyabr 2020-jılda túp nusqadan arxivlendi. Qaraldı: 13-oktyabr 2020-jıl.
- ↑ «Getting Started with JavaFX: Hello World, JavaFX Style». JavaFX 2 Tutorials and Documentation. Oracle. 2-avgust 2020-jılda túp nusqadan arxivlendi. Qaraldı: 1-may 2020-jıl.
- ↑ «Java and Scala's Type Systems are Unsound». 28-noyabr 2016-jılda túp nusqadan arxivlendi. Qaraldı: 20-fevral 2017-jıl.
- ↑ Arnold, Ken «Generics Considered Harmful». java.net (27-iyun 2005-jıl). 10-oktyabr 2007-jılda túp nusqadan arxivlendi. Qaraldı: 10-sentyabr 2015-jıl.
- ↑ Owens, Sean R. «Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)». 20-fevral 2009-jılda túp nusqadan arxivlendi. Qaraldı: 4-iyul 2011-jıl.
- ↑ Kahan, William «How Java's Floating-Point Hurts Everyone Everywhere – ACM 1998 Workshop on Java (Stanford)». Electrical Engineering & Computer Science, University of California at Berkeley (1-mart 1998-jıl). 5-sentyabr 2012-jılda túp nusqadan arxivlendi. Qaraldı: 4-iyun 2011-jıl.
- ↑ «Have you checked the Java?». 21-sentyabr 2012-jılda túp nusqadan arxivlendi. Qaraldı: 23-dekabr 2011-jıl.
- ↑ Chidester, Ashlan. Java Persistence API, Jenkins and AWS. ISBN 9798224253951.