JavaRush /Java Blog /Random-TK /Java EE bilen tanyşlyk
zor07
Dereje
Санкт-Петербург

Java EE bilen tanyşlyk

Toparda çap edildi
Bu gün onuň nämedigi hakda gürleşeris - Java EE: nämeden ybaratdygy, Java EE programmalarynyň arhitekturasynyň aýratynlyklary we bu platformanyň dürli tehnologiýalarynyň beýanyny bereris. Mowzugyň özi giň, ýöne esaslarda durmarys. Netijede, Java EE-ni Bahar çarçuwasy bilen azajyk deňeşdireris we “öwrenmek has gowy zat” (talaňçy: elbetde, hemme zady öwrenmeli =)) Soraga jogap bereris Java EE bilen tanyşlyk - 1.

Java EE - bu näme?

Java EE , Java SE-iň üstünde gurlan platforma bolup, uly göwrümli, köp derejeli, ulalýan, ygtybarly we ygtybarly tor programmalaryny ösdürmek we işletmek üçin API we iş wagtyny üpjün edýär. Şeýle programmalara uly kärhanalaryň ýüzbe-ýüz bolýan meselelerini çözýändigi üçin kärhana programmalary diýilýär. Şeýle-de bolsa, bu görnüşli programmalardan we Java EE-iň berýän peýdalaryndan diňe uly korporasiýalar we döwlet edaralary peýdalanyp bilmez. Java EE platformasynyň hödürleýän çözgütleri, aýratyn döredijiler we kiçi guramalar üçin peýdaly we käwagt ýönekeý.

Java EE ösüşi

Java EE, 1998-nji ýylda döredilen Java Community Process (JCP) arkaly işlenip düzüldi. Gyzyklanýan taraplara Java dil platforma aýratynlyklarynyň geljekki wersiýalaryny düzmäge gatnaşmaga mümkinçilik berýär. Bu amalyň esasy, JS platformasy (Java spesifikasiýa haýyşy), Java platformasyna goşulmagy teklip edilýän aýratynlyklary we tehnologiýalary beýan edýän resmi resminamalar. Şeýle haýyşlar jemgyýetiň agzalary - ýönekeý işläp düzüjiler we kompaniýalar tarapyndan edilýär. Ikinjisine Oracle, Red Hat, IBM, Apache we başgalar girýär. Bular. ýigitler Java-a goşmak isleýän täze aýratynlyklaryny we gowulyklaryny teklip edýärler. Soň bolsa indiki wersiýa nämäni goşmalydygy barada karar kabul edilip, ses berýärler. Java EE wersiýasynyň taryhy şeýle:
  • J2EE 1.2 (1999-njy ýylyň dekabry)
  • J2EE 1.3 (2001-nji ýylyň sentýabr)
  • J2EE 1.4 (2003-nji ýylyň Sanjar aýy)
  • Java EE 5 (Maý 2006)
  • Java EE 6 (2009-njy ýylyň dekabry)
  • Java EE 7 (Maý)
  • Java EE 8 (2017-nji ýylyň awgust aýy)
  • Jakarta EE 8 (2019-njy ýylyň sentýabr)
2017-nji ýylda platformanyň ösüşinde täze bir sepgit boldy: Oracle Java EE-iň ösüşine gözegçiligi Eclipse gaznasyna geçirdi. 2018-nji ýylyň aprelinde Java EE Java EE 8 bilen doly gabat gelýän Jakarta EE adyny aldy.

Java EE amaly arhitekturasy

Gysga giriş Düşünmegi aňsatlaşdyrmak üçin, Java EE programmalarynyň gurluşy we mundan beýläk ulanjak käbir sözlerimiz barada gürleşeliň. Java EE amaly programmalarynda iki esasy häsiýet bar:
  • Birinjiden, köp derejeli. Java EE amaly programmalary köp derejeli we bu barada has jikme-jik gürleşeris;
  • ikinjiden, höwürtge. Içinde komponent konteýnerleri bolan Java EE serweri (ýa-da programma serweri) bar. Bu gaplar öýi (bingo!) Komponentleri.
Java EE programmalarynyň arhitekturasyny düşündirmek üçin, ilki bilen gatlaklar barada gürleşeliň. Derejeler nähili? Dürli derejelerde haýsy Java EE tehnologiýalary ulanylýar? Geljekde, programma serwerleriniň, komponent konteýnerleriniň we komponentleriň özleri bilen nähili baglanyşýandygyny ara alyp maslahatlaşarys. Theseöne ýadyňyzdan çykarmaň, bularyň hemmesi bir tarapdan dürli tarapdan seredilýär we bu ýerde tertip beýle möhüm däl.

Programma derejeleri

Köp derejeli programmalar, funksional ýörelgelere laýyklykda izolirlenen modullara (derejeler, gatlaklar) bölünýän programmalardyr. Adatça (Java EE ösüş kontekstinde hem) kärhana programmalary üç derejä bölünýär:
  • müşderi;
  • ortaça dereje;
  • maglumatlara giriş derejesi.
  1. Müşderi gatlagy, Java EE serwerinden (orta gatlak) maglumat soraýan programma. Serwer, öz gezeginde, müşderiniň haýyşyny işleýär we oňa jogap berýär. Müşderi programmasy brauzer, özbaşdak programma (ykjam ýa-da iş stoly) ýa-da grafiki interfeýssiz beýleki serwer programmalary bolup biler.

  2. Orta dereje, öz gezeginde, web derejesine we iş logika derejesine bölünýär.

    1. Web gatlagy, müşderiler bilen işewür logika gatlagynyň arasynda özara täsirleşmegi üpjün edýän käbir böleklerden durýar.

      Web derejesinde aşakdaky Java EE tehnologiýalary ulanylýar:

      • JavaServer Faces tehnologiýasy (JSF);
      • Java serwer sahypalary (JSP);
      • Düşündiriş dili (EL);
      • Hyzmatkärler;
      • Java EE (CDI) üçin kontekstler we baglylyk sanjymy.

    2. Iş logika gatlagy, programmanyň ähli iş logikasyny durmuşa geçirýän böleklerden durýar. Iş logikasy, belli bir iş meýdanynyň (maliýe pudagy, bank işi, elektron söwda) zerurlyklaryny öz içine alýan funksiýany üpjün edýän kod. Bu derejäni tutuş ulgamyň özeni hasaplap bolar.

      Bu derejä gatnaşýan tehnologiýalar:

      • Kärhana JavaBeans (EJB);
      • JAX-RS IEST GOWY web hyzmatlary;
      • Java Persistence API guramalary;
      • Java habar hyzmaty.

  3. Maglumatlara giriş derejesi. Bu dereje käwagt kärhana maglumat ulgamlarynyň derejesi (EIS) diýilýär. EIS dürli maglumatlar bazasy serwerlerinden, ERP (Kärhananyň Resurs meýilnamalaşdyryşy) kärhana çeşmelerini meýilleşdiriş ulgamlaryndan we beýleki maglumatlar çeşmelerinden durýar. Iş logika gatlagy maglumatlar üçin bu gatlaga girýär.

    Bu derejede aşakdaky ýaly tehnologiýalary tapyp bilersiňiz:

    • Java maglumatlar bazasyna birikmek API (JDBC);
    • Java tutanýerlilik API;
    • Java EE birikdiriji arhitekturasy;
    • Java Transaction API (JTA).

Programma serwerleri, gaplar, komponentler

Wikipediýadan Java EE kesgitlemesine göz aýlalyň. Java EE, orta we iri kärhanalaryň wezipeleri üçin serwer platformasynyň arhitekturasyny beýan edýän Java dili üçin spesifikasiýalaryň we degişli resminamalaryň toplumydyr. Bu kontekstde “spesifikasiýa toplumynyň” nämäni aňladýandygyna has gowy düşünmek üçin geliň, Java interfeýsi bilen meňzeşlik çekeliň. Java interfeýsiniň özi işlemeýär. Diňe käbir funksiýalaryň ýerine ýetirilýän şertnamasyny kesgitleýär. Emma beýleki synplar interfeýsi durmuşa geçirýärler. Mundan başga-da, bir interfeýsde birnäçe jikme-jiklikler biri-birinden tapawutlanyp bilýän birnäçe ýerine ýetiriş bolup biler. Spesifikasiýa bilen hemme zat birmeňzeş. Edalaňaç Java EE diňe spesifikasiýa toplumy. Bu aýratynlyklar dürli Java EE serwerleri tarapyndan amala aşyrylýar. Java EE serweri, Java EE platforma API-lerini ýerine ýetirýän we adaty Java EE hyzmatlaryny hödürleýän serwer programmasydyr. Java EE serwerlerine käwagt programma serwerleri diýilýär. Serwer maglumatlary, köp derejeli iýerarhiýada hersi öz derejesine laýyk gelýän programma böleklerini öz içine alyp biler. Java EE serweri bu böleklere konteýner görnüşinde dürli hyzmatlary hödürleýär. Konteýnerler, ýerleşdirýän komponentleri bilen komponenti goldaýan pes derejeli platforma garaşsyz işleýşiniň arasyndaky interfeýsdir. Konteýnerler ýerleşdirýän komponentlerine aýratyn hyzmatlary edýärler. Mysal üçin, ösüş ömrüni dolandyrmak, garaşlylyk sanjymy, ylalaşyk we ş.m. Konteýnerler tehniki çylşyrymlylygy gizleýär we göterijiligini ýokarlandyrýar. Java EE-de dört dürli gap bar:
  1. Programma gaplary brauzerleriň köpüsi tarapyndan amala aşyrylýar. Programmalar işlenip düzülende, programmanyň wizual tarapyna jemläp bilersiňiz, konteýner bolsa howpsuz gurşaw berýär.

  2. Programma müşderi konteýni (ACC), Java SE programmalarynda sanjym, howpsuzlyk dolandyryşy we atlandyryş hyzmatlary ýaly aýratynlyklary ýerine ýetirmek üçin zerur bolan Java synplarynyň, kitaphanalaryň we beýleki faýllaryň toplumyny öz içine alýar.

  3. Web konteýner, web komponentlerini (servletler, EJB Lite komponentleri, JSP sahypalary, süzgüçler, diňleýjiler, JSF sahypalary we web hyzmatlary) dolandyrmak we ýerine ýetirmek üçin esasy hyzmatlary hödürleýär. Hyzmatlary çaltlaşdyrmak, işe girizmek we çagyrmak, HTTP we HTTPS protokollaryny goldamak üçin jogapkärdir. Bu gap, web sahypalaryny müşderi brauzerlerine hyzmat etmek üçin ulanylýar.

  4. EJB (Enterprise Java Bean) konteýner, programmanyň iş logika gatlagyny öz içine alýan EJB model komponentlerini dolandyrmak we ýerine ýetirmek üçin jogapkärdir. Täze EJB noýba guramalaryny döredýär, ömrüni dolandyrýar we amal, howpsuzlyk, ylalaşyk, paýlamak, at dakmak ýa-da asynkron çagyryş mümkinçilikleri ýaly hyzmatlary hödürleýär.

Şeýle hem Java EE-de Java EE spesifikasiýasynyň ýerine ýetirilmegini goldaýan dört görnüşli komponent bar :
  1. Programmalar, brauzerde işleýän grafiki ulanyjy interfeýsi (GUI) programmalarydyr. Güýçli ulanyjy interfeýslerini öndürmek üçin baý Swing API-den peýdalanýarlar.

  2. Goýmalar, müşderi tarapynda işleýän programmalar. Adatça olar grafiki ulanyjy interfeýsi (GUI) bolup, partiýany gaýtadan işlemek üçin ulanylýar.

  3. Web programmalary (serwletlerden we olaryň süzgüçlerinden, web wakalaryny diňleýjilerden, JSP we JSF sahypalaryndan ybarat) - web konteýnerinde işleýär we web müşderileriniň HTTP isleglerine jogap berýär. Hyzmatkärler SOAP we RESTful web hyzmatynyň ahyrky nokatlaryny hem goldaýarlar.

  4. Kärhana programmalary (Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Call, Time Services) bilen EJB konteýnerinde işleýär. Konteýner tarapyndan dolandyrylýan EJB-ler tranzaksiýa iş logikasyny dolandyrýarlar. Olara ýerli ýa-da uzakdan RMI (ýa-da SOAP we RESTful web hyzmatlary üçin HTTP) arkaly girip bolýar.

Aşakdaky diagrammada adaty Java EE amaly arhitekturasy görkezilýär: Java EE bilen tanyşlyk - 2

Tehnologiýalar

Şeýlelikde, arhitekturany tertipledik. Umumy gurluşy aýdyň bolmaly. Arhitektura komponentlerini suratlandyrmak işinde, EJB, JSP we ş.m. ýaly käbir Java EE tehnologiýalaryna degip geçdik. Geliň, olara has içgin seredeliň. Aşakdaky tablisada esasan müşderi derejesinde ulanylýan tehnologiýalar görkezilýär:
Tehnologiýa Maksat
Hyzmatkärler Müşderiniň isleglerini dinamiki taýdan işleýän we jogaplary döredýän Java synplary (köplenç HTML sahypalary).
Java serwer ýüzleri (JSF) Ulanyjy interfeýsi bilen web programmalaryny gurmagyň çarçuwasy. Ulanyjy interfeýs komponentlerini (mysal üçin, meýdanlar we düwmeler) sahypada goşmaga, bu komponentleri üýtgetmäge we tassyklamaga we bu maglumatlary serweriň gapdalynda saklamaga mümkinçilik berýär.
Java Server Facelets tehnologiýasy JSP sahypalarynyň ýerine XHTML sahypalaryny ulanýan JSF programmasynyň bir görnüşi
Java serwer sahypalary (JSP) Serwletlere düzülen tekst resminamalary. Statiki sahypalara dinamiki mazmun goşmaga mümkinçilik berýär (HTML sahypalary ýaly)
Java serwer sahypalary standart bellik kitaphanasy (JSTL) JSP sahypalarynyň kontekstinde esasy işlemegi öz içine alýan bellik kitaphanasy.
Düşündiriş dili Java EE komponentlerine girmek üçin JSP we Facelets sahypalarynda ulanylýan standart bellikler toplumy.
Java EE (CDI) üçin kontekstler we baglylyk sanjymy Komponentleriň ömrüni dolandyrmak, şeýle hem müşderileriň obýektlerine ygtybarly usulda sanjym etmek üçin Java EE konteýnerleri tarapyndan hödürlenýän hyzmatlar toplumyny aňladýar.
Java noýba komponentleri Programma sahypalary üçin wagtlaýyn maglumat saklaýjy hökmünde çykyş edýän obýektler.
Aşakdaky tablisada iş logika derejesinde ulanylýan tehnologiýalar görkezilýär:
Tehnologiýa Maksat
Kärhana Java noýbasy (kärhana noýbasy) komponentleri EJB-ler programmanyň esasy işleýşini öz içine alýan noýba dolandyrylýar.
JAX-RS IEST GOWY web hyzmatlary REST arhitektura stiline laýyk gelýän web hyzmatlaryny ösdürmek üçin API.
JAX-WS web hyzmatynyň ahyrky nokatlary SOAP web hyzmatlaryny döretmek we sarp etmek üçin API.
Java Persistence API (JPA) guramalary Maglumat dükanlarynda maglumatlara girmek we şol maglumatlary Java programmirleme dil obýektlerine öwürmek üçin API.
Java EE noýba dolandyrdy Programmanyň iş logikasyny üpjün edýän, ýöne EJB-iň amal ýa-da howpsuzlyk aýratynlyklaryny talap etmeýän dolandyrylýan noýba.
Java habar hyzmaty Java habar hyzmaty (JMS) API habarlaşma standarty bolup, Java EE programma böleklerine habar döretmäge, ibermäge, almaga we okamaga mümkinçilik berýär. Bu komponentleriň arasynda paýlanan, ygtybarly we asynkron aragatnaşygy üpjün edýär.
Aşakdaky tablisada maglumatlara girmek gatlagynda ulanylýan tehnologiýalar görkezilýär:
Tehnologiýa Maksat
Java maglumat bazasyna birikmek API (JDBC) Maglumat dükanlaryndan maglumatlary almak we almak üçin pes derejeli API. JDBC-ni adaty ulanmak, belli bir maglumat bazasyna garşy SQL talaplaryny ýazmakdyr.
Java tutanýerlilik API Maglumat dükanlarynda maglumatlara girmek we şol maglumatlary Java programmirleme dil obýektlerine öwürmek üçin API. JDBC bilen deňeşdirilende has ýokary derejeli API. JDBC-iň ähli çylşyrymlylygyny kapotyň aşagyndaky işläp düzüjiden gizleýär.
Java EE birikdiriji arhitekturasy Beýleki korporatiw çeşmeleri birikdirmek üçin API:
  • ERP (Kärhananyň çeşmelerini meýilleşdirmek, kärhana çeşmelerini meýilleşdirmek ulgamy),
  • CRM (Iňlis: Müşderi gatnaşyklaryny dolandyrmak, müşderi gatnaşyklaryny dolandyrmak ulgamy).
Java Transaction API (JTA) Birnäçe maglumat dükanlarynda paýlanan amallary we amallary goşmak bilen amallary kesgitlemek we dolandyrmak üçin API.

Java EE vs Bahar

Bahar çarçuwasy Java EE bilen bäsdeş hasaplanýar. Bu iki platformanyň ösüşine seretseň, gyzykly surat peýda bolýar. Java EE-iň ilkinji wersiýalary IBM-iň gatnaşmagynda döredildi. Salkyn, ýöne ýapyşyk, agyr we ulanmak üçin amatsyz bolup çykdy. Döredijiler köp sanly konfigurasiýa faýllaryny saklamagyň zerurlygy we ösüşi çylşyrymlaşdyrýan beýleki sebäpler sebäpli kynçylyk çekdiler. Şol bir wagtyň özünde Bahar IoC dünýä indi. Bu kiçijik, owadan we ulanmaga aňsat kitaphanady. Şeýle hem konfigurasiýa faýly ulandy, ýöne Java EE-den tapawutlylykda diňe bir bardy. Baharyň ýönekeýligi, bu çarçuwany her kim diýen ýaly öz taslamalarynda ulanyp başlady. Soň bolsa Bahar we Java EE şol bir zada, ýöne dürli tarapdan başladylar. “Bahar” programmasyny dörediji “Pivotal Software”, Java döredijileriniň ähli mümkin we mümkin bolmadyk zerurlyklaryny kanagatlandyrmak üçin taslamadan soň taslamany çykaryp başlady. Springuwaş-ýuwaşdan öň “Bahar” diýilýän zat ilki taslamalaryň birine öwrüldi, soň bolsa “Bahar ýadrosy” -da başga-da birnäçe taslama bilen birleşdi. Bularyň hemmesi, bahar bilen deňeşdirilende Baharyň gutulgysyz çylşyrymlylygyna sebäp boldy. Wagtyň geçmegi bilen, Bahara baglylyklaryň hemmesini yzarlamak gaty kynlaşdy we hemme zady ýükleýän we dolandyrjak aýratyn kitaphana zerurlygy ýüze çykdy (häzirki söýgüli Bahar Booty bir ýerde gysyldy). Bu wagtyň dowamynda, JCP bir zadyň üstünde işledi - Java EE-de mümkin bolan ähli zady aňsatlaşdyrmak. Netijede, häzirki zaman EJB-de noýba suratlandyrmak üçin, döredijä Enterprise Java Beans tehnologiýasynyň doly güýjüne girmäge mümkinçilik berýän synpdan ýokarda bir bellik bellemek ýeterlikdir. Şuňa meňzeş ýönekeýleşdirmeler Java EE-de her spesifikasiýa täsir etdi. Netijede, Bahar we Java EE işleýşi taýdan takmynan deňdir. Käbir zatlar has gowy, käbir zatlar has erbet, ýöne dünýä ýüzüne seretseň, uly tapawut ýok. Işiň çylşyrymlylygy barada-da aýdylýar. Bahar we Java EE ikisi hem ajaýyp gural. Java-da kärhana tor programmalaryny gurmak üçin häzirki wagtda bar bolan iň gowusy. Şeýle-de bolsa, Java EE, adatça, diňe Kärhana Programma Serweriniň içinde işläp biler (Tomcat bir däl), we Bahar stakasyndaky bir programma islendik zat (şol bir Tomcat-da), hatda serwersiz hem işläp biler (sebäbi ol işleýär) özbaşdak). Bu, Bahary kiçi öňdäki GUI programmalaryny ýa-da mikroservis arhitekturasyny ösdürmek üçin iň oňat gural edýär. Applicationöne programma serwerlerine garaşlylygy aradan aýyrmak Bahar programmalarynyň göwrümine ýaramaz täsir etdi. Java EE ulaldylan monolit klaster programmasyny durmuşa geçirmek üçin amatlydyr. Bahar çarçuwasy bilen tanyş işläp düzüjiler häzirki wagtda zähmet bazaryna has uly isleg bildirýärler. Taryhy taýdan şeýle boldy: Java EE-iň aşa çylşyrymly bir döwründe Bahar “müşderi bazasyny gazandy”. Şeýle-de bolsa, Bahar ýa-da Java EE-ni näme öwrenmeli diýen soraga anyk jogap ýok. Bir öwrenje aşakdaky maslahat berilip bilner. Iki platforma bilenem (iň bolmanda ýüzleý) tanyşyň. Java EE we Baharda kiçi öý taslamasyny ýazyň. Soň bolsa işde zerur boljak çarçuwany has içgin öwreniň. Netijede, Bahar bilen Java EE arasynda geçmek kyn bolmaz.

Netijeler

Elbetde, uly göwrümli mowzuk bir makalada ýazylyp bilinmez! Birnäçe täze terminlerden soň, bu bilimleri hakyky durmuşda “ulanmak” islärsiňiz. Şonuň üçin Java EE-ni öwrenmegi dowam etdireris: indiki makalada Java EE ösüşi üçin ýerli gurşawy döretmek boýunça amaly sapaklary taparsyňyz.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION