JavaRush /Java blogi /Random-UZ /Java EE ga kirish
zor07
Daraja
Санкт-Петербург

Java EE ga kirish

Guruhda nashr etilgan
Bugun biz bu nima haqida gaplashamiz - Java EE: u nimadan iborat, Java EE ilovalari arxitekturasining xususiyatlari nimada va biz ushbu platformaning turli texnologiyalari tavsifini beramiz. Mavzuning o'zi keng, ammo biz asosiy narsalar bilan to'xtamaymiz. Oxir-oqibat, biz Java EE ni Spring Framework bilan kichik taqqoslaymiz va savolga javob beramiz: "nimani o'rganish yaxshiroq" (spoiler: albatta, siz hamma narsani o'rganishingiz kerak =) ) Java EE ga kirish - 1Keling, asoslardan boshlaylik.

Java EE - bu nima?

Java EE keng koʻlamli, koʻp bosqichli, kengaytiriladigan, ishonchli va xavfsiz tarmoq ilovalarini ishlab chiqish va ishga tushirish uchun API va ish vaqti muhitini taʼminlovchi Java SE ustiga qurilgan platformadir. Bunday ilovalar korporativ ilovalar deb ataladi, chunki ular yirik korxonalar duch keladigan muammolarni hal qiladi. Biroq, bu turdagi ilovalar va Java EE taqdim etayotgan imtiyozlardan nafaqat yirik korporatsiyalar va davlat idoralari foyda ko'rishlari mumkin. Java EE platformasi taklif qiladigan yechimlar individual ishlab chiquvchilar va kichik tashkilotlar uchun foydali va ba'zan oddiygina zarurdir.

Java EE rivojlanishi

Java EE 1998 yilda tashkil etilgan Java Community Process (JCP) orqali ishlab chiqilgan. Bu manfaatdor tomonlarga Java tili platformasi spetsifikatsiyalarining kelajakdagi versiyalarini shakllantirishda ishtirok etish imkonini beradi. Ushbu jarayonning asosi JSR (Java Specification Request), Java platformasiga qo'shilishi taklif qilingan spetsifikatsiyalar va texnologiyalarni tavsiflovchi rasmiy hujjatlardir. Bunday so'rovlar jamiyat a'zolari - oddiy ishlab chiquvchilar va kompaniyalar tomonidan amalga oshiriladi. Ikkinchisiga Oracle, Red Hat, IBM, Apache va boshqalar kiradi. Bular. Yigitlar Java-ga qo'shmoqchi bo'lgan yangi xususiyatlar va sovg'alarni taklif qilishadi. Va keyin ular ovoz berishadi, uning asosida keyingi versiyaga nimani kiritish to'g'risida qaror qabul qilinadi. Java EE versiyasi tarixi quyidagicha ko'rinadi:
  • J2EE 1.2 (1999 yil dekabr)
  • J2EE 1.3 (2001 yil sentyabr)
  • J2EE 1.4 (2003 yil noyabr)
  • Java EE 5 (2006 yil may)
  • Java EE 6 (2009 yil dekabr)
  • Java EE 7 (may)
  • Java EE 8 (2017 yil avgust)
  • Jakarta EE 8 (2019 yil sentyabr)
2017 yilda platformani rivojlantirishda yangi bosqich yuz berdi: Oracle Java EE ning rivojlanishi ustidan nazoratni Eclipse Foundation ga topshirdi. 2018-yil aprel oyida esa Java EE Java EE 8 bilan toʻliq mos keladigan Jakarta EE deb oʻzgartirildi.

Java EE ilovalari arxitekturasi

Qisqacha kirish. Tushunishni osonlashtirish uchun keling, Java EE ilovalarining tuzilishi va bundan keyin foydalanadigan ba'zi atamalar haqida gapiraylik. Java EE ilovalari ikkita asosiy xususiyatga ega tuzilishga ega:
  • Birinchidan, ko'p darajali. Java EE ilovalari ko'p bosqichli bo'lib, biz bu haqda batafsilroq gaplashamiz;
  • ikkinchidan, uy qurish. Java EE serveri (yoki dastur serveri) mavjud bo'lib, uning ichida komponent konteynerlari joylashgan. Ushbu konteynerlarda (bingo!) komponentlar mavjud.
Java EE ilovalari arxitekturasini tushuntirish uchun avval qatlamlar haqida gapiraylik. Qanday darajalar bor? Qanday Java EE texnologiyalari turli darajalarda qo'llaniladi? Keyinchalik, dastur serverlari, komponent konteynerlari va komponentlarning o'zlari qanday qilib o'zaro bog'langanligini muhokama qilamiz. Ammo shuni yodda tutingki, bularning barchasi bir xil nuqtai nazardan qarashlardir va bu erda tartib unchalik muhim emas.

Ilova darajalari

Ko'p bosqichli ilovalar - bu funktsional printsiplarga ko'ra izolyatsiyalangan modullarga (darajalar, qatlamlar) bo'lingan ilovalar. Odatda (shu jumladan Java EE rivojlanishi kontekstida) korporativ ilovalar uch darajaga bo'linadi:
  • mijoz;
  • o'rtacha darajasi;
  • ma'lumotlarga kirish darajasi.
  1. Mijoz darajasi Java EE serveridan (o'rta qatlam) ma'lumotlarni so'raydigan dasturdir. Server, o'z navbatida, mijozning so'rovini qayta ishlaydi va unga javob qaytaradi. Mijoz ilovasi brauzer, mustaqil dastur (mobil yoki ish stoli) yoki grafik interfeysi bo'lmagan boshqa server ilovalari bo'lishi mumkin.

  2. O'rta daraja, o'z navbatida, veb darajasiga va biznes mantiqiy darajasiga bo'linadi.

    1. Veb-qatlam mijozlar va biznes mantiqiy qatlami o'rtasidagi o'zaro ta'sirni ta'minlaydigan ba'zi komponentlardan iborat.

      Veb darajasida quyidagi Java EE texnologiyalaridan foydalaniladi:

      • JavaServer Faces texnologiyasi (JSF);
      • Java server sahifalari (JSP);
      • Ifoda tili (EL);
      • Servletlar;
      • Java EE (CDI) uchun kontekstlar va qaramlik kiritish.

    2. Biznes mantiqiy qatlami dasturning barcha biznes mantiqini amalga oshiradigan komponentlardan iborat. Biznes mantig'i - bu muayyan biznes sohasi (moliyaviy sanoat, bank ishi, elektron tijorat) ehtiyojlarini qoplaydigan funksionallikni ta'minlovchi kod. Bu darajani butun tizimning yadrosi deb hisoblash mumkin.

      Ushbu darajadagi texnologiyalar:

      • Enterprise JavaBeans (EJB);
      • JAX-RS RESTful veb-xizmatlari;
      • Java Persistence API ob'ektlari;
      • Java xabarlar xizmati.

  3. Ma'lumotlarga kirish darajasi. Bu daraja ba'zan korporativ axborot tizimlari darajasi (EIS) deb ataladi. EIS turli xil ma'lumotlar bazasi serverlaridan, ERP (Korxona resurslarini rejalashtirish) korporativ resurslarni rejalashtirish tizimlari va boshqa ma'lumotlar manbalaridan iborat. Biznes mantiqiy qatlami ma'lumotlar uchun ushbu qatlamga kiradi.

    Ushbu darajada siz quyidagi texnologiyalarni topishingiz mumkin:

    • Java Database Connectivity API (JDBC);
    • Java Persistence API;
    • Java EE ulagichi arxitekturasi;
    • Java Transaction API (JTA).

Ilova serverlari, konteynerlar, komponentlar

Keling, Vikipediyadagi Java EE ta'rifini ko'rib chiqaylik. Java EE - bu o'rta va yirik korxonalar vazifalari uchun server platformasi arxitekturasini tavsiflovchi Java tili uchun spetsifikatsiyalar va tegishli hujjatlar to'plami. Ushbu kontekstda "spetsifikatsiyalar to'plami" nimani anglatishini yaxshiroq tushunish uchun Java interfeysi bilan o'xshashlik keltiramiz. Java interfeysining o'zi funksionallikdan mahrum. Bu shunchaki shartnomani belgilaydi, unga ko'ra ba'zi funksiyalar amalga oshiriladi. Ammo boshqa sinflar interfeysni amalga oshiradi. Bundan tashqari, bitta interfeys bir nechta ilovalarga ega bo'lishi mumkin, ularning har biri ba'zi tafsilotlarda bir-biridan farq qilishi mumkin. Spetsifikatsiya bilan hamma narsa bir xil. Yalang'och Java EE - bu shunchaki spetsifikatsiyalar to'plami. Ushbu spetsifikatsiyalar turli Java EE serverlari tomonidan amalga oshiriladi. Java EE serveri Java EE platformasi API-larini amalga oshiradigan va standart Java EE xizmatlarini taqdim etadigan server ilovasi. Java EE serverlari ba'zan dastur serverlari deb ataladi. Server ma'lumotlari dastur komponentlarini o'z ichiga olishi mumkin, ularning har biri ko'p darajali ierarxiyada o'z darajasiga mos keladi. Java EE serveri ushbu komponentlarga konteyner shaklida turli xizmatlarni taqdim etadi. Konteynerlar - ular joylashtirilgan komponentlar va komponentni qo'llab-quvvatlaydigan past darajadagi platformadan mustaqil funksionallik o'rtasidagi interfeys. Konteynerlar o'zlari joylashgan komponentlarga maxsus xizmatlarni taqdim etadilar. Masalan, rivojlanishning hayot aylanishini boshqarish, bog'liqlikni in'ektsiya qilish, parallellik va boshqalar. Konteynerlar texnik murakkablikni yashiradi va portativlikni oshiradi. Java EE da to'rt xil konteyner turlari mavjud:
  1. Applet konteynerlari ko'pchilik brauzerlar tomonidan amalga oshiriladi. Appletlarni ishlab chiqishda siz diqqatni ilovaning vizual tomoniga qaratishingiz mumkin, konteyner esa xavfsiz muhitni ta'minlaydi.

  2. Application Client Container (ACC) Java SE ilovalarida in'ektsiya, xavfsizlikni boshqarish va nomlash xizmatlari kabi xususiyatlarni amalga oshirish uchun zarur bo'lgan Java sinflari, kutubxonalari va boshqa fayllar to'plamini o'z ichiga oladi.

  3. Veb-konteyner veb-komponentlarni (servletlar, EJB Lite komponentlari, JSP sahifalari, filtrlar, tinglovchilar, JSF sahifalari va veb-xizmatlar) boshqarish va bajarish uchun asosiy xizmatlarni taqdim etadi. U servletlarni yaratish, ishga tushirish va ishga tushirish, HTTP va HTTPS protokollarini qo'llab-quvvatlash uchun javobgardir. Ushbu konteyner veb-sahifalarni mijoz brauzerlariga xizmat ko'rsatish uchun ishlatiladi.

  4. EJB (Enterprise Java Bean) konteyneri ilovaning biznes mantiqiy qatlamini o'z ichiga olgan EJB model komponentlarini boshqarish va bajarish uchun javobgardir. U yangi EJB fasol ob'ektlarini yaratadi, ularning hayot aylanishini boshqaradi va tranzaksiya, xavfsizlik, parallellik, tarqatish, nomlash yoki asinxron chaqiruv qobiliyatlari kabi xizmatlarni taqdim etadi.

Shuningdek, Java EEda Java EE spetsifikatsiyasini amalga oshirish qo'llab-quvvatlashi kerak bo'lgan to'rt turdagi komponentlar mavjud:
  1. Appletlar brauzerda ishlaydigan grafik foydalanuvchi interfeysi (GUI) ilovalari. Ular kuchli foydalanuvchi interfeyslarini yaratish uchun boy Swing API-dan foydalanadilar.

  2. Ilovalar mijoz tomonida ishlaydigan dasturlardir. Odatda ular grafik foydalanuvchi interfeysi (GUI) bo'lib, ommaviy ishlov berish uchun ishlatiladi.

  3. Veb-ilovalar (servletlar va ularning filtrlari, veb-hodisalar tinglovchilari, JSP va JSF sahifalaridan iborat) - veb-konteynerda ishlaydi va veb-mijozlarning HTTP so'rovlariga javob beradi. Servletlar SOAP va RESTful veb-xizmatining so'nggi nuqtalarini ham qo'llab-quvvatlaydi.

  4. Korxona ilovalari (Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services bilan tuzilgan) EJB konteynerida ishlaydi. Konteynerlar tomonidan boshqariladigan EJBlar tranzaktsion biznes mantiqini boshqaradi. Ularga RMI (yoki SOAP va RESTful veb-xizmatlari uchun HTTP) orqali mahalliy yoki masofadan kirish mumkin.

Quyidagi diagrammada odatiy Java EE dastur arxitekturasi ko'rsatilgan: Java EE ga kirish - 2

Texnologiyalar

Shunday qilib, biz arxitekturani saralab oldik. Umumiy tuzilma aniq bo'lishi kerak. Arxitektura komponentlarini tavsiflash jarayonida biz EJB, JSP va boshqalar kabi ba'zi Java EE texnologiyalariga to'xtalib o'tdik. Keling, ularni batafsil ko'rib chiqaylik. Quyidagi jadvalda asosan mijozlar darajasida qo'llaniladigan texnologiyalar ko'rsatilgan:
Texnologiya Maqsad
Servletlar Mijoz so'rovlarini dinamik ravishda qayta ishlaydigan va javoblarni yaratadigan Java sinflari (odatda HTML sahifalari).
Java server yuzlari (JSF) Foydalanuvchi interfeysi bilan veb-ilovalarni yaratish uchun ramka. Sahifaga foydalanuvchi interfeysi komponentlarini (masalan, maydonlar va tugmalar) qo'shish, ushbu komponentlarni o'zgartirish va tasdiqlash va bu ma'lumotlarni server tomonida saqlash imkonini beradi.
Java Server Faces Facelet texnologiyasi Bu JSP sahifalari o'rniga XHTML sahifalaridan foydalanadigan JSF ilovasining kichik turi
Java server sahifalari (JSP) Servletlarga kompilyatsiya qilingan matnli hujjatlar. Statik sahifalarga (masalan, HTML sahifalar) dinamik tarkib qo‘shish imkonini beradi.
Java server sahifalarining standart teglar kutubxonasi (JSTL) JSP sahifalari kontekstida asosiy funksiyalarni qamrab oluvchi teglar kutubxonasi.
Ifoda tili Java EE komponentlariga kirish uchun JSP va Facelets sahifalarida ishlatiladigan standart teglar to'plami.
Java EE (CDI) uchun kontekst va qaramlik kiritish Komponentlarning hayot aylanishini boshqarish, shuningdek, komponentlarni mijoz ob'ektlariga xavfsiz tarzda kiritish uchun Java EE konteynerlari tomonidan taqdim etilgan xizmatlar to'plamini ifodalaydi.
Java loviya komponentlari Ilova sahifalari uchun vaqtinchalik ma'lumotlarni saqlash vazifasini bajaradigan ob'ektlar.
Quyidagi jadval biznes mantiqiy darajasida qo'llaniladigan texnologiyalarni ko'rsatadi:
Texnologiya Maqsad
Enterprise Java Beans (korxona loviya) komponentlari EJBlar boshqariladigan fasol bo'lib, ularda ilovaning asosiy funksiyalari mavjud.
JAX-RS RESTful veb-xizmatlari Bu REST arxitektura uslubiga mos keladigan veb-xizmatlarni ishlab chiqish uchun API.
JAX-WS veb-xizmat so'nggi nuqtalari SOAP veb-xizmatlarini yaratish va iste'mol qilish uchun API.
Java Persistence API (JPA) ob'ektlari Ma'lumotlar do'konlaridagi ma'lumotlarga kirish va ushbu ma'lumotlarni Java dasturlash tili ob'ektlariga va aksincha aylantirish uchun API.
Java EE tomonidan boshqariladigan fasol Ilovaning biznes mantiqini ta'minlaydigan, lekin EJBning tranzaksiya yoki xavfsizlik xususiyatlarini talab qilmaydigan boshqariladigan fasollar.
Java xabarlar xizmati Java Message Service (JMS) API Java EE ilova komponentlariga xabarlarni yaratish, jo‘natish, qabul qilish va o‘qish imkonini beruvchi xabar almashish standartidir. Bu komponentlar o'rtasida taqsimlangan, ishonchli va asinxron aloqani ta'minlaydi.
Quyidagi jadvalda ma'lumotlarga kirish darajasida qo'llaniladigan texnologiyalar ko'rsatilgan:
Texnologiya Maqsad
Java Database Connectivity API (JDBC) Ma'lumotlar do'konlaridan ma'lumotlarga kirish va olish uchun past darajadagi API. JDBC-dan odatiy foydalanish SQL so'rovlarini ma'lum bir ma'lumotlar bazasiga qarshi yozishdir.
Java Persistence API Ma'lumotlar do'konlaridagi ma'lumotlarga kirish va ushbu ma'lumotlarni Java dasturlash tili ob'ektlariga va aksincha aylantirish uchun API. JDBC bilan solishtirganda ancha yuqori darajadagi API. JDBC ning barcha murakkabligini ishlab chiqaruvchidan qopqoq ostida yashiradi.
Java EE ulagichi arxitekturasi Boshqa korporativ resurslarni ulash uchun API, masalan:
  • ERP (Korxona resurslarini rejalashtirish, korxona resurslarini rejalashtirish tizimi),
  • CRM (inglizcha: Customer Relationship Management, mijozlar bilan munosabatlarni boshqarish tizimi).
Java Transaction API (JTA) Bir nechta ma'lumotlar do'konlarida taqsimlangan tranzaktsiyalar va tranzaktsiyalarni o'z ichiga olgan tranzaktsiyalarni aniqlash va boshqarish uchun API.

Java EE va bahor

Spring Framework Java EE ga raqobatchi hisoblanadi. Agar siz ushbu ikki platformaning rivojlanishiga qarasangiz, qiziqarli rasm paydo bo'ladi. Java EE ning birinchi versiyalari IBM kompaniyasi ishtirokida yaratilgan. Ular salqin, ammo noqulay, og'ir va foydalanish uchun noqulay bo'lib chiqdi. Ishlab chiquvchilar ko'p sonli konfiguratsiya fayllarini saqlash zarurati va rivojlanishni murakkablashtiradigan boshqa sabablar tufayli kurashdilar. Shu bilan birga, Spring IoC tug'ildi. Bu kichkina, chiroyli va ishlatish uchun qulay kutubxona edi. Shuningdek, u konfiguratsiya faylidan foydalangan, ammo Java EE dan farqli o'laroq, faqat bittasi bor edi. Bahorning soddaligi deyarli har bir kishi o'z loyihalarida ushbu ramkadan foydalanishni boshlaganiga olib keldi. Va keyin Spring va Java EE o'zlarining yo'llarini bir xil narsaga boshladilar, ammo turli xil tomonlardan. Spring dasturchisi Pivotal Software Java dasturchilarining barcha mumkin bo'lgan va imkonsiz ehtiyojlarini qondirish uchun loyihani loyihadan so'ng chiqarishni boshladi. Asta-sekin, avval bahor deb atalgan narsa birinchi navbatda loyihalardan biriga aylandi, keyin esa Spring Core'dagi bir nechta boshqa loyihalar bilan butunlay birlashtirildi. Bularning barchasi bahorning avvaliga qaraganda muqarrar murakkablashishiga olib keldi. Vaqt o'tishi bilan, bahorga bog'liqliklarning butun chigalligini kuzatib borish juda qiyin bo'ldi va hamma narsani o'zi yuklaydigan va ishga tushiradigan alohida kutubxonaga ehtiyoj paydo bo'ldi (endi sevimli Spring Boot bir joyda hiqillab qoldi). Bu vaqt davomida JCP bitta narsa ustida ishladi - Java EE ichida mumkin bo'lgan hamma narsani maksimal darajada soddalashtirishga erishish. Natijada, zamonaviy EJB-da loviyani tasvirlash uchun ishlab chiqaruvchiga Enterprise Java Beans texnologiyasining to'liq quvvatidan foydalanish imkonini beradigan sinfdan yuqorida bitta izohni ko'rsatish kifoya. Va shunga o'xshash soddalashtirishlar Java EE ichidagi har bir spetsifikatsiyaga ta'sir ko'rsatdi. Natijada, Spring va Java EE funksionallik jihatidan taxminan paritetdir. Ba'zi narsalar yaxshiroq, ba'zi narsalar yomonroq, lekin agar siz global miqyosda qarasangiz, katta farqlar yo'q. Xuddi shu narsa ishning murakkabligi uchun ham amal qiladi. Spring va Java EE ham ajoyib vositadir. Ehtimol, hozirda Java-da korporativ tarmoq ilovalarini yaratish uchun mavjud bo'lgan eng yaxshisi. Biroq, Java EE odatda faqat Enterprise Application Server ichida ishlashi mumkin (Tomcat bitta emas) va Spring stekidagi dastur har qanday narsada (bir xil Tomcatda) va hatto serversiz ham ishlashi mumkin (chunki u ishlaydi) mustaqil ravishda o'z ichida). Bu Springni kichik front-end GUI ilovalari yoki mikroservis arxitekturalarini ishlab chiqish uchun ideal vositaga aylantiradi. Ammo dastur serverlariga qaramlikni yo'q qilish Spring ilovalarining kengayishiga salbiy ta'sir ko'rsatdi. Va Java EE kengaytiriladigan monolit klaster dasturini amalga oshirish uchun juda mos keladi. Spring Framework bilan tanish bo'lgan dasturchilar hozirda mehnat bozorida ko'proq talabga ega. Tarixiy jihatdan shunday bo'ldi: Java EE o'ta murakkab bo'lgan bir paytda, Spring "mijozlar bazasiga ega bo'ldi". Va shunga qaramay, Spring yoki Java EE ni o'rganish uchun nima qilish kerakligi haqidagi savolga aniq javob yo'q. Yangi boshlanuvchiga quyidagi maslahatlar berilishi mumkin. Ikkala platforma bilan tanishing (hech bo'lmaganda yuzaki). Java EE va Spring-da kichik uy loyihasini yozing. Va keyin ishda kerak bo'ladigan ramkaga chuqurroq kirib boring. Natijada, Spring va Java EE o'rtasida almashish qiyin bo'lmaydi.

Natijalar

Katta hajmdagi mavzuni, albatta, bitta maqolada yoritib bo'lmaydi! Ko'p yangi atamalardan so'ng, ehtimol siz ushbu bilimlarni haqiqiy hayot misolida "qo'llashni" xohlaysiz. Shuning uchun biz Java EE ni o'rganishni davom ettiramiz: keyingi maqolada Java EE rivojlanishi uchun mahalliy muhitni yaratish bo'yicha amaliy darslarni topasiz.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION