JavaRush /Блоги Java /Random-TG /Муқаддима ба Java EE
zor07
Сатҳи
Санкт-Петербург

Муқаддима ба Java EE

Дар гурӯҳ нашр шудааст
Имрӯз мо дар бораи он сӯҳбат хоҳем кард - Java EE: он аз чӣ иборат аст, хусусиятҳои меъмории барномаҳои Java EE чист ва мо тавсифи технологияҳои гуногуни ин платформаро пешниҳод хоҳем кард. Худи мавзуъ васеъ аст, аммо мо дар асоси асосҳо таваққуф намекунем. Дар охир мо муқоисаи хурди Java EE-ро бо чаҳорчӯбаи Springwork анҷом медиҳем ва ба савол ҷавоб медиҳем: "чиро омӯхтан беҳтар аст" (спойлер: албатта, шумо бояд ҳама чизро омӯзед =) ) Муқаддима ба Java EE - 1Биёед аз асосҳо оғоз кунем.

Java EE - ин чист?

Java EE платформаест, ки дар болои Java SE сохта шудааст, ки API ва муҳити кориро барои таҳия ва иҷро кардани барномаҳои шабакавии миқёси васеъ, бисёрсатҳа, миқёспазир, боэътимод ва бехатар таъмин мекунад. Чунин барномаҳо барномаҳои корпоративӣ номида мешаванд, зеро онҳо мушкилотеро, ки тиҷорати калон дучор меоянд, ҳал мекунанд. Аммо, на танҳо корпоратсияҳои калон ва муассисаҳои давлатӣ метавонанд аз ин намуди барномаҳо ва бартариҳое, ки Java EE пешниҳод мекунанд, баҳра баранд. Қарорҳое, ки платформаи Java EE пешниҳод мекунанд, барои таҳиягарони инфиродӣ ва созмонҳои хурд муфид ва баъзан танҳо заруранд.

Таҳияи Java EE

Java EE тавассути раванди Java Community Process (JCP), ки соли 1998 таъсис ёфтааст, таҳия шудааст. Он ба ҷонибҳои манфиатдор имкон медиҳад, ки дар ташаккули versionҳои ояндаи мушаххасоти платформаи забони Java иштирок кунанд. Асоси ин раванд JSR (Java Specification Request), ҳуҷҷатҳои расмӣ мебошад, ки мушаххасот ва технологияҳоро тавсиф мекунанд, ки ба платформаи Java илова карда мешаванд. Чунин дархостҳоро аъзоёни ҷомеа - таҳиягарон ва ширкатҳои оддӣ пешниҳод мекунанд. Ба охирин Oracle, Red Hat, IBM, Apache ва бисёр дигарон дохил мешаванд. Онхое. бачаҳо хусусиятҳо ва чизҳои навро барои баррасӣ пешниҳод мекунанд, ки онҳо мехоҳанд ба Java дохил кунанд. Ва он гоҳ онҳо овоз медиҳанд, ки дар асоси он тасмим гирифта мешавад, ки ба варианти оянда чӣ дохил карда шавад. Таърихи versionи Java EE чунин менамояд:
  • J2EE 1.2 (декабри 1999)
  • J2EE 1.3 (сентябри 2001)
  • J2EE 1.4 (ноябри 2003)
  • Java EE 5 (майи 2006)
  • Java EE 6 (декабри 2009)
  • Java EE 7 (май)
  • Java EE 8 (августи 2017)
  • Ҷакарта EE 8 (сентябри 2019)
Дар соли 2017 марҳалаи нав дар рушди платформа ба амал омад: Oracle назорати таҳияи Java EE-ро ба Бунёди Eclipse интиқол дод. Ва дар моҳи апрели соли 2018, Java EE номи Ҷакарта EE номида шуд, ки бо Java EE 8 комилан мувофиқ аст.

Архитектураи барномаҳои Java EE

Муқаддимаи кӯтоҳ. Барои осонтар фаҳмидани он, биёед дар бораи сохтори барномаҳои Java EE ва баъзе истилоҳоте, ки минбаъд истифода хоҳем кард, сӯҳбат кунем. Барномаҳои Java EE сохторе доранд, ки ду сифатҳои калидӣ доранд:
  • Якум, бисёрсатҳа. Барномаҳои Java EE бисёрсатҳа мебошанд ва мо дар ин бора муфассалтар сӯҳбат хоҳем кард;
  • дуюм, лона кардан. Сервери Java EE (ё serverи барномавӣ) мавҷуд аст, ки дар дохor он контейнерҳои ҷузъӣ ҷойгиранд. Ин контейнерҳо ҷузъҳои хона (bingo!).
Барои шарҳ додани меъмории барномаҳои Java EE, биёед аввал дар бораи қабатҳо сӯҳбат кунем. Сатҳҳо чист? Кадом технологияҳои Java EE дар сатҳҳои гуногун истифода мешаванд? Минбаъд, мо муҳокима хоҳем кард, ки чӣ гуна serverҳои барномаҳо, контейнерҳои ҷузъӣ ва худи ҷузъҳо ба ҳам пайвастанд. Аммо дар хотир доред, ки ҳамаи инҳо дар як чиз назари гуногун доранд ва тартиб дар ин ҷо чандон муҳим нест.

Сатҳи татбиқ

Барномаҳои бисёрсатҳа барномаҳое мебошанд, ки аз рӯи принсипҳои функсионалӣ ба модулҳои ҷудошуда (сатҳҳо, қабатҳо) тақсим мешаванд. Одатан (аз ҷумла дар заминаи рушди Java EE), замимаҳои корхона ба се сатҳ тақсим мешаванд:
  • муштарӣ;
  • сатҳи миёна;
  • сатҳи дастрасии маълумот.
  1. Қабати муштарӣ барномаест, ки маълумотро аз serverи Java EE (қабати миёна) дархост мекунад. Сервер дар навбати худ дархости муштариро коркард мекунад ва ба он посух медиҳад. Замимаи муштарӣ метавонад браузер, барномаи мустақил (мобилӣ ё мизи корӣ) ё дигар барномаҳои serverӣ бе интерфейси графикӣ бошад.

  2. Сатҳи миёна дар навбати худ ба сатҳи веб ва сатҳи мантиқи тиҷорат тақсим мешавад.

    1. Қабати веб аз баъзе ҷузъҳо иборат аст, ки ҳамкории байни муштариён ва қабати мантиқии тиҷоратро таъмин мекунанд.

      Технологияҳои зерини Java EE дар сатҳи веб истифода мешаванд:

      • Технологияи JavaServer Faces (JSF);
      • Java Server Pages (JSP);
      • Забони ифода (EL);
      • Сервлетҳо;
      • Контекстҳо ва тазриқи вобастагӣ барои Java EE (CDI).

    2. Қабати мантиқи тиҷорӣ аз ҷузъҳое иборат аст, ки тамоми мантиқи тиҷории барномаро амалӣ мекунанд. Мантиқи тиҷорат ин codeест, ки функсияҳоеро таъмин мекунад, ки эҳтиёҷоти баъзе соҳаи мушаххаси тиҷоратро (саноати молиявӣ, бонкдорӣ, тиҷорати электронӣ) фаро мегирад. Ин сатҳро метавон асоси тамоми система ҳисоб кард.

      Технологияҳое, ки дар ин сатҳ иштирок мекунанд:

      • Enterprise JavaBeans (EJB);
      • JAX-RS RESTful хидматҳои веб;
      • Объектҳои Java Persistence API;
      • Хадамоти паёмнависии Java.

  3. Сатҳи дастрасии маълумот. Ин сатҳро баъзан сатҳи системаҳои иттилоотии корхона (EIS) меноманд. EIS аз serverҳои гуногуни пойгоҳи додаҳо, системаҳои банақшагирии захираҳои ERP (Enterprise Resource Planning) ва дигар манбаъҳои додаҳо иборат аст. Қабати мантиқи тиҷорӣ ба ин қабат барои маълумот дастрасӣ пайдо мекунад.

    Дар ин сатҳ шумо метавонед технологияҳои зеринро пайдо кунед:

    • API Java Database Connectivity (JDBC);
    • Java Persistence API;
    • Архитектураи Java EE Connector;
    • API Transaction Java (JTA).

Серверҳои барномаҳо, контейнерҳо, ҷузъҳо

Биёед ба таърифи Java EE аз Википедиа назар андозем. Java EE маҷмӯи мушаххасот ва ҳуҷҷатҳои марбут барои забони Java мебошад, ки меъмории платформаи serverро барои вазифаҳои корхонаҳои миёна ва калон тавсиф мекунад. Барои беҳтар фаҳмидани он ки "маҷмӯи мушаххасот" дар ин замина чӣ маъно дорад, биёед бо интерфейси Java муқоиса кунем. Худи интерфейси Java аз функсияҳо маҳрум аст. Он танҳо як шартномаро муайян мекунад, ки тибқи он баъзе функсияҳо амалӣ карда мешаванд. Аммо синфҳои дигар интерфейсро амалӣ мекунанд. Гузашта аз ин, як интерфейс метавонад якчанд амалия дошта бошад, ки ҳар кадоми онҳо метавонанд бо баъзе ҷузъиёт аз ҳамдигар фарқ кунанд. Бо тавсиф ҳама чиз комилан якхела аст. Бараҳна Java EE танҳо маҷмӯи мушаххасот аст. Ин мушаххасот аз ҷониби serverҳои гуногуни Java EE амалӣ карда мешаванд. Сервери Java EE як барномаи serverест, ки API-ҳои платформаи Java EE-ро амалӣ мекунад ва хидматҳои стандартии Java EE-ро пешниҳод мекунад. Серверҳои Java EE баъзан serverҳои барнома номида мешаванд. Маълумоти server метавонад ҷузъҳои барномаро дар бар гирад, ки ҳар яки онҳо ба сатҳи худ дар иерархияи бисёрсатҳа мувофиқат мекунанд. Сервери Java EE ба ин ҷузъҳо дар шакли контейнер хидматҳои гуногун пешкаш мекунад. Контейнерҳо интерфейси байни ҷузъҳои дар онҳо ҷойгиршуда ва функсияи мустақor платформаи сатҳи паст, ки ҷузъро дастгирӣ мекунанд, мебошанд. Контейнерҳо ба ҷузъҳои ҷойгиршуда хидматҳои мушаххас пешниҳод мекунанд. Масалан, идоракунии давраи зиндагии рушд, тазриқи вобастагӣ, ҳамзамон ва ғайра. Контейнерҳо мураккабии техникиро пинҳон мекунанд ва интиқолпазириро зиёд мекунанд. Дар Java EE чор намуди контейнерҳо мавҷуданд:
  1. Контейнерҳои апплет аз ҷониби аксари браузерҳо амалӣ карда мешаванд. Ҳангоми таҳияи апплетҳо, шумо метавонед ба тарафи визуалии барнома тамаркуз кунед, дар ҳоле ки контейнер муҳити бехатарро таъмин мекунад.

  2. Контейнери мизоҷи Application (ACC) маҷмӯи синфҳои Java, китобхонаҳо ва дигар файлҳоро дар бар мегирад, ки барои татбиқи хусусиятҳо ба монанди тазриқ, идоракунии амният ва хидматҳои номгузорӣ дар барномаҳои Java SE лозиманд.

  3. Контейнери веб хидматҳои асосиро барои идора ва иҷрои ҷузъҳои веб (сервлетҳо, ҷузъҳои EJB Lite, саҳифаҳои JSP, филтрҳо, шунавандагон, саҳифаҳои JSF ва хидматҳои веб) пешкаш мекунад. Он барои эҷод кардан, оғоз кардан ва даъват кардани сервлетҳо ва дастгирии протоколҳои HTTP ва HTTPS масъул аст. Ин контейнер барои хидматрасонии саҳифаҳои веб ба браузерҳои муштарӣ истифода мешавад.

  4. Контейнери EJB (Enterprise Java Bean) барои идора ва иҷрои ҷузъҳои модели EJB, ки қабати мантиқии тиҷории барномаро дар бар мегирад, масъул аст. Он воҳидҳои нави лӯбиёи EJB-ро эҷод мекунад, давраи зиндагии онҳоро идора мекунад ва хидматҳо ба монанди транзаксия, амният, ҳамоҳангӣ, тақсимот, номгузорӣ ё қобorятҳои даъвати асинхронӣ пешниҳод мекунад.

Инчунин дар Java EE чор намуди ҷузъҳо мавҷуданд , ки татбиқи мушаххасоти Java EE бояд дастгирӣ кунад:
  1. Апплетҳо барномаҳои интерфейси графикии корбар (GUI) мебошанд, ки дар браузер кор мекунанд. Онҳо аз Swing API-и бой истифода мебаранд, то интерфейсҳои тавонои корбарро тавлид кунанд.

  2. Барномаҳо барномаҳое мебошанд, ки дар тарафи муштарӣ кор мекунанд. Одатан, онҳо интерфейси графикии корбар (GUI) мебошанд ва барои коркарди партия истифода мешаванд.

  3. Барномаҳои веб (иборат аз сервлетҳо ва филтрҳои онҳо, шунавандагони рӯйдодҳои веб, саҳифаҳои JSP ва JSF) - дар як контейнери веб кор мекунанд ва ба дархостҳои HTTP аз муштариёни веб посух медиҳанд. Сервлетҳо инчунин нуқтаҳои ниҳоии хидмати веби SOAP ва RESTful -ро дастгирӣ мекунанд.

  4. Барномаҳои корпоративӣ (бо Enterprise Java Beans, Java Message Service, Java Transaction API, зангҳои асинхронӣ, хидматҳои вақт сохта шудаанд) дар контейнери EJB кор мекунанд. EJB-ҳои аз контейнер идорашаванда мантиқи тиҷорати транзаксияро идора мекунанд. Онҳоро метавон тавассути RMI (ё HTTP барои SOAP ва хидматҳои веби RESTful) ба таври маҳаллӣ ё дурдаст дастрас кард.

Дар диаграммаи зер меъмории маъмулии барномаи Java EE нишон дода шудааст: Муқаддима ба Java EE - 2

Технологияҳо

Ҳамин тавр, мо меъмориро ҷудо кардем. Сохтори умумӣ бояд равшан бошад. Дар ҷараёни тавсифи ҷузъҳои меъморӣ, мо ба баъзе технологияҳои Java EE, аз қабor EJB, JSP ва ғайра дахл кардем. Биёед ба онҳо муфассалтар назар кунем. Дар ҷадвали зер технологияҳое нишон дода шудаанд, ки асосан дар сатҳи муштарӣ истифода мешаванд:
Технология Мақсад
Сервлетҳо Синфҳои Java, ки дархостҳои муштариро динамикӣ коркард мекунанд ва ҷавобҳо тавлид мекунанд (одатан саҳифаҳои HTML).
Чеҳраҳои serverи Java (JSF) Чаҳорчӯба барои сохтани барномаҳои веб бо интерфейси корбар. Ба шумо имкон медиҳад, ки ҷузъҳои интерфейси корбарро (масалан, майдонҳо ва тугмаҳо) ба саҳифа дохил кунед, ин ҷузъҳоро тағир диҳед ва тасдиқ кунед ва ин маълумотро дар нигаҳдории server нигоҳ доред.
Технологияи Java Server Faces Facelets Ин як зернавъи барномаи JSF мебошад, ки ба ҷои саҳифаҳои JSP саҳифаҳои XHTML-ро истифода мебарад
Саҳифаҳои serverи Java (JSP) Ҳуҷҷатҳои матние, ки ба сервлетҳо тартиб дода мешаванд. Ба шумо имкон медиҳад, ки мундариҷаи динамикиро ба саҳифаҳои статикӣ илова кунед (ба монанди саҳифаҳои HTML)
Саҳифаҳои serverи Java Китобхонаи барчаспҳои стандартӣ (JSTL) Китобхонаи барчасп, ки функсияҳои асосиро дар заминаи саҳифаҳои JSP фаро мегирад.
Забони ифода Маҷмӯи барчаспҳои стандартӣ, ки дар саҳифаҳои JSP ва Facelets барои дастрасӣ ба ҷузъҳои Java EE истифода мешаванд.
Контекстҳо ва тазриқи вобастагӣ барои Java EE (CDI) Маҷмӯи хидматҳоеро, ки контейнерҳои Java EE барои идоракунии давраи ҳаёти ҷузъҳо, инчунин ворид кардани ҷузъҳо ба an objectҳои муштарӣ ба таври бехатар пешниҳод мекунанд, намояндагӣ мекунад.
Ҷузъҳои Java Beans Объектҳое, ки ҳамчун нигаҳдории муваққатии маълумот барои саҳифаҳои барнома амал мекунанд.
Ҷадвали зер технологияҳоеро нишон медиҳад, ки дар сатҳи мантиқи тиҷорат истифода мешаванд:
Технология Мақсад
Ҷузъҳои Enterprise Java Beans (bean Enterprise). EJB лӯбиёҳои идорашаванда мебошанд, ки дорои функсияҳои асосии барнома мебошанд.
JAX-RS RESTful хидматҳои веб Ин API барои таҳияи хидматҳои веб мебошад, ки ба услуби меъмории REST мувофиқат мекунанд.
Нуқтаҳои хидматрасонии веб JAX-WS API барои эҷод ва истеъмоли хидматҳои веби SOAP.
Объектҳои Java Persistence API (JPA). API барои дастрасӣ ба маълумот дар мағозаҳои додаҳо ва табдил додани ин маълумот ба an objectҳои забони барномасозии Java ва баръакс.
Java EE лӯбиёи идорашаванда Лӯбиёҳои идорашавандае, ки мантиқи тиҷорати барномаро таъмин мекунанд, аммо хусусиятҳои транзаксионӣ ё амниятии EJB-ро талаб намекунанд.
Хадамоти паёмнависии Java Java Message Service (JMS) API стандарти паёмнависӣ мебошад, ки ба ҷузъҳои замимаи Java EE имкон медиҳад, ки паёмҳоро эҷод, ирсол, қабул ва хонед. Ин алоқаи тақсимшуда, боэътимод ва асинхронӣ байни ҷузъҳоро таъмин мекунад.
Дар ҷадвали зер технологияҳое нишон дода шудаанд, ки дар қабати дастрасии додаҳо истифода мешаванд:
Технология Мақсад
API Java Database Connectivity (JDBC) API-и сатҳи паст барои дастрасӣ ва дарёфти маълумот аз мағозаҳои додаҳо. Истифодаи маъмулии JDBC ин навиштани дархостҳои SQL бар зидди пойгоҳи додаҳои мушаххас мебошад.
API-и Java Persistence API барои дастрасӣ ба маълумот дар мағозаҳои додаҳо ва табдил додани ин маълумот ба an objectҳои забони барномасозии Java ва баръакс. Дар муқоиса бо JDBC сатҳи хеле баландтари API. Тамоми мураккабии JDBC-ро аз таҳиякунанда дар зери сарпӯш пинҳон мекунад.
Архитектураи Java EE Connector API барои пайваст кардани дигар захираҳои корпоративӣ, ба монанди:
  • ERP (Банақшагирии захираҳои корхона, системаи банақшагирии захираҳои корхона),
  • CRM (англисӣ: Идоракунии муносибатҳои муштариён, системаи идоракунии муносибатҳои муштариён).
API Transaction Java (JTA) API барои муайян ва идоракунии транзаксияҳо, аз ҷумла транзаксияҳои тақсимшуда ва транзаксияҳо дар мағозаҳои сершумори додаҳо.

Java EE против Баҳор

Баҳор Framework рақиби Java EE ҳисобида мешавад. Агар шумо ба рушди ин ду платформа назар андозед, манзараи ҷолиб пайдо мешавад. Нахустин versionҳои Java EE бо иштироки IBM сохта шудаанд. Маълум шуд, ки онҳо сард, вале беақл, вазнин ва барои истифода нороҳат буданд. Таҳиягарон аз сабаби зарурати нигоҳ доштани шумораи зиёди файлҳои конфигуратсия ва дигар сабабҳое, ки рушдро мушкил мекунанд, мубориза мебурданд. Дар айни замон IoC баҳор таваллуд шуд. Ин китобхонаи хурд, зебо ва истифодааш осон буд. Он инчунин файли конфигуратсияро истифода бурд, аммо бар хилофи Java EE, танҳо як файл вуҷуд дошт. Содда будани баҳор ба он оварда расонд, ки қариб ҳама дар лоиҳаҳои худ аз ин чаҳорчӯба истифода бурданд. Ва он гоҳ Баҳор ва Java EE роҳи худро ба як чиз оғоз карданд, аммо аз ақсои гуногун. Pivotal Software, таҳиягари Spring, пас аз лоиҳа ба баровардани лоиҳа шурӯъ кард, то ҳама ниёзҳои имконпазир ва ғайриимкони таҳиягарони Javaро пӯшонад. Оҳиста-оҳиста, он чизе, ки қаблан Баҳор ном дошт, аввал ба яке аз лоиҳаҳо табдил ёфт ва сипас бо якчанд лоиҳаҳои дигар дар Spring Core комилан муттаҳид шуд. Хамаи ин боиси ногузир шудани Бахор нисбат ба он чи ки дар аввал буд. Бо мурури замон, пайгирӣ кардани тамоми печи вобастагии баҳор хеле душвор гашт ва зарурати китобхонаи алоҳидае ба миён омад, ки ҳама чизро худаш бор мекунад ва идора мекунад (ҳоло Boot Spring Boot дар ҷое хиҷил шудааст). Дар тӯли ин вақт, JCP дар як чиз кор мекард - барои ноил шудан ба содда кардани ҳадди аксар ҳама чизе, ки дар дохor Java EE имконпазир аст. Дар натиҷа, дар EJB муосир, барои тавсифи лӯбиё, нишон додани як эзоҳ дар болои синф кифоя аст, ки ба таҳиягар дастрасии пурраи технологияи Enterprise Java Beans медиҳад. Ва соддагардонии шабеҳ ба ҳар як мушаххасоти дохor Java EE таъсир расониданд. Дар натиҷа, Spring ва Java EE аз ҷиҳати функсия тақрибан баробаранд. Баъзе чизҳо беҳтаранд, баъзе чизҳо бадтаранд, аммо агар шумо дар саросари ҷаҳон назар кунед, фарқияти калон вуҷуд надорад. Хамин чиз ба мураккабии кор дахл дорад. Ҳам Spring ва ҳам Java EE асбобҳои олӣ мебошанд. Шояд беҳтарин чизест, ки ҳоло барои сохтани барномаҳои шабакавии корпоративӣ дар Java мавҷуд аст. Аммо, Java EE метавонад ба таври умум танҳо дар дохor Enterprise Application Server кор кунад (Tomcat як нест) ва замима дар стеки Spring метавонад дар ҳама чиз (дар ҳамон Tomcat) ва ҳатто бе server кор кунад (зеро он кор мекунад) дар дохor худ мустақилона). Ин Spring-ро як воситаи беҳтарин барои таҳияи барномаҳои хурди GUI ё меъмории хидматрасонии хурд месозад. Аммо аз байн бурдани вобастагӣ аз serverҳои барномавӣ ба миқёспазирии барномаҳои Spring таъсири манфӣ расонд. Ва Java EE барои татбиқи замимаи кластери монолитии миқёспазир мувофиқ аст. Таҳиягароне, ки бо чаҳорчӯбаи баҳорӣ шиносанд, дар айни замон дар бозори меҳнат талабот зиёданд. Чунин буд таърихан рӯй дод: дар замоне, ки Java EE аз ҳад зиёд мураккаб буд, Spring "базаи муштарӣ ба даст овард". Ва ба ҳар ҳол, ба саволи чӣ омӯхтани Spring ё Java EE ҷавоби дақиқ вуҷуд надорад. Ба як навкор маслиҳати зерин додан мумкин аст. Бо ҳарду платформа (ҳадди ақал рӯякӣ) шинос шавед. Дар Java EE ва Spring лоиҳаи хурди хонаро нависед. Ва он гоҳ ба чаҳорчӯбае, ки дар кор лозим аст, амиқтар омӯзед. Дар натиҷа, гузариш байни Spring ва Java EE душвор нахоҳад буд.

Натиҷаҳо

Албатта, дар як мақола мавзӯи калонҳаҷмро инъикос кардан мумкин нест! Пас аз як тонна истилоҳҳои нав, шумо эҳтимол мехоҳед, ки ин донишро дар мисоли воқеии ҳаёт истифода кунед. Аз ин рӯ, мо омӯзиши Java EE-ро идома медиҳем: шумо дар мақолаи навбатӣ дарсҳои амалӣ оид ба ташкor муҳити маҳаллӣ барои рушди Java EE хоҳед ёфт.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION