JavaRush /Java Blogu /Random-AZ /Java EE-yə giriş
zor07
Səviyyə
Санкт-Петербург

Java EE-yə giriş

Qrupda dərc edilmişdir
Bu gün biz bunun nə olduğu haqqında danışacağıq - Java EE: nədən ibarətdir, Java EE proqramlarının arxitekturasının xüsusiyyətləri nələrdir və biz bu platformanın müxtəlif texnologiyalarının təsvirlərini təqdim edəcəyik. Mövzunun özü genişdir, lakin biz əsaslarla dayanmayacağıq. Sonda Java EE-nin Spring Framework ilə kiçik bir müqayisəsini aparacağıq və suala cavab verəcəyik: “nə öyrənmək daha yaxşıdır” (spoiler: əlbəttə ki, hər şeyi öyrənməlisiniz =) ) Java EE-yə giriş - 1Əsaslardan başlayaq.

Java EE - bu nədir?

Java EE genişmiqyaslı, çoxsəviyyəli, miqyaslana bilən, etibarlı və təhlükəsiz şəbəkə proqramlarının işlənib hazırlanması və işlədilməsi üçün API və iş vaxtı mühiti təmin edən Java SE üzərində qurulmuş platformadır. Bu cür proqramlar iri müəssisələrin üzləşdiyi problemləri həll etdiyi üçün müəssisə proqramları adlanır. Bununla belə, bu növ tətbiqlərdən və Java EE-nin təmin etdiyi üstünlüklərdən yalnız böyük korporasiyalar və dövlət qurumları faydalana bilməz. Java EE platformasının təklif etdiyi həllər fərdi tərtibatçılar və kiçik təşkilatlar üçün faydalı və bəzən sadəcə zəruridir.

Java EE inkişafı

Java EE 1998-ci ildə yaradılmış Java İcma Prosesi (JCP) vasitəsilə hazırlanmışdır. O, maraqlı tərəflərə Java dili platformasının spesifikasiyalarının gələcək versiyalarının formalaşdırılmasında iştirak etməyə imkan verir. Bu prosesin əsasını Java platformasına əlavə edilməsi təklif olunan spesifikasiyaları və texnologiyaları təsvir edən rəsmi sənədlər olan JSR (Java Specification Request) təşkil edir. Bu cür sorğular icma üzvləri - adi tərtibatçılar və şirkətlər tərəfindən edilir. Sonunculara Oracle, Red Hat, IBM, Apache və bir çox başqaları daxildir. Bunlar. uşaqlar Java-ya daxil etmək istədiklərini nəzərə almaq üçün yeni funksiyalar və yaxşılıqlar təklif edirlər. Sonra da səsvermə keçirirlər, onun əsasında növbəti varianta nələrin daxil ediləcəyi ilə bağlı qərar verilir. Java EE versiyasının tarixçəsi belə görünür:
  • J2EE 1.2 (Dekabr 1999)
  • J2EE 1.3 (Sentyabr 2001)
  • J2EE 1.4 (noyabr 2003)
  • Java EE 5 (May 2006)
  • Java EE 6 (dekabr 2009)
  • Java EE 7 (May)
  • Java EE 8 (Avqust 2017)
  • Cakarta EE 8 (sentyabr 2019)
2017-ci ildə platformanın inkişafında yeni bir mərhələ baş verdi: Oracle Java EE-nin inkişafı üzərində nəzarəti Eclipse Fonduna verdi. 2018-ci ilin aprel ayında isə Java EE Java EE 8 ilə tam uyğun gələn Cakarta EE adlandırıldı.

Java EE Proqram Memarlığı

Qısa bir giriş. Anlamağı asanlaşdırmaq üçün Java EE proqramlarının strukturu və bundan sonra istifadə edəcəyimiz bəzi terminlər haqqında danışaq. Java EE proqramları iki əsas keyfiyyətə malik bir quruluşa malikdir:
  • Birincisi, çox səviyyəli. Java EE proqramları çox səviyyəlidir və biz bu barədə daha ətraflı danışacağıq;
  • ikincisi, yuva qurma. Java EE serveri (və ya proqram serveri) var, onun daxilində komponent konteynerləri yerləşir. Bu konteynerlərdə (bingo!) komponentlər var.
Java EE proqramlarının arxitekturasını izah etmək üçün əvvəlcə təbəqələrdən danışaq. Səviyyələr hansılardır? Müxtəlif səviyyələrdə hansı Java EE texnologiyalarından istifadə olunur? Sonra, proqram serverlərinin, komponent konteynerlərinin və komponentlərin özlərinin bir-birinə necə bağlı olduğunu müzakirə edəcəyik. Ancaq unutmayın ki, bunların hamısı eyni şeyə fərqli bucaqlardan baxışdır və burada nizam o qədər də vacib deyil.

Tətbiq səviyyələri

Çox səviyyəli tətbiqlər funksional prinsiplərə görə təcrid olunmuş modullara (səviyyələr, təbəqələr) bölünən tətbiqlərdir. Tipik olaraq (o cümlədən Java EE inkişafı kontekstində) müəssisə proqramları üç səviyyəyə bölünür:
  • müştəri;
  • orta səviyyə;
  • məlumat giriş səviyyəsi.
  1. Müştəri səviyyəsi Java EE serverindən (orta səviyyə) məlumat tələb edən proqramdır. Server isə öz növbəsində müştərinin sorğusunu emal edir və ona cavab qaytarır. Müştəri proqramı brauzer, müstəqil proqram (mobil və ya masa üstü) və ya qrafik interfeysi olmayan digər server proqramları ola bilər.

  2. Orta səviyyə, öz növbəsində, veb səviyyəsinə və biznes məntiqi səviyyəsinə bölünür.

    1. Veb qatı müştərilər və biznes məntiqi təbəqəsi arasında qarşılıqlı əlaqəni təmin edən bəzi komponentlərdən ibarətdir.

      Veb səviyyəsində aşağıdakı Java EE texnologiyalarından istifadə olunur:

      • JavaServer Faces texnologiyası (JSF);
      • Java Server Səhifələri (JSP);
      • İfadə dili (EL);
      • Servletlər;
      • Java EE (CDI) üçün kontekstlər və asılılıq inyeksiyası.

    2. Biznes məntiqi təbəqəsi tətbiqin bütün biznes məntiqini həyata keçirən komponentlərdən ibarətdir. Biznes məntiqi bəzi xüsusi biznes sahəsinin (maliyyə sənayesi, bank işi, e-ticarət) ehtiyaclarını əhatə edən funksionallığı təmin edən koddur. Bu səviyyəni bütün sistemin əsası hesab etmək olar.

      Bu səviyyədə iştirak edən texnologiyalar:

      • Enterprise JavaBeans (EJB);
      • JAX-RS RESTful veb xidmətləri;
      • Java Persistence API obyektləri;
      • Java Mesaj Xidməti.

  3. Məlumata giriş səviyyəsi. Bu səviyyə bəzən müəssisənin informasiya sistemlərinin səviyyəsi (EIS) adlanır. EIS müxtəlif verilənlər bazası serverlərindən, ERP (Enterprise Resource Planning) müəssisə resurslarının planlaşdırılması sistemlərindən və digər məlumat mənbələrindən ibarətdir. Biznes məntiqi təbəqə məlumat üçün bu təbəqəyə daxil olur.

    Bu səviyyədə aşağıdakı kimi texnologiyalar tapa bilərsiniz:

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

Tətbiq serverləri, konteynerlər, komponentlər

Gəlin Vikipediyadan Java EE tərifinə nəzər salaq. Java EE orta və böyük müəssisələrin tapşırıqları üçün server platformasının arxitekturasını təsvir edən Java dili üçün spesifikasiyalar və əlaqəli sənədlər toplusudur. Bu kontekstdə “spesifikasiyalar dəsti”nin nə demək olduğunu daha yaxşı başa düşmək üçün Java interfeysi ilə bənzətmə aparaq. Java interfeysinin özü funksionallıqdan məhrumdur. O, sadəcə olaraq bəzi funksionallığın həyata keçirildiyi bəzi müqaviləni müəyyən edir. Lakin digər siniflər interfeysi həyata keçirir. Üstəlik, bir interfeysdə hər biri bəzi detallarda bir-birindən fərqlənə bilən bir neçə tətbiqetmə ola bilər. Spesifikasiya ilə hər şey eynidir. Çılpaq Java EE sadəcə spesifikasiyalar toplusudur. Bu spesifikasiyalar müxtəlif Java EE serverləri tərəfindən həyata keçirilir. Java EE serveri Java EE platforması API-lərini həyata keçirən və standart Java EE xidmətləri göstərən server proqramıdır. Java EE serverlərinə bəzən proqram serverləri deyilir. Server məlumatlarında hər biri çoxsəviyyəli iyerarxiyada öz səviyyəsinə uyğun gələn proqram komponentləri ola bilər. Java EE serveri bu komponentlərə konteyner şəklində müxtəlif xidmətlər təqdim edir. Konteynerlər yerləşdirdikləri komponentlər və komponenti dəstəkləyən aşağı səviyyəli platformadan müstəqil funksionallıq arasında interfeysdir. Konteynerlər yerləşdirdikləri komponentlərə xüsusi xidmətlər təqdim edirlər. Məsələn, inkişafın həyat dövrünün idarə edilməsi, asılılıq inyeksiyası, paralellik və s. Konteynerlər texniki mürəkkəbliyi gizlədir və daşınma qabiliyyətini artırır. Java EE-də dörd fərqli konteyner növü var:
  1. Applet konteynerləri əksər brauzerlər tərəfindən həyata keçirilir. Apletləri inkişaf etdirərkən, konteyner təhlükəsiz mühit təmin edərkən, tətbiqin vizual tərəfinə diqqət yetirə bilərsiniz.

  2. Tətbiq Müştəri Konteyneri (ACC) Java SE proqramlarında inyeksiya, təhlükəsizliyin idarə edilməsi və adlandırma xidmətləri kimi xüsusiyyətləri həyata keçirmək üçün lazım olan bir sıra Java sinifləri, kitabxanalar və digər faylları ehtiva edir.

  3. Veb konteyner veb komponentlərinin (servletlər, EJB Lite komponentləri, JSP səhifələri, filtrlər, dinləyicilər, JSF səhifələri və veb xidmətləri) idarə edilməsi və icrası üçün əsas xidmətləri təmin edir. O, servletlərin yaradılması, işə salınması və işə salınması və HTTP və HTTPS protokollarının dəstəklənməsi üçün məsuliyyət daşıyır. Bu konteyner müştəri brauzerlərinə veb səhifələrə xidmət etmək üçün istifadə olunur.

  4. EJB (Enterprise Java Bean) konteyneri proqramın biznes məntiqi qatını ehtiva edən EJB model komponentlərinin idarə edilməsi və icrasına cavabdehdir. O, yeni EJB lobya obyektləri yaradır, onların həyat dövrünü idarə edir və əməliyyat, təhlükəsizlik, paralellik, paylama, adlandırma və ya asinxron çağırış imkanları kimi xidmətlər təqdim edir.

Həmçinin Java EE-də Java EE spesifikasiyasının tətbiqi dəstəkləməli olduğu dörd növ komponent var :
  1. Appletlər brauzerdə işləyən qrafik istifadəçi interfeysi (GUI) proqramlarıdır. Güclü istifadəçi interfeysləri yaratmaq üçün zəngin Swing API-dən istifadə edirlər.

  2. Tətbiqlər müştəri tərəfində işləyən proqramlardır. Adətən onlar qrafik istifadəçi interfeysidir (GUI) və toplu emal üçün istifadə olunur.

  3. Veb proqramlar (servletlər və onların filtrlərindən, veb hadisə dinləyicilərindən, JSP və JSF səhifələrindən ibarətdir) - veb konteynerdə işləyin və veb müştərilərin HTTP sorğularına cavab verin. Servletlər həmçinin SOAP və RESTful veb xidmətinin son nöqtələrini dəstəkləyir.

  4. Enterprise proqramlar (Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services ilə qurulmuşdur) EJB konteynerində işləyir. Konteynerlə idarə olunan EJB-lər tranzaksiya biznes məntiqini idarə edir. Onlara yerli və ya uzaqdan RMI (və ya SOAP və RESTful veb xidmətləri üçün HTTP) vasitəsilə daxil olmaq olar.

Aşağıdakı diaqram tipik Java EE proqram arxitekturasını göstərir: Java EE-yə giriş - 2

Texnologiyalar

Beləliklə, biz memarlığı sıraladıq. Ümumi struktur aydın olmalıdır. Memarlıq komponentlərinin təsviri prosesində biz EJB, JSP və s. kimi bəzi Java EE texnologiyalarına toxunduq. Gəlin onlara daha yaxından nəzər salaq. Aşağıdakı cədvəldə əsasən müştəri səviyyəsində istifadə olunan texnologiyalar göstərilir:
Texnologiya Məqsəd
Servletlər Müştəri sorğularını dinamik şəkildə emal edən və cavablar yaradan Java sinifləri (adətən HTML səhifələri).
Java Server Üzləri (JSF) İstifadəçi interfeysi ilə veb proqramlar yaratmaq üçün çərçivə. İstifadəçi interfeysi komponentlərini (məsələn, sahələr və düymələr) səhifəyə daxil etməyə, bu komponentləri çevirməyə və təsdiq etməyə və bu məlumatları server tərəfində saxlamağa imkan verir.
Java Server Faces Facelet texnologiyası Bu, JSP səhifələri əvəzinə XHTML səhifələrindən istifadə edən JSF tətbiqinin alt növüdür
Java Server Səhifələri (JSP) Servletlərə yığılan mətn sənədləri. Statik səhifələrə (HTML səhifələri kimi) dinamik məzmun əlavə etməyə imkan verir.
Java Server Səhifələrinin Standart Etiket Kitabxanası (JSTL) JSP səhifələrinin kontekstində əsas funksionallığı əhatə edən etiket kitabxanası.
İfadə dili Java EE komponentlərinə daxil olmaq üçün JSP və Facelet səhifələrində istifadə olunan standart teqlər dəsti.
Java EE (CDI) üçün kontekstlər və asılılıq inyeksiyası Komponentlərin həyat dövrünün idarə edilməsi, eləcə də komponentlərin təhlükəsiz şəkildə müştəri obyektlərinə yeridilməsi üçün Java EE konteynerləri tərəfindən təqdim edilən xidmətlər toplusunu təmsil edir.
Java lobya komponentləri Tətbiq səhifələri üçün müvəqqəti məlumat saxlama yeri kimi çıxış edən obyektlər.
Aşağıdakı cədvəl biznes məntiqi səviyyəsində istifadə olunan texnologiyaları göstərir:
Texnologiya Məqsəd
Enterprise Java Beans (müəssisə lobya) komponentləri EJB-lər tətbiqin əsas funksionallığını ehtiva edən idarə olunan lobyalardır.
JAX-RS RESTful veb xidmətləri REST memarlıq üslubuna uyğun veb xidmətlərinin inkişafı üçün API-dir.
JAX-WS veb xidmətinin son nöqtələri SOAP veb xidmətləri yaratmaq və istehlak etmək üçün API.
Java Persistence API (JPA) obyektləri Məlumat anbarlarında verilənlərə daxil olmaq və həmin məlumatları Java proqramlaşdırma dili obyektlərinə və əksinə çevirmək üçün API.
Java EE tərəfindən idarə olunan lobya Tətbiqin biznes məntiqini təmin edən, lakin EJB-nin əməliyyat və ya təhlükəsizlik xüsusiyyətlərini tələb etməyən idarə olunan lobya.
Java Mesaj Xidməti Java Mesaj Xidməti (JMS) API Java EE proqram komponentlərinə mesajlar yaratmağa, göndərməyə, qəbul etməyə və oxumağa imkan verən mesajlaşma standartıdır. Bu, komponentlər arasında paylanmış, etibarlı və asinxron rabitəni təmin edir.
Aşağıdakı cədvəl verilənlərə giriş səviyyəsində istifadə olunan texnologiyaları göstərir:
Texnologiya Məqsəd
Java Database Connectivity API (JDBC) Məlumat mağazalarından məlumat əldə etmək və əldə etmək üçün aşağı səviyyəli API. JDBC-nin tipik istifadəsi xüsusi verilənlər bazasına qarşı SQL sorğularının yazılmasıdır.
Java Persistence API Məlumat anbarlarında verilənlərə daxil olmaq və həmin məlumatları Java proqramlaşdırma dili obyektlərinə və əksinə çevirmək üçün API. JDBC ilə müqayisədə daha yüksək səviyyəli API. Başlıq altında tərtibatçıdan JDBC-nin bütün mürəkkəbliyini gizlədir.
Java EE Connector Arxitekturası Digər korporativ resursları birləşdirmək üçün API, məsələn:
  • ERP (Enterprise Resource Planning, müəssisə resurslarının planlaşdırılması sistemi),
  • CRM (İngilis: Customer Relationship Management, müştəri əlaqələri idarəetmə sistemi).
Java Transaction API (JTA) Çoxlu məlumat mağazalarında paylanmış əməliyyatlar və əməliyyatlar daxil olmaqla, əməliyyatları müəyyən etmək və idarə etmək üçün API.

Java EE Bahara qarşı

Spring Framework Java EE-yə rəqib hesab olunur. Bu iki platformanın inkişafına nəzər salsanız, maraqlı mənzərə ortaya çıxır. Java EE-nin ilk versiyaları IBM-in iştirakı ilə yaradılmışdır. Onların sərin, lakin yöndəmsiz, ağır və istifadəsi əlverişsiz olduğu ortaya çıxdı. Tərtibatçılar çoxlu sayda konfiqurasiya faylının saxlanması zərurəti və inkişafı çətinləşdirən digər səbəblər üzündən mübarizə aparırdılar. Eyni zamanda, Spring IoC doğuldu. Kiçik, gözəl və istifadəsi asan kitabxana idi. O, həmçinin konfiqurasiya faylından istifadə etdi, lakin Java EE-dən fərqli olaraq, yalnız bir fayl var idi. Baharın sadəliyi ona gətirib çıxardı ki, demək olar ki, hər kəs öz layihələrində bu çərçivədən istifadə etməyə başladı. Və sonra Spring və Java EE eyni şeyə, lakin fərqli uclardan yollarına başladılar. Spring proqramının tərtibatçısı olan Pivotal Software, Java tərtibatçılarının bütün mümkün və qeyri-mümkün ehtiyaclarını ödəmək üçün layihədən sonra layihə buraxmağa başladı. Tədricən, əvvəllər Bahar adlanan layihə əvvəlcə layihələrdən birinə çevrildi, sonra isə Spring Core-da bir neçə başqa layihə ilə tamamilə birləşdi. Bütün bunlar Baharın əvvəllər olduğu ilə müqayisədə qaçılmaz fəsadlarına səbəb oldu. Zaman keçdikcə Bahar asılılıqlarının bütün dolaşıqlığını izləmək çox çətin oldu və hər şeyi özü yükləyən və işlədən ayrıca bir kitabxanaya ehtiyac yarandı (indi sevimli Bahar Çəkməsi hardasa hıçqırdı). Bütün bu müddət ərzində JCP bir şey üzərində işləyirdi - Java EE daxilində mümkün olan hər şeyin maksimum sadələşdirilməsinə nail olmaq. Nəticədə, müasir EJB-də lobya təsvir etmək üçün sinifdən yuxarı bir annotasiya qeyd etmək kifayətdir ki, bu da tərtibatçıya Enterprise Java Beans texnologiyasının tam gücünə çıxış imkanı verir. Və oxşar sadələşdirmələr Java EE daxilindəki hər bir spesifikasiyaya təsir etdi. Nəticədə, Spring və Java EE funksionallıq baxımından təxminən paritetdir. Bəzi şeylər daha yaxşıdır, bəzi şeylər daha pisdir, amma qlobal olaraq baxsanız, böyük fərqlər yoxdur. Eyni şey işin mürəkkəbliyinə də aiddir. Həm Spring, həm də Java EE əla vasitədir. Bəlkə də Java-da korporativ şəbəkə proqramları yaratmaq üçün mövcud olan ən yaxşısı. Bununla belə, Java EE ümumiyyətlə yalnız Müəssisə Tətbiq Serverində işləyə bilər (Tomcat bir deyil) və Spring stekindəki proqram istənilən yerdə (eyni Tomcat-da) və hətta serversiz də işləyə bilər (çünki o, işləyəcək) müstəqil olaraq öz daxilində). Bu, Spring-i kiçik front-end GUI proqramları və ya mikroservis arxitekturalarını inkişaf etdirmək üçün ideal alət edir. Lakin proqram serverlərindən asılılığın aradan qaldırılması Spring proqramlarının miqyasına mənfi təsir göstərdi. Və Java EE genişlənə bilən monolit klaster tətbiqini həyata keçirmək üçün çox uyğundur. Bahar Çərçivəsi ilə tanış olan tərtibatçılara hazırda əmək bazarında daha çox tələbat var. Tarixən belə oldu: Java EE-nin həddən artıq mürəkkəb olduğu bir vaxtda Bahar “müştəri bazası qazandı”. Bununla belə, Spring və ya Java EE-ni nə öyrənmək lazım olduğu sualına dəqiq cavab yoxdur. Yeni başlayana aşağıdakı məsləhətlər verilə bilər. Hər iki platforma ilə (ən azı səthi) tanış olun. Həm Java EE, həm də Spring-də kiçik bir ev layihəsi yazın. Və sonra işdə lazım olacaq çərçivəni daha dərindən araşdırın. Nəticədə, Spring və Java EE arasında keçid çətin olmayacaq.

Nəticələr

Böyük miqyaslı bir mövzu, təbii ki, bir məqalədə əhatə oluna bilməz! Bir ton yeni termindən sonra, yəqin ki, bu biliyi real həyat nümunəsinə “tətbiq etmək” istərdiniz. Buna görə də, biz Java EE-ni öyrənməyə davam edəcəyik: növbəti məqalədə Java EE inkişafı üçün yerli mühitin yaradılması ilə bağlı praktiki dərslər tapa bilərsiniz.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION