JavaRush /Java блогу /Random-KY /Java EEге киришүү
zor07
Деңгээл
Санкт-Петербург

Java EEге киришүү

Группада жарыяланган
Бүгүн биз бул эмне экендиги жөнүндө сүйлөшөбүз - Java EE: ал эмнеден турат, Java EE тиркемелеринин архитектурасынын өзгөчөлүктөрү эмнеде жана биз бул платформанын ар кандай технологияларын сүрөттөп беребиз. Теманын өзү кенен, бирок биз негиздер менен токтоп калбайбыз. Аягында биз Java EEди Spring Framework менен кичине салыштырып көрөлү жана суроого жооп беребиз: “эмнени үйрөнүү жакшы” (спойлер: албетте, бардыгын үйрөнүшүңүз керек =) ) Java EEге киришүү - 1Негиздерден баштайлы.

Java EE - бул эмне?

Java EE — Java SEнин үстүнө курулган платформа, ал масштабдуу, көп баскычтуу, масштабдуу, ишенимдүү жана коопсуз тармактык тиркемелерди иштеп чыгуу жана иштетүү үчүн API жана иштөө чөйрөсүн камсыз кылат. Мындай тиркемелер ишкананын тиркемелери деп аталат, анткени алар ири ишканалар туш болгон маселелерди чечет. Бирок, бул түрдөгү тиркемелерден жана Java EE камсыз кылган артыкчылыктардан чоң корпорациялар жана мамлекеттик органдар гана эмес. Java EE платформасы сунуш кылган чечимдер жеке иштеп чыгуучулар жана чакан уюмдар үчүн пайдалуу, кээде жөн гана зарыл.

Java EE өнүктүрүү

Java EE 1998-жылы түзүлгөн Java Community Process (JCP) аркылуу иштелип чыккан. Бул кызыкдар тараптарга Java тил платформасынын спецификацияларынын келечектеги versionларын түзүүгө катышууга мүмкүнчүлүк берет. Бул процесстин негизин JSR (Java Specification Request) түзөт, Java платформасына кошуу сунушталган спецификацияларды жана технологияларды сүрөттөгөн расмий documentтер. Мындай суроо-талаптарды коомчулуктун мүчөлөрү – катардагы иштеп чыгуучулар жана компаниялар жасашат. Акыркыларына Oracle, Red Hat, IBM, Apache жана башка көптөгөн программалар кирет. Ошол. балдар Java-га киргизгиси келген жаңы функцияларды жана жакшы нерселерди сунушташат. Анан алар добуш берип, анын негизинде кийинки вариантка эмнени киргизүү боюнча чечим кабыл алынат. Java EE versionсынын тарыхы төмөнкүдөй көрүнөт:
  • 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 Java EE 8 менен толук шайкеш келген Джакарта EE деп аталды.

Java EE колдонмо архитектурасы

Кыскача киришүү. Түшүнүүнү жеңилдетүү үчүн, келгиле, Java EE тиркемелеринин структурасы жана андан ары колдоно турган кээ бир терминдер жөнүндө сүйлөшөлү. Java EE тиркемелери эки негизги сапатка ээ структурага ээ:
  • Биринчиден, көп баскычтуу. Java EE тиркемелери көп баскычтуу жана биз бул жөнүндө кененирээк сүйлөшөбүз;
  • экинчиден, уя салуу. Java EE serverи (же колдонмо serverи) бар, анын ичинде компоненттик контейнерлер жайгашкан. Бул контейнерлер (бинго!) компоненттерин камтыйт.
Java EE колдонмолорунун архитектурасын түшүндүрүү үчүн алгач катмарлар жөнүндө сүйлөшөлү. Деңгээлдери кандай? Кандай Java EE технологиялары ар кандай деңгээлде колдонулат? Андан кийин, биз тиркеме serverлери, компонент контейнерлери жана компоненттердин өздөрү бири-бири менен кандайча байланышканын талкуулайбыз. Бирок мунун баары бир эле нерседе ар кайсы бурчтан көз караштар экенин эстен чыгарбоо керек жана бул жерде тартип анчалык деле маанилүү эмес.

Колдонмо деңгээли

Көп деңгээлдүү тиркемелер – функционалдык принциптери боюнча обочолонгон модулдарга (деңгээлдерге, катмарларга) бөлүнгөн тиркемелер. Адатта (анын ичинде Java EE өнүктүрүү контекстинде) ишкана колдонмолору үч деңгээлге бөлүнөт:
  • кардар;
  • орто деңгээл;
  • маалыматтарга кирүү деңгээли.
  1. Кардар катмары Java EE serverинен (орто катмар) маалыматтарды сураган тиркеме. Сервер өз кезегинде кардардын суроо-талабын иштеп чыгат жана ага жооп кайтарат. Кардар тиркемеси браузер, өз алдынча тиркеме (мобилдик же рабочий) же графикалык интерфейси жок башка serverдик тиркемелер болушу мүмкүн.

  2. Орто деңгээл, өз кезегинде, веб-деңгээлге жана бизнес-логикалык деңгээлге бөлүнөт.

    1. Веб катмар кардарлар менен бизнес-логикалык катмардын ортосундагы өз ара аракеттенүүнү камсыз кылган кээ бир компоненттерден турат.

      Төмөнкү Java EE технологиялары веб деңгээлинде колдонулат:

      • JavaServer Faces технологиясы (JSF);
      • Java Server Pages (JSP);
      • Expression Language (EL);
      • Сервлеттер;
      • Java EE (CDI) үчүн контексттер жана көз карандылык инъекциясы.

    2. Бизнес-логикалык катмар тиркеменин бардык бизнес логикасын ишке ашыруучу компоненттерден турат. Бизнес логикасы – бул белгилүү бир бизнес чөйрөсүнүн (финансылык индустрия, банк иши, электрондук коммерция) муктаждыктарын камтыган функцияларды камсыз кылган code. Бул деңгээлди бүткүл системанын өзөгү деп эсептесе болот.

      Бул деңгээлдеги технологиялар:

      • Enterprise JavaBeans (EJB);
      • JAX-RS RESTful веб кызматтары;
      • Java Persistence API an objectилери;
      • Java билдирүү кызматы.

  3. Берorштерге жетүү деңгээли. Бул деңгээл кээде ишкананын маалымат системаларынын деңгээли (EIS) деп аталат. EIS ар кандай маалыматтар базасынын serverлеринен, ERP (Ишкананын ресурстарын пландаштыруу) ишкананын ресурстарын пландаштыруу системаларынан жана башка маалымат булактарынан турат. Бизнес логикалык катмар маалыматтар үчүн бул катмарга жетет.

    Бул деңгээлде сиз төмөнкүдөй технологияларды таба аласыз:

    • Java Database Connectivity API (JDBC);
    • Java Persistence API;
    • Java EE Connector Architecture;
    • Java Transaction API (JTA).

Колдонмо serverлери, контейнерлер, компоненттер

Келгиле, Wikipediaдан Java EE аныктамасын карап көрөлү. Java EE – бул орто жана ири ишканалардын тапшырмалары үчүн serverдик платформанын архитектурасын сүрөттөгөн Java тor үчүн спецификациялардын жана тиешелүү documentтердин жыйындысы. Бул контекстте "спецификациялардын топтому" эмнени билдирерин жакшыраак түшүнүү үчүн, келгиле, Java интерфейсине окшоштуктарды көрөлү. Java интерфейсинин өзү функционалдуу эмес. Ал жөн гана кандайдыр бир функцияны ишке ашырган кандайдыр бир келишимди аныктайт. Бирок башка класстар интерфейсти ишке ашырышат. Мындан тышкары, бир интерфейсте бир нече ишке ашырылышы мүмкүн, алардын ар бири бири-биринен айрым деталдары боюнча айырмаланышы мүмкүн. спецификациясы менен баары так ошондой. Жылаңач Java EE бул жөн гана спецификациялардын жыйындысы. Бул спецификациялар ар кандай Java EE serverлери тарабынан ишке ашырылат. Java EE serverи Java EE платформасынын API'лерин ишке ашырган жана стандарттуу Java EE кызматтарын көрсөткөн serverдик тиркеме. Java EE serverлери кээде колдонмо serverлери деп аталат. Сервер маалыматтары тиркеме компоненттерин камтышы мүмкүн, алардын ар бири көп деңгээлдүү иерархияда өзүнүн деңгээлине туура келет. Java EE serverи бул компоненттерге контейнер түрүндө ар кандай кызматтарды көрсөтөт. Контейнерлер алар жайгаштырган компоненттер менен компонентти колдогон төмөнкү деңгээлдеги платформадан көз карандысыз функциянын ортосундагы интерфейс. Контейнерлер алар жайгаштырган компоненттерге белгилүү кызматтарды көрсөтөт. Мисалы, иштеп чыгуунун жашоо циклин башкаруу, көз карандылыкты инъекциялоо, параллелдүүлүк ж. Java EEде контейнерлердин төрт түрү бар:
  1. Апплет контейнерлери көпчүлүк браузерлер тарабынан ишке ашырылат. Апплеттерди иштеп чыгууда, сиз колдонмонун визуалдык жагына көңүл бурсаңыз болот, ал эми контейнер коопсуз чөйрөнү камсыз кылат.

  2. Колдонмо Кардар Контейнери (ACC) Java класстарынын, китепканалардын жана Java SE тиркемелеринде инъекция, коопсуздукту башкаруу жана ат коюу кызматтары сыяктуу функцияларды ишке ашыруу үчүн зарыл болгон башка файлдардын топтомун камтыйт.

  3. Веб-контейнер желе компоненттерин (сервлеттер, EJB Lite компоненттери, JSP баракчалары, чыпкалары, угуучулары, JSF баракчалары жана веб кызматтары) башкаруу жана аткаруу үчүн негизги кызматтарды камсыз кылат. Ал сервлеттерди инстанциялоо, инициализациялоо жана чакыруу жана HTTP жана HTTPS протоколдорун колдоо үчүн жооптуу. Бул контейнер кардардын браузерлерине веб-баракчаларды тейлөө үчүн колдонулат.

  4. EJB (Enterprise Java Bean) контейнери колдонмонун бизнес логикалык катмарын камтыган EJB моделинин компоненттерин башкаруу жана аткаруу үчүн жооптуу. Ал жаңы EJB буурчак an objectтерин түзөт, алардын жашоо циклин башкарат жана транзакция, коопсуздук, параллелдүүлүк, бөлүштүрүү, ат коюу же асинхрондук чакыруу мүмкүнчүлүктөрү сыяктуу кызматтарды көрсөтөт.

Ошондой эле 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лер транзакциялык бизнес логикасын иштетишет. Аларга жергorктүү же алыстан RMI (же SOAP жана RESTful веб кызматтары үчүн HTTP) аркылуу кирүүгө болот.

Төмөнкү диаграмма типтүү Java EE колдонмо архитектурасын көрсөтөт: Java EEге киришүү - 2

Technologies

Ошентип, биз архитектураны иретке келтирдик. Жалпы структура ачык болушу керек. Архитектуралык компоненттерди баяндоо процессинде биз EJB, JSP ж.б. сыяктуу кээ бир Java EE технологияларына токтолдук. Келгиле, аларды кененирээк карап чыгалы. Төмөнкү tableда негизинен кардар деңгээлинде колдонулган технологиялар көрсөтүлгөн:
Технология Максат
Сервлеттер Кардардын суроо-талаптарын динамикалык түрдө иштеп чыгуучу жана жоопторду жаратуучу Java класстары (көбүнчө HTML баракчалары).
Java Server Faces (JSF) Колдонуучу интерфейси менен веб-тиркемелерди куруу үчүн негиз. Колдонуучу интерфейсинин компоненттерин (мисалы, талаалар жана баскычтар) баракка кошууга, бул компоненттерди трансформациялоого жана текшерүүгө жана бул маалыматтарды serverдик сактагычта сактоого мүмкүндүк берет.
Java Server Faces Facelet технологиясы Бул JSP барактарынын ордуна XHTML баракчаларын колдонгон JSF тиркемесинин бир түрү
Java server баракчалары (JSP) Сервлеттерге түзүлгөн тексттик documentтер. Статикалык барактарга динамикалык мазмунду кошууга мүмкүндүк берет (мисалы, HTML баракчалары)
Java server баракчаларынын стандарттык тег китепканасы (JSTL) JSP баракчаларынын контекстинде негизги функцияларды камтыган тег китепканасы.
Экспрессия тor Java EE компоненттерине кирүү үчүн JSP жана Facelets баракчаларында колдонулган стандарттык тегдердин жыйындысы.
Java EE (CDI) үчүн контексттер жана көз карандылык инъекциясы Компоненттердин жашоо циклин башкаруу, ошондой эле компоненттерди коопсуз жол менен кардар an objectтерине инъекциялоо үчүн Java EE контейнерлери тарабынан сунушталган кызматтардын жыйындысын билдирет.
Java Beans компоненттери Колдонмо баракчалары үчүн убактылуу маалымат сактагыч катары иштеген an objectтер.
Төмөнкү table бизнес-логикалык деңгээлде колдонулган технологияларды көрсөтөт:
Технология Максат
Enterprise Java Beans (ишкана буурчак) компоненттери EJB - бул колдонмонун негизги функцияларын камтыган башкарылуучу буурчак.
JAX-RS RESTful веб кызматтары Бул REST архитектуралык стorне ылайык веб-кызматтарды иштеп чыгуу үчүн API болуп саналат.
JAX-WS желе кызматынын акыркы чекиттери SOAP желе кызматтарын түзүү жана керектөө үчүн API.
Java Persistence API (JPA) an objectтери Берorштер дүкөндөрүндөгү маалыматтарга жетүү жана ал маалыматтарды Java программалоо тorнин an objectтерине жана тескерисинче айландыруу үчүн API.
Java EE башкарган буурчак Колдонмонун бизнес логикасын камсыз кылган, бирок EJB транзакциялык же коопсуздук өзгөчөлүктөрүн талап кылбаган башкарылуучу буурчактар.
Java билдирүү кызматы Java Message Service (JMS) API Java EE колдонмо компоненттерине билдирүүлөрдү түзүүгө, жөнөтүүгө, кабыл алууга жана окууга мүмкүндүк берген билдирүү стандарты болуп саналат. Бул компоненттердин ортосунда бөлүштүрүлгөн, ишенимдүү жана асинхрондук байланышты камсыз кылат.
Төмөнкү tableда маалыматтарга кирүү катмарында колдонулган технологиялар көрсөтүлгөн:
Технология Максат
Java маалымат базасынын туташуусу API (JDBC) Маалымат дүкөндөрүнөн берorштерге жетүү жана алуу үчүн төмөнкү деңгээлдеги API. JDBC типтүү колдонуу белгилүү бир маалымат базасына каршы SQL суроо жазуу болуп саналат.
Java Persistence API Берorштер дүкөндөрүндөгү маалыматтарга жетүү жана ал маалыматтарды Java программалоо тorнин an objectтерине жана тескерисинче айландыруу үчүн API. JDBCге салыштырмалуу бир топ жогорку деңгээлдеги API. JDBCтин бардык татаалдыгын капоттун астындагы иштеп чыгуучудан жашырат.
Java EE туташтыргычынын архитектурасы Башка корпоративдик ресурстарды туташтыруу үчүн API, мисалы:
  • ERP (Enterprise Resource Planning, ишкананын ресурстарын пландаштыруу системасы),
  • CRM (англисче: Customer Relationship Management, кардарлар менен байланышты башкаруу системасы).
Java Transaction API (JTA) Транзакцияларды, анын ичинде бөлүштүрүлгөн транзакцияларды жана бир нече маалымат дүкөндөрүндөгү транзакцияларды аныктоо жана башкаруу үчүн API.

Java EE vs Spring

Spring Framework Java EEге атаандаш болуп эсептелет. Бул эки платформанын өнүгүшүн карасаңыз, кызыктуу сүрөт пайда болот. Java EEнин биринчи versionлары IBMдин катышуусу менен түзүлгөн. Алар салкын, бирок олдоксон, оор жана колдонууга ыңгайсыз болуп чыкты. Иштеп чыгуучулар көп сандагы конфигурация файлдарын сактоо зарылдыгынан жана өнүгүүнү татаалданткан башка себептерден улам күрөшүп келишкен. Ошол эле учурда, Жазгы IoC төрөлгөн. Бул кичинекей, кооз жана колдонууга оңой китепкана болчу. Ал ошондой эле конфигурация файлын колдонгон, бирок Java EEден айырмаланып, бир гана файл болгон. Жаздын жөнөкөйлүгү дээрлик ар бир адам өз долбоорлорунда бул алHowты колдоно баштаганына алып келди. Анан Жаз жана Java EE бир эле нерсеге, бирок ар башка жактарга жол башташты. Spring программасын иштеп чыгуучу Pivotal Software, Java иштеп чыгуучуларынын бардык мүмкүн болгон жана мүмкүн эмес муктаждыктарын жабуу үчүн долбоордун артынан долбоорлорду чыгара баштады. Бара-бара, мурда Жаз деп аталып келген нерсе адегенде долбоорлордун бири болуп калды, андан кийин Spring Coreдогу бир нече башка долбоорлор менен толугу менен кошулду. Мунун баары Жаздын башында болгонго караганда сөзсүз татаалдашына алып келди. Убакыттын өтүшү менен Жазгы көз карандылыктын бардык чыр-чатагына көз салуу абдан кыйын болуп калды жана баарын өзү жүктөй турган жана иштете турган өзүнчө китепканага муктаждык пайда болду (азыр сүйүктүү Жазгы Бут бир жерде кысып калды). Ушул убакыттын ичинде JCP бир нерсенин үстүндө иштеп жатат - Java EE ичинде мүмкүн болгон нерселердин бардыгын максималдуу жөнөкөйлөштүрүүгө жетишүү. Натыйжада, заманбап EJBде буурчакты сүрөттөө үчүн класстын үстүндө бир annotationны көрсөтүү жетиштүү, бул иштеп чыгуучуга Enterprise Java Beans технологиясынын толук күчүн колдонууга мүмкүнчүлүк берет. Жана ушул сыяктуу жөнөкөйлөтүүлөр Java EE ичиндеги ар бир спецификацияга таасирин тийгизди. Натыйжада, Spring жана Java EE функционалдык жагынан болжолдуу паритет. Кээ бир нерселер жакшыраак, кээ бир нерселер андан да жаман, бирок глобалдык деңгээлде карасаңыз, чоң айырмачылыктар жок. Ошол эле иштин татаалдыгына да тиешелүү. Жаз жана Java EE экөө тең эң сонун куралдар. Балким, азыркы учурда Java'да корпоративдик тармактык тиркемелерди куруу үчүн эң мыктысы. Бирок, Java EE жалпысынан Enterprise Application Server ичинде гана иштей алат (Tomcat бирөө эмес), ал эми Spring стектеги тиркеме бардык нерседе (ошол эле Tomcatта) жана ал тургай serverсиз да иштей алат (анткени ал иштейт) ал өз алдынча өз ичинде). Бул Spring чакан алдыңкы GUI тиркемелерин же микросервис архитектураларын иштеп чыгуу үчүн идеалдуу курал кылат. Бирок тиркемелердин serverлеринен көз карандылыкты жоюу жазгы тиркемелердин масштабдуулугуна терс таасирин тийгизди. Жана Java EE масштабдуу монолиттүү кластердик тиркемени ишке ашыруу үчүн абдан ылайыктуу. Жазгы алHow менен тааныш иштеп чыгуучулар учурда эмгек рыногунда көбүрөөк суроо-талапка ээ. Тарыхый жактан ушундай болгон: Java EE өтө татаал болгон учурда, Spring "кардар базасына ээ болгон". Бирок, Жаз же Java EE эмнени үйрөнүү керек деген суроого так жооп жок. Баштоочуга төмөнкү кеңештерди берсе болот. Эки платформа менен таанышыңыз (жок дегенде үстүртөн). Java EE жана жазында кичинекей үй долбоорун жазыңыз. Анан жумушта керек боло турган алHowты тереңирээк изилдеңиз. Натыйжада, Spring жана Java EE ортосунда которулуу кыйын болбойт.

Жыйынтыктар

Чоң теманы, албетте, бир макалада чагылдырууга болбойт! Бир нече жаңы терминдерден кийин, сиз бул бorмди турмуштук мисалга "колдонгуңуз" келет. Ошондуктан, биз Java EEди изилдөөнү улантабыз: кийинки макалада Java EE өнүктүрүү үчүн жергorктүү чөйрөнү түзүү боюнча практикалык сабактарды табасыз.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION