Java dasturlash tilini o‘rganish uchun 10 ta sabab
- 11.1 Java-ni boshqa tillar bilan taqqoslash
Tarix
Shuningdek qarang: Java (dasturiy ta’minot platformasi) § Tarix
Dyuk, Java maskoti
Jeyms Gosling, Java yaratuvchisi, 2008 yilda
The TIOBE dasturlash tilining mashhurlik ko’rsatkichi 2002 yildan 2018 yilgacha grafika. Java 2015 yil o’rtalaridan beri doimiy ravishda eng yuqori pog’onada.
Jeyms Gosling, Mayk Sheridan va Patrik Naughton Java tili loyihasini 1991 yil iyun oyida boshlagan. [23] Java dastlab interaktiv televidenie uchun ishlab chiqilgan edi, ammo u o’sha paytda raqamli kabel televideniesi sanoatida juda rivojlangan edi. [24] Dastlab til chaqirilgan Eman keyin eman Goslingning idorasi oldida turgan daraxt. Keyinchalik loyiha nomi bilan ketdi Yashil va nihoyat o’zgartirildi Java, dan Java qahvasi, kofe Indoneziya. [25] Gosling Java-ni C /C ++ tizim va dastur dasturchilari tanish bo’lgan uslub sintaksisini. [26]
Sun Microsystems 1996 yilda Java 1.0 kabi birinchi ommaviy dasturni chiqardi. [27] Va’da berdi Bir marta yozing, har qanday joyda ishga tushiring (WORA) funktsionallik, ommabop ish vaqtini bepul sarflashni ta’minlaydi platformalar. Xavfsizligi va konfiguratsiya qilinadigan xavfsizligi bilan tarmoq va fayllarga kirishga cheklovlar qo’yildi. Mayor veb-brauzerlar tez orada ishlash qobiliyatini o’zida mujassam etgan Java dasturlari veb-sahifalarida va Java tezda ommalashib ketdi. Java 1.0 kompilyatori qayta yozildi Java-da tomonidan Artur van Xof Java 1.0 til xususiyatlariga qat’iy rioya qilish. [28] Java 2 paydo bo’lishi bilan (dastlab J2SE 1.2 sifatida 1998 yil 1999 yil dekabrda chiqarilgan), yangi versiyalarda har xil turdagi platformalar uchun bir nechta konfiguratsiyalar mavjud edi. J2EE odatda server muhitida ishlaydigan korporativ dasturlar uchun texnologiyalar va API-larni o’z ichiga oladi, J2ME esa mobil ilovalar uchun optimallashtirilgan API-larga ega. Ish stoli versiyasi J2SE deb o’zgartirildi. 2006 yilda marketing maqsadida Sun yangi J2 versiyalarini shunday o’zgartirdi Java EE, Java ME va Java SE navbati bilan.
1997 yilda Sun Microsystems yaqinlashdi ISO / IEC JTC 1 standartlar tanasi va keyinchalik Ecma International Java-ni rasmiylashtirish uchun, ammo tez orada u jarayondan chiqib ketdi. [29] [30] [31] Java a qoladi amalda standart orqali boshqariladi Java jamoatchilik jarayoni. [32] Bir paytlar Sun o’zlarining aksariyat Java dasturlarini bepul bo’lishiga qaramay, ularni amalga oshirdi mulkiy dasturiy ta’minot holat. Sun, Java Enterprise System kabi ixtisoslashtirilgan mahsulotlar uchun litsenziyalarni sotish orqali Java-dan daromad oldi.
2006 yil 13-noyabrda Sun o’zining Java virtual mashinasining (JVM) katta qismini chiqardi bepul va ochiq manbali dasturiy ta’minot Shartlariga binoan (FOSS) GNU umumiy jamoat litsenziyasi (GPL). 2007 yil 8-may kuni Quyosh JVM-ning barcha asosiy kodlarini taqdim etib, jarayonni yakunladi bepul dasturiy ta’minot / Quyosh mualliflik huquqiga ega bo’lmagan kodning kichik qismidan tashqari, ochiq manbali tarqatish shartlari. [33]
Sunning vitse-prezidenti Rich Grinning ta’kidlashicha, Sunning Java bilan bog’liq ideal roli xushxabarchi. [34] Keyingi Oracle korporatsiyasi 2009–10 yillarda Sun Microsystems-ni sotib olgan Oracle o’zini ishtirok etish va shaffoflik jamoatchiligini rivojlantirish uchun tinimsiz majburiyat bilan o’zini Java texnologiyasining boshqaruvchisi deb ta’rifladi. [35] Bu Oracle-dan biroz vaqt o’tgach, Java-ning ichida Java-dan foydalanganligi uchun Google-ga qarshi da’vo qo’zg’ashiga to’sqinlik qilmadi Android SDK (qarang Android Bo’lim).
2010 yil 2 aprelda Jeyms Gosling iste’foga chiqdi Oracle. [36]
2016 yil yanvar oyida Oracle JDK 9 asosida ishlaydigan Java muhiti brauzer plaginini to’xtatishini e’lon qildi. [37]
Java dasturi noutbukdan tortib to hamma narsada ishlaydi ma’lumotlar markazlari, o’yin konsollari ilmiy superkompyuterlar. [38]
Printsiplar
Java tilini yaratishda beshta asosiy maqsad bor edi: [18]
- Bu oddiy bo’lishi kerak, ob’ektga yo’naltirilgan va tanish.
- Bu mustahkam va xavfsiz bo’lishi kerak.
- Arxitektura-neytral va ko’chma bo’lishi kerak.
- Bu yuqori ishlash bilan bajarilishi kerak.
- Bu bo’lishi kerak talqin qilingan, tishli va dinamik.
Versiyalar
2020 yil sentyabr oyidan boshlab [yangilash] , Java 8 va 11-da uzoq muddatli qo’llab-quvvatlash (LTS) versiyalari sifatida qo’llab-quvvatlanadi va LTS-ning keyingi versiyalari qo’llab-quvvatlanadi. [39] Java-ning asosiy versiyalari va chiqarilish sanalari bilan bir qatorda:
Versiya | Sana |
---|---|
JDK Beta-versiyasi | 1995 |
JDK1.0 | 1996 yil 23-yanvar [40] |
JDK 1.1 | 1997 yil 19 fevral |
J2SE 1.2 | 1998 yil 8-dekabr |
J2SE 1.3 | 2000 yil 8-may |
J2SE 1.4 | 2002 yil 6-fevral |
J2SE 5.0 | 2004 yil 30 sentyabr |
Java SE 6 | 2006 yil 11-dekabr |
Java SE 7 | 2011 yil 28-iyul |
Java SE 8 | 2014 yil 18 mart |
Java SE 9 | 2017 yil 21 sentyabr |
Java SE 10 | 2018 yil 20 mart |
Java SE 11 | 2018 yil 25 sentyabr [41] |
Java SE 12 | 2019 yil 19 mart |
Java SE 13 | 2019 yil 17 sentyabr |
Java SE 14 | 2020 yil 17 mart |
Java SE 15 | 2020 yil 15 sentyabr |
Nashrlar
Shuningdek qarang: Bepul Java dasturlari § Sinflar kutubxonasi
Quyosh turli xil dastur muhitlariga yo’naltirilgan Java-ning to’rtta nashrini aniqladi va qo’llab-quvvatladi va ko’pini segmentlarga ajratdi API-lar ular platformalardan biriga tegishli bo’lishi uchun. Platformalar:
- Java kartasi smart-kartalar uchun. [42]
- Java platformasi, Micro Edition (Java ME) – cheklangan resurslarga ega muhitni maqsad qilish. [43]
- Java platformasi, Standard Edition (Java SE) – ish stantsiyasi muhitlarini yo’naltirish. [44]
- Java platformasi, Enterprise Edition (Java EE) – yirik tarqatilgan korxona yoki Internet muhitiga yo’naltirilganlik. [45]
The sinflar Java API-larida alohida guruhlarga ajratilgan paketlar. Har bir to’plamda tegishli to’plam mavjud interfeyslar, sinflar, pastki paketlar va istisnolar.
Sun shuningdek, nashr etilgan nashrni taqdim etdi Shaxsiy Java keyinchalik standartlarga asoslangan Java ME konfiguratsiya-profil juftliklari tomonidan almashtirildi.
Ijro tizimi
Java JVM va bayt kodi
Asosiy maqolalar: Java (dasturiy ta’minot platformasi) va Java virtual mashinasi
Java-ning dizayn maqsadlaridan biri bu portativlik, ya’ni Java platformasi uchun yozilgan dasturlar har qanday apparat va operatsion tizim kombinatsiyasida shunga o’xshash ishlashi kerak, bu esa ishlash vaqtini etarli darajada qo’llab-quvvatlaydi, bu Java tili kodini oraliq vakolatxonaga kompilyatsiya qilish orqali amalga oshiriladi. Java bayt kodi, to’g’ridan-to’g’ri arxitekturaga xos o’rniga mashina kodi. Java bayt kodi ko’rsatmalari mashina kodiga o’xshaydi, ammo ular a tomonidan bajarilishi kerak virtual mashina (VM) xost apparati uchun maxsus yozilgan. Oxirgi foydalanuvchilar odatda a dan foydalaning Java ish vaqti muhiti (JRE) o’zlarining shaxsiy kompyuterlarida Java dasturlari uchun yoki veb-brauzerda o’rnatilgan Java dasturlari.
Standart kutubxonalar xostga xos xususiyatlarga, masalan, grafika, iplar va tarmoq.
Universal bayt kodidan foydalanish portlashni soddalashtiradi. Biroq, qo’shimcha xarajatlar tarjima qilish bayt kodi mashina ko’rsatmalariga kiritilgan, sharhlangan dasturlar deyarli har doim mahalliyga qaraganda sekinroq ishlaydi bajariladigan fayllar. Ayni vaqtida Ishlash vaqtida bayt-kodlarni mashina kodiga kompilyatsiya qiladigan (JIT) kompilyatorlar dastlabki bosqichdan boshlab kiritilgan. Java o’zi platformadan mustaqildir va u ishlatadigan platformaga moslashgan Java virtual mashinasi (JVM) uchun tarjima qilingan Java bayt kodi platformaning mashina tiliga. [46]
Ishlash
Asosiy maqola: Java ishlashi
Java tilida yozilgan dasturlar yozilgandan sekinroq va ko’proq xotira talab qiladigan obro’ga ega C ++ . [47] [48] Biroq, Java dasturlarini bajarish tezligi joriy etilishi bilan sezilarli darajada yaxshilandi o’z vaqtida kompilyatsiya 1997/1998 yillarda Java 1.1, [49] kodni yaxshiroq tahlil qilishni qo’llab-quvvatlovchi til funktsiyalarining qo’shilishi (ichki sinflar, StringBuilder klassi, ixtiyoriy tasdiqlar va hk) va Java virtual mashinasida optimallashtirish, masalan HotSpot 2000 yilda Quyoshning JVM standarti bo’lib qoldi. Java 1.5 bilan ishlash java.util.concurrent to’plami qo’shilishi bilan yaxshilandi, shu jumladan bepul qulflang amalga oshirish Parallel xaritalar va boshqa ko’p yadroli to’plamlar va Java 1.6 bilan yanada yaxshilandi.
JVM bo’lmagan
Ba’zi platformalar Java uchun to’g’ridan-to’g’ri apparat yordamini taklif qiladi; dasturiy ta’minot Java virtual mashinasi o’rniga qo’shimcha qurilmalarda Java bayt kodini boshqaradigan mikro tekshirgichlar mavjud, [50] va ba’zilari ARM asosidagi protsessorlarda Java bayt kodini bajarish uchun apparat yordami bo’lishi mumkin Jazel variant, garchi qo’llab-quvvatlash asosan ARMning joriy dasturlarida to’xtatilgan bo’lsa.
Xotirani avtomatik boshqarish
Java an foydalanadi avtomatik axlat yig’uvchi (AGC) xotirani boshqarish uchun ob’ektning hayot aylanishi. Dasturchi qachon ob’ektlar yaratilishini aniqlaydi va Java ish vaqti ob’ektlar ishlatilmay qolgandan keyin xotirani tiklash uchun javobgardir. Ob’ektga havolalar qolmagandan so’ng, ulanib bo’lmaydigan xotira avtomatik ravishda axlat yig’uvchi tomonidan ozod qilish huquqiga ega bo’ladi. A ga o’xshash narsa xotira oqishi dasturchining kodida keraksiz bo’lgan narsaga havola bo’lsa, odatda kerak bo’lmaydigan narsalar hali ham ishlatilayotgan idishlarda saqlanganda paydo bo’lishi mumkin. Agar mavjud bo’lmagan ob’ekt uchun usullar chaqirilsa, a nol ko’rsatkich istisno tashlanadi. [51] [52]
Java-ning xotirani avtomatik boshqarish modeli asosidagi g’oyalardan biri bu dasturchilar xotirani qo’lda boshqarishni amalga oshirish majburiyatidan xalos bo’lishdir. Ba’zi tillarda moslamalarni yaratish uchun xotira bilvosita ajratilgan suyakka dan aniq ajratilgan va ajratilgan uyum. Ikkinchi holatda, xotirani boshqarish mas’uliyati dasturchiga tegishli. Agar dastur ob’ektni taqsimlamasa, a xotira oqishi sodir bo’ladi. Agar dastur allaqachon ajratilgan xotiraga kirishga yoki uni ajratishga harakat qilsa, natija aniqlanmagan va taxmin qilish qiyin va dastur beqaror bo’lib qolishi yoki ishdan chiqishi mumkin. Yordamida qisman tuzatilishi mumkin aqlli ko’rsatgichlar, ammo bu qo’shimcha xarajatlarni va murakkablikni oshiradi. E’tibor bering, axlat yig’ish to’sqinlik qilmaydi mantiqiy xotira qochqinlar, ya’ni xotira hali ham havola qilinadigan, ammo hech qachon ishlatilmaydigan joylar.
Axlat yig’ish har qanday vaqtda yuz berishi mumkin. Ideal holda, dastur bo’sh turganida paydo bo’ladi. Agar uyumda yangi ob’ekt ajratish uchun bo’sh xotira etarli bo’lmasa, uni ishga tushirish kafolatlanadi; bu dasturning bir lahzada to’xtab qolishiga olib kelishi mumkin. Java-da xotirani aniq boshqarish mumkin emas.
Java C / C ++ uslubini qo’llab-quvvatlamaydi ko’rsatkich arifmetikasi, bu erda ob’ekt manzillari arifmetik ravishda boshqarilishi mumkin (masalan, ofset qo’shish yoki olib tashlash yo’li bilan). Bu axlat yig’uvchiga havola qilingan moslamalarni boshqa joyga ko’chirishga imkon beradi va tur xavfsizligi va xavfsizligini ta’minlaydi.
C ++ va boshqa ba’zi ob’ektga yo’naltirilgan tillarda bo’lgani kabi, Java-ning o’zgaruvchilari ibtidoiy ma’lumotlar turlari to’g’ridan-to’g’ri maydonlarda (ob’ektlar uchun) yoki suyakka (usullar uchun) emas, balki odatda ibtidoiy bo’lmagan ma’lumotlar turlari uchun to’g’ri keladi (lekin qarang) qochish tahlili ). Bu Java-ning dizaynerlari tomonidan ishlash sabablari bilan ongli ravishda qaror qilindi.
Java tarkibida bir nechta axlat yig’uvchilar mavjud. Odatiy bo’lib, HotSpot quyidagini ishlatadi parallel chiqindilarni yig’uvchi. [53] Shu bilan birga, uyumni boshqarish uchun ishlatilishi mumkin bo’lgan yana bir nechta axlat yig’uvchilar mavjud. Java dasturlarining 90% uchun Bir vaqtning o’zida Mark-Sweep (CMS) axlat yig’uvchi etarli. [54] Oracle CMS-ni “bilan” almashtirishga qaratilgan Axlat-birinchi yig’uvchi (G1). [55]
Xotirani boshqarish muammosini hal qilish, dasturchini boshqa turdagi resurslarni, masalan, tarmoq yoki ma’lumotlar bazasi ulanishlari, fayl tutqichlari va boshqalarni to’g’ri ishlash yukidan xalos qilmaydi, ayniqsa istisnolar mavjud bo’lganda. Paradoksal ravishda, axlat yig’uvchilarning mavjudligi sinflarda aniq destruktor usuliga ega bo’lish zaruriyatini yo’qotib qo’ydi va shu bilan boshqa resurslarni boshqarish qiyinlashdi. [ iqtibos kerak ]
Sintaksis
Asosiy maqola: Java sintaksis
Java Core sinflarining bog’liqlik grafigi (jdeps va bilan yaratilgan Gephi )
Java sintaksisiga asosan ta’sir ko’rsatmoqda C ++ va C. Tarkibiy, umumiy va ob’ektga yo’naltirilgan dasturlash uchun sintaksisni birlashtirgan C ++ dan farqli o’laroq, Java deyarli faqat ob’ektga yo’naltirilgan til sifatida yaratilgan. [18] Barcha kodlar sinflar ichida yozilgan va har qanday ma’lumotlar elementi, ibtidoiy ma’lumotlar turlari bundan mustasno (ya’ni butun sonlar, suzuvchi nuqta raqamlari, mantiqiy qiymatlar va belgilar), ular ishlash sabablari uchun ob’ekt emas. Java C ++ ning ba’zi mashhur jihatlarini qayta ishlatadi (masalan printf usul).
C ++ dan farqli o’laroq, Java qo’llab-quvvatlamaydi operatorning ortiqcha yuklanishi [56] yoki ko’p meros sinflar uchun, garchi bir nechta meros qo’llab-quvvatlansa interfeyslar. [57]
Java foydalanadi Izohlar C ++ bilan o’xshash. Uch xil sharh uslubi mavjud: ikkita chiziq bilan belgilangan bitta chiziq uslubi ( // ) bilan ochilgan ko’p qatorli uslub /* va bilan yopilgan */ , va Javadoc sharhlash uslubi ochildi /** va bilan yopilgan */ . Javadoc sharhlash uslubi foydalanuvchiga dastur uchun hujjat yaratish uchun Javadoc bajariladigan dasturini ishga tushirishga imkon beradi va ba’zilari o’qishi mumkin. birlashgan rivojlanish muhiti (IDE) kabi Tutilish ishlab chiquvchilarga IDE doirasida hujjatlarga kirishga ruxsat berish.
Salom dunyo misoli
An’anaviy Salom dunyo dasturi Java-da quyidagicha yozilishi mumkin: [58]
jamoat sinf HelloWorldApp jamoat statik bekor asosiy(Ip[] kamon) Tizim.chiqib.println("Salom Dunyo!"); // Ipni konsolga bosib chiqaradi. >>
Barcha manba fayllari qo’shimchani qo’shib, ular tarkibidagi umumiy sinf nomi bilan nomlanishi kerak .java , masalan, HelloWorldApp.java . Avval bayt kodiga kompilyatsiya qilinishi kerak Java kompilyatori bilan fayl ishlab chiqarish .class qo’shimchasi ( HelloWorldApp.class , Ushbu holatda). Shundan keyingina uni bajarish yoki ishga tushirish mumkin. Java manba fayli faqat bitta umumiy sinfni o’z ichiga olishi mumkin, ammo u umumiy bo’lmagan kirish modifikatori va istalgan umumiy songa ega bo’lgan bir nechta sinflarni o’z ichiga olishi mumkin ichki sinflar. Agar manba faylida bir nechta sinf mavjud bo’lsa, bitta sinfni yaratish kerak (. Tomonidan kiritilgan sinf kalit so’z) umumiy (oldin jamoat kalit so’z) va manba faylini ushbu umumiy sinf nomi bilan nomlang.
Ommaviy deb e’lon qilinmagan sinf har qanday joyda saqlanishi mumkin .java fayl. Tuzuvchi manba faylida aniqlangan har bir sinf uchun sinf faylini yaratadi. Sinf faylining nomi sinf nomi, bilan .class ilova qilingan. Sinf fayllarini yaratish uchun, noma’lum sinflar go’yo ularning nomi ularning atrofidagi sinf nomlari birikmasi bo’lganidek muomala qilinadi, a $va butun son.
The kalit so’z jamoat usulni boshqa sinflardagi koddan chaqirish mumkinligini yoki sinf sinf ierarxiyasidan tashqaridagi sinflar tomonidan ishlatilishini bildiradi. Sinf iyerarxiyasi .java fayli joylashgan katalog nomi bilan bog’liq. Bunga kirish darajasini o’zgartiruvchi deyiladi. Kirish darajasining boshqa modifikatorlari kalit so’zlarni o’z ichiga oladi xususiy (faqat bitta sinfda kirish mumkin bo’lgan usul) va himoyalangan (bir xil paketdagi kodga kirish uchun ruxsat beruvchi). Agar kodning bir qismi shaxsiy usullarga yoki himoyalangan usullarga kirishga harakat qilsa, JVM a ni tashlaydi SecurityException
Kalit so’z statik [19] usul oldida a ni bildiradi statik usul, bu faqat sinf bilan bog’liq va bu sinfning biron bir aniq namunasi bilan bog’liq emas. Ob’ektga murojaat qilmasdan faqat statik usullarni chaqirish mumkin. Statik usullar statik bo’lmagan har qanday sinf a’zolariga kira olmaydi. Statik deb belgilanmagan usullar instansiya usulidir va ishlash uchun sinfning o’ziga xos nusxasini talab qiladi.
Kalit so’z bekor asosiy usul qo’ng’iroq qiluvchiga hech qanday qiymat qaytarmasligini ko’rsatadi. Agar Java dasturi xato kodi bilan chiqmoqchi bo’lsa, u System.exit () dasturiga aniq qo’ng’iroq qilishi kerak.
Usul nomi asosiy Java tilidagi kalit so’z emas. Bu shunchaki Java launcher dasturni boshqarishni uzatishga chaqiradigan usulning nomi. Applet va kabi boshqariladigan muhitda ishlaydigan Java sinflari Enterprise JavaBeans ishlatmang yoki kerak emas asosiy () usul. Java dasturida bir nechta sinf mavjud bo’lishi mumkin asosiy usullari, ya’ni VM-ni qaysi sinfdan boshlash kerakligini aniq aytish kerak.
Asosiy usul an qabul qilishi kerak qator ning Ip ob’ektlar. Konventsiyaga ko’ra, unga quyidagicha murojaat qilinadi kamon boshqa har qanday huquqiy identifikator nomidan foydalanish mumkin bo’lsa-da. Java 5 dan boshlab, asosiy usul ham foydalanishi mumkin o’zgaruvchan dalillar shaklida public static void main (String . args) , asosiy usulni ixtiyoriy son bilan chaqirishga imkon beradi Ip dalillar. Ushbu muqobil deklaratsiyaning ta’siri semantik jihatdan bir xil (ga kamon hali ham bir qator bo’lgan parametr Ip ob’ektlar), ammo bu massivni yaratish va uzatish uchun muqobil sintaksisga imkon beradi.
Java launcher ma’lum bir sinfni yuklash orqali Java-ni ishga tushiradi (buyruq satrida yoki a-da atribut sifatida ko’rsatilgan) JAR ) va uni boshlash public static void main (String []) usul. Mustaqil dasturlar ushbu usulni aniq e’lon qilishi kerak. The Arqonlar qatori parametr an qator ning Ip sinfga berilgan har qanday argumentlarni o’z ichiga olgan ob’ektlar. Parametrlari asosiy ko’pincha a orqali uzatiladi buyruq satri.
Bosib chiqarish Java standart kutubxonasining bir qismidir: The Tizim class deb nomlangan umumiy statik maydonni belgilaydi chiqib . The chiqib ob’ekt. ning misoli PrintStream sinf va ma’lumotlarni chop etishning ko’plab usullarini taqdim etadi standart chiqib, shu jumladan println (satr) uzatilgan qatorga yangi qator qo’shiladi.
Ip “Salom Dunyo!” kompilyator tomonidan avtomatik ravishda String ob’ektiga aylantiriladi.
Uslublar bilan misol
// Bu ikkita chiziqdan foydalangan holda bitta satr sharhining misoli/* * Bu chiziq va yulduzcha yordamida ko'p satrli sharhning misoli. * Ushbu turdagi sharhlardan ko'plab ma'lumotlarni saqlash yoki o'chirish uchun foydalanish mumkin * kod, lekin sharhni yopishni unutmaslik juda muhimdir. */paket tolalar;Import java.util.Map;Import java.util.HashMap;/** * Bu Javadoc sharhining misoli; Javadoc hujjatlarni tuzishi mumkin * ushbu matndan. Javadoc sharhlari darhol sinf, usuldan oldin bo'lishi kerak, * yoki hujjatlashtirilgan maydon. * @avtor Vikipediya ko'ngillilari */jamoat sinf FibCalculator uzaytiradi Fibonachchi asboblar Kalkulyator xususiy statik XaritaButun son, Butun son> yodlangan = yangi HashMap(); /* * Quyidagi tarzda yozilgan asosiy usul JVM tomonidan boshlang'ich nuqta sifatida ishlatiladi * dastur uchun. */ jamoat statik bekor asosiy(Ip[] kamon) yodlangan.qo'yish(1, 1); yodlangan.qo'yish(2, 1); Tizim.chiqib.println(fibonachchi(12)); // 12-Fibonachchi raqamini oling va konsolga bosib chiqaring > /** * Java-da yozilgan, sinfga o'ralgan usulga misol. * Salbiy bo'lmagan FIBINDEX raqami berilgan bo'lsa, qaytadi * N-Fibonachchi raqami, bu erda N FIBINDEX ga teng. * * @param fibIndex Fibonachchi raqamining ko'rsatkichi * Fibonachchi raqamini qaytaring */ jamoat statik int fibonachchi(int fibIndex) agar (yodlangan.o'z ichiga oladiKey(fibIndex)) qaytish yodlangan.olish(fibIndex); boshqa int javob bering = fibonachchi(fibIndex - 1) + fibonachchi(fibIndex - 2); yodlangan.qo'yish(fibIndex, javob bering); qaytish javob bering; > >>
Maxsus darslar
Ushbu bo’lim uchun qo’shimcha iqtiboslar kerak tekshirish. Iltimos yordam bering ushbu maqolani yaxshilang tomonidan ishonchli manbalarga iqtiboslarni qo’shish. Ma’lumot manbasi bo’lmagan materialga qarshi chiqish va olib tashlash mumkin.
Manbalarni toping: “Java” dasturlash tili – Yangiliklar · gazetalar · kitoblar · olim · JSTOR ( 2019 yil may ) (Ushbu shablon xabarini qanday va qachon olib tashlashni bilib oling)
Olma
Asosiy maqola: Java ilovasi
Java dasturlari bo’lgan dasturlar edi ko’milgan boshqa dasturlarda, odatda veb-brauzerda ko’rsatilgan veb-sahifada. Java applet API endi 2017 yilda Java 8 dan beri eskirgan. [59] [60]
Servlet
Asosiy maqola: Java servlet
Java servlet texnologiya veb-ishlab chiquvchilarga veb-server funksiyasini kengaytirish va mavjud biznes tizimlariga kirish uchun oddiy, izchil mexanizmni taqdim etadi. Servletlar server tomoni So’rovlarga javob beradigan Java EE komponentlari mijozlar. Ko’pincha, bu ishlab chiqarishni anglatadi HTML javoban sahifalar HTTP masalan, boshqa bir qator standart servlet sinflari mavjud bo’lsa ham, so’rovlar WebSocket aloqa.
Java servlet API-si ma’lum darajada veb-xizmatlar uchun ikkita standart Java texnologiyalari tomonidan almashtirildi (lekin baribir qopqoq ostida ishlatilgan):
- The RESTful veb-xizmatlari uchun Java API (JAX-RS 2.0) AJAX, JSON va REST xizmatlari uchun foydalidir va
- The XML veb-xizmatlari uchun Java API (JAX-WS) uchun foydalidir SABUNVeb-xizmatlar.
Ushbu API-larni dastur serverlarida yoki xizmatlar konteynerlarida odatiy tatbiq etishda, HTTP so’rovlari va veb-xizmat usullariga vakolat beradigan javoblar bilan barcha o’zaro ta’sirlarni boshqarish uchun standart servlet ishlatiladi.
JavaServer sahifalari
Asosiy maqola: JavaServer sahifalari
JavaServer sahifalari (JSP) server tomoni Javoblarni ishlab chiqaradigan Java EE komponentlari, odatda HTML sahifalar, to HTTP so’rovlari mijozlar. JSP-lar Java-kodni maxsus sahifadan foydalanib HTML-sahifaga joylashtiradi ajratuvchilar . JSP Java-da tuzilgan servlet, o’z-o’zidan Java ilovasi, unga birinchi marta kirishda. Shundan so’ng, yaratilgan servlet javobni yaratadi. [61]
Sallanmaya ilova
Asosiy maqola: Swing (Java)
Belanchak grafik foydalanuvchi interfeysi kutubxona Java SE platformasi uchun. Orqali boshqa ko’rinishni va hissiyotni ko’rsatish mumkin ulanadigan ko’rinish va his qilish Swing tizimi. Klonlari Windows, GTK + va Motiv Sun tomonidan ta’minlanadi. olma shuningdek Akva qarash va his qilish macOS. Ushbu ko’rinishlar va his-tuyg’ularning oldindan tatbiq etilishi yo’q deb hisoblangan bo’lsa, Java SE 6-da almashtirish ushbu muammoni ko’proq mahalliy foydalanish orqali hal qiladi GUI vidjeti asosiy platformalarning tartiblarini chizish. [62]
JavaFX dasturi
Asosiy maqola: JavaFX
JavaFX a dasturiy ta’minot platformasi yaratish va etkazib berish uchun ish stoli dasturlari, shu qatorda; shu bilan birga boy Internet dasturlari (RIA) turli xil qurilmalar bo’ylab ishlashi mumkin. JavaFX almashtirish uchun mo’ljallangan Belanchak standart sifatida GUI uchun kutubxona Java SE, lekin JDK 11 JavaFX JDK yadrosida bo’lmagan va uning o’rniga alohida modulda bo’lgan. [63] JavaFX-ni qo’llab-quvvatlaydi ish stoli kompyuterlar va veb-brauzerlar kuni Microsoft Windows, Linux va macOS. JavaFX-da mahalliy OS ko’rinishini qo’llab-quvvatlamaydi. [64]
Generika
Asosiy maqola: Java-dagi umumiy narsalar
2004 yilda, umumiy narsalar Java tiliga J2SE 5.0 ning bir qismi sifatida qo’shildi. Umumiy ma’lumotlar kiritilishidan oldin har bir o’zgaruvchining deklaratsiyasi ma’lum bir turdagi bo’lishi kerak edi. Masalan, konteyner sinflari uchun bu muammo tug’diradi, chunki faqat ma’lum turdagi ob’ektlarni qabul qiladigan konteyner yaratish oson emas. Yoki konteyner odatda sinf yoki interfeysning barcha kichik tiplarida ishlaydi Ob’ekt yoki har bir sinf uchun boshqa konteyner sinfi yaratilishi kerak. Generics kompilyatsiya vaqtini tekshirishga imkon beradi, ularning har biri deyarli bir xil kodni o’z ichiga olgan ko’plab konteyner sinflarini yaratmasdan. Keyinchalik samarali kodni yoqish bilan bir qatorda, kompilyatsiya vaqtida xatoliklarni keltirib, ba’zi ish vaqti istisnolari paydo bo’lishining oldini oladi. Agar Java barcha ish vaqti turidagi xatolarni oldini olgan bo’lsa ( ClassCastException s) sodir bo’lishidan, shunday bo’lar edi xavfsiz turi.
2016 yilda Java-ning tipik tizimi isbotlandi asossiz. [65]
Tanqid
Asosiy maqola: Java-ni tanqid qilish
Java-ga qaratilgan tanqidlarga jeneriklarni amalga oshirish kiradi, [66] tezlik, [67] imzosiz raqamlar bilan ishlash, [68] suzuvchi nuqta arifmetikasini amalga oshirish, [69] va asosiy Java VM dasturida xavfsizlik zaifliklari tarixi HotSpot. [70]
Sinf kutubxonalari
Asosiy maqola: Java sinf kutubxonasi
The Java sinf kutubxonasi bo’ladi standart kutubxona, Java-da dasturlarni ishlab chiqishni qo’llab-quvvatlash uchun ishlab chiqilgan. U tomonidan boshqariladi Oracle orqali boshqalar bilan hamkorlikda Java jamoatchilik jarayoni dastur. [71] Ushbu jarayonda ishtirok etadigan kompaniyalar yoki jismoniy shaxslar API-larni loyihalashtirish va rivojlanishiga ta’sir ko’rsatishi mumkin. Ushbu jarayon 2010 yillar davomida tortishuvlarga sabab bo’ldi. [72] Sinf kutubxonasida quyidagi funktsiyalar mavjud:
- Asosiy kutubxonalar:
- IO /NIO
- Tarmoq (Izoh: yangi HTTP mijozi Java 11 dan beri)
- Ko’zgu
- Muvofiqlik
- Generika
- Ssenariy / kompilyator
- Funktsional dasturlash (Lambda, Oqim)
- To’plam kutubxonalari amalga oshiradigan ma’lumotlar tuzilmalari kabi ro’yxatlar, lug’atlar, daraxtlar, to’plamlar, navbat va ikki tomonlama navbat, yoki vayronalar[73]
- XML Kutubxonalarni qayta ishlash (tahlil qilish, o’zgartirish, tasdiqlash)
- Xavfsizlik[74]
- Xalqarolashtirish va mahalliylashtirish kutubxonalar [75]
- The Java ma’lumotlar bazasiga ulanish (JDBC) API ma’lumotlar bazasiga kirish uchun
- Java nomlanishi va katalog interfeysi (JNDI) qidiruv va kashfiyot uchun
- RMI va KORBA tarqatilgan dasturlarni ishlab chiqish uchun
- JMX dasturlarni boshqarish va nazorat qilish uchun
- (Og’ir vaznli yoki tug’ma ) Xulosa oynasi uchun vositalar to’plami (AWT) beradi GUI komponentlar, ushbu tarkibiy qismlarni yotqizish uchun vositalar va ushbu tarkibiy qismlardan voqealarni boshqarish vositalari
- (Engil) Belanchak AWT asosida qurilgan, lekin AWT vidjetining (mahalliy bo’lmagan) dasturlarini ta’minlaydigan kutubxonalar
- Ovozni yozib olish, qayta ishlash va ijro etish uchun API-lar
- JavaFX
Hujjatlar
Asosiy maqola: Javadoc
Javadoc – bu tomonidan yaratilgan keng qamrovli hujjatlar tizimi Quyosh mikrosistemalari. Bu ishlab chiquvchilarga o’zlarining kodlarini hujjatlashtirish uchun uyushgan tizimni taqdim etadi. Javadoc izohlari boshida qo’shimcha yulduzcha bor, ya’ni ajratuvchilar /** va */ , Java-da odatdagi ko’p satrli sharhlar ajratuvchilar bilan o’rnatiladi /* va */ , va bitta qatorli sharhlar qatordan boshlanadi // . [76]
Amaliyotlar
Shuningdek qarang: Bepul Java dasturlari
Oracle korporatsiyasi Java SE platformasini sotib olganidan so’ng rasmiy tatbiq etishning amaldagi egasi Quyosh mikrosistemalari 2010 yil 27-yanvarda. Ushbu dastur Java tomonidan Sun.ning asl dasturiga asoslangan. Oracle dasturi mavjud Microsoft Windows (hali ham XP uchun ishlaydi, faqat keyingi versiyalari hozirda rasmiy ravishda qo’llab-quvvatlanmoqda), macOS, Linux va Solaris. Java tomonidan tan olingan har qanday rasmiy standartlashtirish yo’qligi sababli Ecma International, ISO / IEC, ANSI yoki boshqa uchinchi tomon standartlari tashkilotlari, Oracle dasturini amalga oshirish amalda standart.
Oracle dasturi ikki xil tarqatishda paketlangan: Java dasturlarini ishga tushirish uchun zarur bo’lgan Java SE platformasining qismlarini o’z ichiga olgan va oxirgi foydalanuvchilar uchun mo’ljallangan Java Runtime Environment (JRE). Java Development Kit (JDK), dasturiy ta’minot ishlab chiquvchilari uchun mo’ljallangan va kabi ishlab chiqish vositalarini o’z ichiga oladi Java kompilyatori, Javadoc, Jar va a tuzatuvchi. Oracle ham chiqdi GraalVM, yuqori sifatli Java dinamik kompilyatori va tarjimoni.
OpenJDK GNU GPL bo’yicha litsenziyalangan yana bir muhim Java SE dasturidir. Amalga oshirish Sun GPL ostida Java manba kodini chiqarishni boshlaganda boshlandi. Java SE 7 dan boshlab, OpenJDK rasmiy Java mos yozuvlar dasturidir.
Java-ning maqsadi Java-ning barcha dasturlarini mos keltirishdir. Tarixga ko’ra, Sun-ning Java brendidan foydalanish uchun savdo markasi litsenziyasi barcha dasturlarning bajarilishini talab qiladi mos. Bu bilan huquqiy nizo yuzaga keldi Microsoft Sun Microsoft dasturini qo’llab-quvvatlamaydi deb da’vo qilgandan keyin RMI yoki JNI va o’zlarining platformalariga xos xususiyatlarini qo’shdilar. Sun 1997 yilda sudga murojaat qildi va 2001 yilda 20 million AQSh dollar miqdorida kelishuvga erishdi, shuningdek Sun tomonidan litsenziya shartlarini bajargan sud qarori. [77] Natijada, Microsoft endi Java-ni jo’natmaydi Windows.
Platformadan mustaqil Java muhim ahamiyatga ega Java EE va amalga oshirilishini tasdiqlash uchun yanada qat’iyroq tekshirish talab etiladi. Ushbu muhit portativ server tomonidagi dasturlarni yoqadi.
Java platformasidan tashqarida foydalaning
Java dasturlash tili kompilyatsiya qilingan dasturlarning bajarilishi uchun dasturiy ta’minot platformasining mavjudligini talab qiladi.
Oracle etkazib beradi Java platformasi Java bilan ishlatish uchun. The Android SDK asosan ishlab chiqish uchun ishlatiladigan muqobil dasturiy platformadir Android ilovalari o’z GUI tizimi bilan.
Android
The Android operatsion tizim Java bilan bog’liq texnologiyalardan keng foydalanadi
Java tili asosiy ustundir Android, an ochiq manba mobil operatsion tizim. Android-da o’rnatilgan bo’lsa-da Linux yadrosi, asosan C, the-da yozilgan Android SDK Android dasturlari uchun asos sifatida Java tilidan foydalanadi, lekin uning standart GUI, SE, ME yoki boshqa o’rnatilgan Java standartlaridan foydalanmaydi. [78] Android SDK tomonidan qo’llab-quvvatlanadigan bayt kodi tili Java bayt kodi bilan mos kelmaydi va kam xotirali qurilmalar uchun optimallashtirilgan o’z virtual mashinasida ishlaydi. smartfonlar va planshet kompyuterlar. Android versiyasiga qarab, bayt kodi tomonidan izohlanadi Dalvik virtual mashinasi yoki tomonidan mahalliy kodga kiritilgan Android ish vaqti.
Android to’liq Java SE standart kutubxonasini ta’minlamaydi, garchi Android SDK uning katta to’plamini mustaqil ravishda amalga oshirishni o’z ichiga oladi. Java 6 va ba’zi Java 7 funktsiyalarini qo’llab-quvvatlaydi, bu standart kutubxonaga mos keladigan dasturni taklif qiladi (Apache uyg’unligi ).
Qarama-qarshilik
Shuningdek qarang: Oracle America, Inc., Google, Inc.
Android-da Java bilan bog’liq texnologiyalardan foydalanish Oracle va Google o’rtasida huquqiy nizolarga olib keldi. 2012 yil 7 mayda San-Frantsiskodagi hakamlar hay’ati API-lar mualliflik huquqini himoya qilishi mumkin bo’lsa, demak Google Android qurilmalarida Java-dan foydalangan holda Oracle-ning mualliflik huquqlarini buzganligini aniqladi. [79] Tuman sudyasi Uilyam Haskell Alsup 2012 yil 31 mayda API-lar mualliflik huquqiga ega emas degan qarorga keldi, [80] ammo bu 2014 yil may oyida AQShning Federal davri apellyatsiya sudi tomonidan bekor qilingan. [81] 2016 yil 26 mayda tuman sudi Google foydasiga qaror qildi va Android-da Java API-ning mualliflik huquqining buzilishi adolatli foydalanishni anglatadi. [82] 2018 yil mart oyida ushbu qaror Apellyatsiya sudi tomonidan bekor qilindi va San-Frantsisko federal sudiga etkazilgan zararni aniqlash to’g’risidagi ishni yubordi. [83] Google sertifikat hujjatlari uchun ariza bilan murojaat qildi Amerika Qo’shma Shtatlari Oliy sudi 2019 yil yanvar oyida Oracle foydasiga Apellyatsiya sudi tomonidan chiqarilgan ikkita qarorga qarshi chiqish. [84]
Shuningdek qarang
- Kompyuter dasturlash portali
- C #
- C ++
- Dalvik, eski Android versiyalarida ishlatilgan, o’rniga JIT bo’lmagan Android ish vaqti
- Deterministik parallel Java
- Java virtual mashinalarining ro’yxati
- Java API-lari ro’yxati
- JVM tillari ro’yxati
Java-ni boshqa tillar bilan taqqoslash
- C # va Java-ni taqqoslash
- Java va C ++ tillarini taqqoslash
Adabiyotlar
- ^ Binstuk, Endryu (2015 yil 20-may). “Java-ning 20 yillik innovatsiyasi”. Forbes. Arxivlandi asl nusxasidan 2016 yil 14 martda . Olingan 18 mart, 2016 .
- ^“Java 15-ning kelishi!”. Oracle. 2020 yil 15 sentyabr . Olingan 15 sentyabr, 2020 .
- ^ abvdBarbara Liskov bilan Jon Guttag (2000). Java dasturini ishlab chiqish – mavhumlashtirish, spetsifikatsiya va ob’ektga yo’naltirilgan dizayn. AQSh, Addison Uesli. ISBN9780201657685 .
- ^ Chaudxari, Garri H. (2014 yil 28-iyul). “Java dasturlash intervyusini buzish :: 2000+ Java Interview Que / Ans” . Olingan 29 may, 2016 .
- ^ Java 5.0 bir nechta yangi til xususiyatlarini qo’shdi ( loop uchun kengaytirilgan, avtookslash, vararglar va izohlar ), ular xuddi shunday (va raqobatdosh) kiritilganidan keyin C # til. [1]Arxivlandi 2011 yil 19 mart, soat Orqaga qaytish mashinasi[2]Arxivlandi 2006 yil 7 yanvar, soat Orqaga qaytish mashinasi
- ^ Gosling, Jeyms; Makgilton, Genri (1996 yil may). “Java til muhiti”. Arxivlandi asl nusxasidan 2014 yil 6 mayda . Olingan 6 may, 2014 .
- ^ Gosling, Jeyms; Joy, Bill; Stil, Yigit; Bracha, Gilad. “Java tilining spetsifikatsiyasi, 2-nashr”. Arxivlandi asl nusxasidan 2011 yil 5 avgustda . Olingan 8 fevral, 2008 .
- ^“Dasturlash tillarining A-Z: Modula-3”. Computerworld.com.au. Arxivlandi asl nusxasi 2009 yil 5-yanvarda . Olingan 9 iyun, 2010 .
- ^Niklaus Virt bir qator ommaviy tadbirlarda bayon etilgan, masalan. 2005 yil sentyabr oyida Moskvadagi Politexnika muzeyida o’tkazilgan ma’ruzada (rus tilida bir nechta mustaqil dastlabki hisoblar mavjud, masalan, audio yozuv bilan: Filippova, Elena (2005 yil 22 sentyabr). “Moskvadagi Politexnika muzeyida Niklaus Virtning ma’ruzasi”.
- ), Sun Java dizayn jamoasi Java chiqarilishidan bir necha yil oldin Oberon kompilyator manbalarini litsenziyalashgan va uni o’rganib chiqqan: a (nisbiy) ixchamlik, turlarning xavfsizligi, axlat yig’ish, sinflar uchun ko’p meros yo’q – bularning barchasi asosiy dizayn xususiyatlari Java va Oberon tomonidan birgalikda foydalaniladi.
- ^Patrik Naughton keltiradi Maqsad-C Java dasturlash tili dizayniga kuchli ta’sir sifatida, diqqatga sazovor to’g’ridan-to’g’ri derivativlarga Java interfeyslari kiradi (Objective-C dan olingan) protokol ) va ibtidoiy o’rash sinflari. [3]Arxivlandi 2011 yil 13 iyul, soat Orqaga qaytish mashinasi
- ^ TechMetrix Research (1999). “Java tarixi” (PDF) . Java dastur serverlari haqida hisobot. Arxivlandi asl nusxasi (PDF) 2010 yil 29 dekabrda. Loyiha ushbu nom ostida amalga oshirildi yashil va til eski modelga asoslangan edi UCSD Paskal, bu izohlovchi kodni yaratishga imkon beradi.
- ^“Jeyms Gosling bilan suhbat – ACM navbati”. Queue.acm.org. 2004 yil 31 avgust. Arxivlandi asl nusxasidan 2015 yil 16 iyulda . Olingan 9 iyun, 2010 .
- ^ 1996 yil yozida Quyosh hozirgi AWT voqea modeli va JavaBeans komponentlari arxitekturasi uchun kashshofni loyihalashtirmoqda. Borland bu jarayonga katta hissa qo’shdi. Biz Delphi Object Pascal dasturiga juda sinchkovlik bilan qaradik va ularning Java dasturlash tili va uning API-lari bilan o’zaro ta’sirini tushunish uchun bog’langan usul ma’lumotnomalarining ishchi prototipini yaratdik.Microsoft delegatlari haqida oq qog’oz
- ^“Chapel spec (Rahmat)” (PDF) . Cray Inc. 2015 yil 1-oktabr. Arxivlandi (PDF) asl nusxasidan 2016 yil 5 fevralda . Olingan 14 yanvar, 2016 .
- ^“Gambas hujjatlariga kirish”. Gambas veb-sayti. Arxivlandi asl nusxasidan 2017 yil 9 oktyabrda . Olingan 9 oktyabr, 2017 .
- ^“Facebook Savol-javoblari: Hack PHP dunyosiga statik yozuvlarni olib keladi”. InfoWorld. 2014 yil 26 mart. Arxivlandi asl nusxasidan 2015 yil 13 fevralda . Olingan 11 yanvar, 2015 .
- ^“Bir marta yozing, qayerga qochasiz?”. Kompyuter haftaligi. 2002 yil 2-may . Olingan 27 iyul, 2009 .
- ^ abv“Java ™ dasturlash tilining 1.2 dizayn maqsadlari”. Oracle. 1999 yil 1-yanvar. Arxivlandi asl nusxasidan 2013 yil 23 yanvarda . Olingan 14 yanvar, 2013 .
- ^ ab McMillan, Robert (2013 yil 1-avgust). “Java o’z Mojosini yo’qotadimi?”. simli.com. Arxivlandi asl nusxasidan 2017 yil 15 fevralda . Olingan 8 mart, 2017 . Java, hech bo’lmaganda kompyuter dasturlash tillarining o’zgaruvchan dunyosini kuzatib boradigan bitta kiyimga ko’ra, kamayib bormoqda. O’n yildan oshiq vaqt mobaynida u hukmronlik qilmoqda TIOBE Dasturlash Jamiyat indekslari va yana yuqori darajaga ko’tarildi – bu turli xil tillarning qanchalik shov-shuvga ega ekanligini o’lchash uchun Internet-qidiruv natijalari kabi narsalarni ko’rib chiqadigan dasturiy ta’minot ishlab chiqaruvchilarining g’ayrati. Ammo so’nggi paytlarda Java sirg’alib bormoqda.
- ^ Chan, Rozali (22 yanvar, 2019). “Dasturchilar uchun” Facebook “ma’lumotlariga ko’ra eng mashhur 10 ta dasturlash tili ‘ “. Business Insider. Arxivlandi asl nusxasidan 2019 yil 29 iyunda . Olingan 29 iyun, 2019 .
- ^“JavaOne 2013 sharhi: Java narsalar Internetini egallaydi”. www.oracle.com. Arxivlandi asl nusxasidan 2016 yil 19 aprelda . Olingan 19 iyun, 2016 .
- Alt URL
- ^“Nima uchun Java-ning eski versiyalarini tizimimdan o’chirib tashlashim kerak?”. Oracle . Olingan 9 sentyabr, 2016 .
- ^ Byous, Jon (1998 yil). “Java texnologiyasi: dastlabki yillar”. Sun Developer Network. Quyosh mikrosistemalari. Arxivlandi asl nusxasi 2005 yil 20 aprelda . Olingan 22 aprel, 2005 .
- ^ Ob’ektga yo’naltirilgan dasturlash “Java texnologiyasining tarixi”. Sun Developer Network. v. 1995 yil. Arxivlandi asl nusxasidan 2010 yil 10 fevralda . Olingan 30 aprel, 2010 .
- ^ Merfi, Kieron (1996 yil 4 oktyabr). “Xo’sh, nima uchun ular uni Java deb atashga qaror qildilar?”. JavaWorld . Olingan 2020-07-13 .
- ^ Kabutz, Xaynts; Bir marta eman ustigaArxivlandi 2007 yil 13 aprel, soat Orqaga qaytish mashinasi. Artima. Qabul qilingan 2007 yil 29 aprel.
- ^“JAVASOFT SHIPS JAVA 1.0”. Arxivlandi asl nusxasi 2007 yil 10 martda . Olingan 13 may, 2018 .
- ^Java bilan ob’ektga yo’naltirilgan dasturlash: Essentials and Applications. Tata McGraw-Hill ta’limi. p. 34.
- ^“JSG – Java Study Group”. open-std.org. Arxivlandi asl nusxasidan 2006 yil 25 avgustda . Olingan 2 avgust, 2006 .
- ^“Nima uchun Java ™ ikki marta standartlashtirilmagan edi” (PDF) . Arxivlandi (PDF) asl nusxasidan 2014 yil 13 yanvarda . Olingan 3 iyun, 2018 .
- ^“ECMA nima va nima uchun Microsoft unga g’amxo’rlik qiladi”. Arxivlandi asl nusxasidan 2014 yil 6 mayda . Olingan 6 may, 2014 .
- ^“Java Community Process veb-sayti”. Jcp.org. 2010 yil 24 may. Arxivlandi asl nusxasidan 2006 yil 8 avgustda . Olingan 9 iyun, 2010 .
- ^“JAVAONE: Sun – Java-ning asosiy qismi ochiq manbada”. GrnLight.net. Arxivlandi asl nusxasidan 2014 yil 27 mayda . Olingan 26 may, 2014 .
- ^“Quyoshning Java Xushxabarchisi sifatida rivojlanayotgan roli”. O’Reilly Media. Arxivlandi asl nusxasidan 2010 yil 15 sentyabrda . Olingan 2 avgust, 2009 .
- ^“Oracle va Java”. oracle.com. Oracle korporatsiyasi. Asl nusxasidan 2010 yil 31 yanvarda arxivlangan . Olingan 23 avgust, 2010 . Oracle 1995 yilda paydo bo’lganidan beri Java-ning etakchi va muhim tarafdori bo’lib kelmoqda va ishtirok etish va shaffoflik jamoatchiligini rivojlantirishga qaratilgan tinimsiz majburiyat bilan Java texnologiyasining boshqaruvchisi sifatida yangi rolni o’z zimmasiga oldi. CS1 maint: BOT: original-url holati noma’lum (havola)
- ^Gosling, Jeyms (2010 yil 9-aprel). “Davom etish vaqti . “Yangi yo’lda. Asl nusxasidan arxivlangan 2010 yil 5-noyabr . Olingan 16-noyabr, 2011 . CS1 maint: BOT: original-url holati noma’lum (havola)
- ^ Mavzu, Dalibor. “Pluginsiz Internetga o’tish”. Arxivlandi asl nusxasidan 2016 yil 16 martda . Olingan 15 mart, 2016 .
- ^“Java texnologiyasi haqida bilib oling”. Oracle. Arxivlandi asl nusxasidan 2011 yil 24 noyabrda . Olingan 21-noyabr, 2011 .
- ^https://www.oracle.com/java/technologies/java-se-support-roadmap.html
- ^“JAVASOFT SHIPS JAVA 1.0”. Arxivlandi asl nusxasi 2007 yil 10 martda . Olingan 5 fevral, 2008 .
- ^ Chander, Sharat. “Java SE 11 bilan tanishish”. oracle.com. Arxivlandi asl nusxasidan 2018 yil 26 sentyabrda . Olingan 26 sentyabr, 2018 .
- ^“Java Card haqida umumiy ma’lumot”. Oracle Technology Network. Oracle. Arxivlandi asl nusxasidan 2015 yil 7 yanvarda . Olingan 18 dekabr, 2014 .
- ^“Java Platform, Micro Edition (Java ME)”. Oracle Technology Network. Oracle. Arxivlandi asl nusxasidan 2015 yil 4 yanvarda . Olingan 18 dekabr, 2014 .
- ^“Java SE”. Oracle Technology Network. Oracle. Arxivlandi asl nusxasidan 2014 yil 24 dekabrda . Olingan 18 dekabr, 2014 .
- ^“Java Platform, Enterprise Edition (Java EE)”. Oracle Technology Network. Oracle. Arxivlandi asl nusxasidan 2014 yil 17 dekabrda . Olingan 18 dekabr, 2014 .
- ^“JVM (Java Virtual Machine) platformasi bog’liqmi yoki platforma mustaqilmi? JVM dan foydalanishning afzalligi nimada va Java tarjima qilingan til bo’lishi kerakmi?”. Programmer Interview. Arxivlandi asl nusxasidan 2015 yil 19 yanvarda . Olingan 19 yanvar, 2015 .
- ^ Jelovic, Dejan. “Why Java will always be slower than C++”. Arxivlandi asl nusxasi 2008 yil 11 fevralda . Olingan 15 fevral, 2008 .
- ^ Google. “C ++ / Java / Go / Scala-da tsiklni aniqlash” (PDF) . Olingan 12 iyul, 2012 .
- ^“Symantec’s Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1”. Arxivlandi asl nusxasidan 2010 yil 28 iyunda . Olingan 1 avgust, 2009 .
- ^ Salcic, Zoran; Park, Heejong; Teich, Jürgen; Malik, Avinash; Nadeem, Muhammad (July 22, 2017). “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. ISSN1084-4309. S2CID11150290.
- ^“NullPointerException”. Oracle. Arxivlandi asl nusxasidan 2014 yil 6 mayda . Olingan 6 may, 2014 .
- ^“Exceptions in Java”. Artima.com. Arxivlandi asl nusxasidan 2009 yil 21 yanvarda . Olingan 10 avgust, 2010 .
- ^“Java HotSpot™ Virtual Machine Performance Enhancements”. Oracle.com. Arxivlandi asl nusxasidan 2017 yil 29 mayda . Olingan 26 aprel, 2017 .
- ^“Java HotSpot VM Options”. Oracle.com. 2010 yil 7 sentyabr. Arxivlandi asl nusxasidan 2011 yil 6 martda . Olingan 30 iyun, 2012 .
- ^“Garbage-First Collector”. docs.oracle.com. Arxivlandi asl nusxasidan 2016 yil 9 martda . Olingan 15 mart, 2016 .
- ^“Operator Overloading (C# vs Java)”. C# for Java Developers. Microsoft. Arxivlandi asl nusxasidan 2015 yil 7 yanvarda . Olingan 10 dekabr, 2014 .
- ^“Multiple Inheritance of State, Implementation, and Type”. Java ™ darsliklari. Oracle. Arxivlandi asl nusxasidan 2014 yil 9 noyabrda . Olingan 10 dekabr, 2014 .
- ^“Lesson: A Closer Look at the Hello World Application”. The Java™ Tutorials > Getting Started. Oracle korporatsiyasi. Arxivlandi asl nusxasidan 2011 yil 17 martda . Olingan 14 aprel, 2011 .
- ^“Deprecated APIs, Features, and Options”. www.oracle.com . Olingan 31 may, 2019 .
- ^“Applet (Java Platform SE 7 )”. docs.oracle.com . Olingan 1 may, 2020 .
- ^“What Is a JSP Page? – The Java EE 5 Tutorial”. docs.oracle.com . Olingan 1 may, 2020 .
- ^“Trail: Creating a GUI With JFC/Swing (The Java™ Tutorials)”. docs.oracle.com . Olingan 1 may, 2020 .
- ^“Removed from JDK 11, JavaFX 11 arrives as a standalone module” . Olingan 13 oktyabr, 2020 .
- ^“Getting Started with JavaFX: Hello World, JavaFX Style | JavaFX 2 Tutorials and Documentation”. docs.oracle.com . Olingan 1 may, 2020 .
- ^“Java va Scala tizimlari ovozsiz” (PDF) . Arxivlandi (PDF) asl nusxasidan 2016 yil 28 noyabrda . Olingan 20 fevral, 2017 .
- ^ Arnold, Ken. “Generics Considered Harmful”. java.net. Archived from the original on October 10, 2007 . Olingan 10 sentyabr, 2015 . CS1 maint: BOT: original-url holati noma’lum (havola)
- . More comments to the original article available at earlier archive snapshots like .
- ^ Jelovic, Dejan. “Why Java Will Always Be Slower than C++”. www.jelovic.com. Arxivlandi asl nusxasi 2008 yil 11 fevralda . Olingan 17 oktyabr, 2012 .
- ^ Owens, Sean R. “Java va unsigned int, imzosiz kalta, imzosiz bayt, imzosiz uzun va hk (yoki aksincha, uning etishmasligi)”. Arxivlandi asl nusxasi 2009 yil 20 fevralda . Olingan 4-iyul, 2011 .
- ^ Kahan, William. “Qanday qilib Java-ning suzuvchi nuqtasi hamma uchun hammani azoblaydi” (PDF) . Electrical Engineering & Computer Science, University of California at Berkeley. Arxivlandi (PDF) from the original on September 5, 2012 . Olingan 4 iyun, 2011 .
- ^“Java-ni tekshirdingizmi?”. Arxivlandi asl nusxasi 2012 yil 21 sentyabrda . Olingan 23 dekabr, 2011 .
- ^ Cadenhead, Rogers (November 20, 2017), Understanding How Java Programs Work , olingan 26 mart, 2019
- ^ Woolf, Nicky (May 26, 2016). “Google wins six-year legal battle with Oracle over Android code copyright”. The Guardian. ISSN0261-3077 . Olingan 26 mart, 2019 .
- ^“Collections Framework Overview”. Java hujjatlari. Oracle. Arxivlandi from the original on December 31, 2014 . Olingan 18 dekabr, 2014 .
- ^“Java™ Security Overview”. Java hujjatlari. Oracle. Arxivlandi from the original on January 3, 2015 . Olingan 18 dekabr, 2014 .
- ^“Trail: Internationalization”. Java ™ darsliklari. Oracle. Arxivlandi from the original on December 31, 2014 . Olingan 18 dekabr, 2014 .
- ^“How to Write Doc Comments for the Javadoc Tool”. Oracle Technology Network. Oracle. Arxivlandi from the original on December 18, 2014 . Olingan 18 dekabr, 2014 .
- ^ Niccolai, James (January 24, 2001). “Sun, Microsoft settle Java lawsuit”. JavaWorld. IDG yangiliklar xizmati . Olingan 2020-07-13 .
- ^ van Gurp, Jilles (2007 yil 13-noyabr). “Google Android: dastlabki taassurotlar va tanqid”. Javalobby . Olingan 7 mart, 2009 . Ochig’ini aytsam, nega Google u erda mavjud bo’lgan ko’plab dasturlarni e’tiborsiz qoldirmoqchi ekanligini tushunmayapman. Menga bu erda “bu erda ixtiro qilinmagan” yomon ish kabi ko’rinadi. Oxir oqibat, bu asrab olishni sekinlashtiradi. Mobil dunyo uchun allaqachon juda ko’p Java platformalari mavjud va bu yana biri
- ^ Mullin, Joe. “Google guilty of infringement in Oracle trial; future legal headaches loom”. Qonun va tartibsizlik. Ars Technica. Arxivlandi from the original on May 8, 2012 . Olingan 8 may, 2012 .
- ^ Mullin, Joe (May 31, 2012). “Google wins crucial API ruling, Oracle’s case decimated”. Ars Technica. Arxivlandi asl nusxasidan 2017 yil 12 martda . Olingan 1 iyun, 2012 .
- ^ Rosenblatt, Seth (May 9, 2014). “Court sides with Oracle over Android in Java patent appeal”. CNET. Arxivlandi asl nusxasidan 2014 yil 10 mayda . Olingan 10 may, 2014 .
- ^ Mullin, Joe (May 26, 2016). “Google beats Oracle—Android makes “fair use” of Java APIs”. Ars Technica. Arxivlandi asl nusxasidan 2017 yil 20 yanvarda . Olingan 26 may, 2016 .
- ^ Farivar, Cyrus (March 27, 2018). ” ” Google’s use of the Java API packages was not fair,” appeals court rules”. Ars Technica . Olingan 6 avgust, 2019 .
- ^ Lee, Timothy (April 23, 2019). “Google Oliy suddan API mualliflik huquqiga oid halokatli qarorni bekor qilishni so’raydi”. Ars Technica . Olingan 23 aprel, 2019 .
Asarlar keltirilgan
- Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad; Buckley, Alex (2014). The Java® Language Specification (PDF) (Java SE 8 tahr.). CS1 maint: ref = harv (havola)
- Gosling, James; Quvonch, Bill; Steele, Guy L., Jr.; Bracha, Gilad (2005). The Java Language Specification (3-nashr). Addison-Uesli. ISBN0-321-24678-0 .
- Lindxolm, Tim; Yellin, Frank (1999). Java virtual mashinasining spetsifikatsiyasi (2-nashr). Addison-Uesli. ISBN0-201-43294-3 .
Java dasturlash tilini o‘rganish uchun 10 ta sabab
Bizning hayotimizni osonlashtiradigan kuchli va kamchiliklari mavjud bo‘lgan dasturlash tillari juda ko‘p. Java esa o‘tgan 20 yil mobaynida eng yaxshi dasturlash tillaridan biri ekanini isbotladi. Vaqt o‘tishi bilan Java muvaffaqiyatli dasturlarni amalga oshirish uchun muhim tarkibiy qism sifatida o‘z o‘rnini egalladi. Dasturlash tillari mashhurligining so‘nggi indekslari Javaning eng mashhur tillardan biri ekanligini yana bir bor isbotladi.
Java dasturlash tilini o‘rganishimizda va muvaffaqiyatli dasturchi bo‘lishimizga olib keladigan sabablar quyidagilardir:
- Javani o‘rganish uchun resurslar juda-juda ko‘p
Java rivojlangan dasturiy til bo‘lib, ta’lim jarayonida mukammal ko‘makchi sifatida ishlaydigan ko‘plab onlayn resurslar mavjud. O‘zingizning ehtiyojingizga qarab, o‘rganishingiz uchun bepul va pulli ta’lim resursini bemalol topa olasiz. Qisqacha qilib aytganda, Java bilan bog‘liq bo‘lgan har qanday savollaringiz forumlarda allaqachon so‘ralgan va ularga javoblar berilgan.
Java bo‘yicha yaxshi bilimga ega dasturlovchilarga talab doimo katta. Katta imkoniyatlarga ega va keng tarqalgan dasturlash tili texnologiya sanoatida ish o‘rinlarini yaratishda davom etmoqda. Bundan tashqari, Android ilovalari mashhurligi Javadagi mobil ilovalarni yozadigan Android dasturchilar uchun juda ko‘p imkoniyatlar yaratdi.
Ob’yektga yo‘naltirilgan dasturlash tili sifatida Java’ning konsepsiyalari juda oson. Ushbu xususiyat Javani moslashuvchan, tizimli modulli va kengaytiriladigan dasturlash tiliga aylantiradi. OOP konsepsiyalaridan foydalanishda Java katta imkoniyatlar beradi.
Biz bepul va ochiq kodli dasturlarini yaxshi ko‘ramiz, shunday emasmi? OpenJDLK – Java dasturlash tilining erkin va ochiq manba kodli ilovasi. Ochiq kodli dasturlash tili bo‘lib, u operatsion tizim muhitida mustaqil platformadir. Bundan tashqari, siz Java’da dasturlarni yozish uchun bir so‘m ham pul sarflamaysiz.
Java dasturlash tilining API’lari til muvaffaqiyatining asosiy sabablaridan biri sanaladi. Java’ning ochiq kodli qo‘llab-quvvatlanadigan keng to‘plamiga egadir. Siz Java bilan ishlashda kerak bo‘ladigan barcha narsalarni bilib olishingiz mumkin.
Java uchun mavjud kuchli IDE’lar Java’ni yuqori darajada ishlatishda muhim rol o‘ynadi. Intellij Idea, Eclipse va Netbeans Java’da dasturlashni yozish jarayonida sizga yordam berishdan tashqari, ular dasturchilarga yuqori darajadagi yordamini taklif etadi.
Java dasturlash tili hamma joyda ishlatishingiz mumkin. Uning barqarorligi va kengayuvchanligi tufayli siz Java’ni mobil telefonlar, desktop dasturlar, veb-ilovalar yaratishda, keng miqyosli ilovalar va hokazolarda ishlatishingiz mumkin.
- Bu dasturlash tilidagi dasturchilarning ko‘pligi
Jahon bo‘ylab tarqalgan taxminan 10 million Java-dasturchilar bilan Java dasturchilar jamoasi o‘sishda davom etmoqda. Boshqa ochiq kodli texnologiyalar kabi Java ham jamiyatga qaytarish falsafasini ilgari suradi. Stackoverflow kabi bir nechta onlayn forumlarda Java dasturchi mutaxassislari har doim yangi o‘rganayotlarga yordam berishga tayyor.
Agar siz hali ham Java va uning qiymati borasida shubhalansangiz, siz Amazon.com, Facebook.com kabi veb-saytlarda Java ishlatilishini bilib oling. LinkedIn.com va eBay.com, bundan tashqari, korporativ dasturlarni ishlab chiqishda, «bulutli» serverlarni rivojlantirish va hokazolarda foydalaniladi.
Inglizchaga o‘xshash sintaksisi bilan, Java’ni qisqa vaqt ichida o‘rgana olasiz va foydali ilovalar yaratish uchun foydalanasiz.
Qiziqarli malumotlar
Java dasturlash tilini o‘rganish uchun 10 ta sabab