JavaRush /Blog Java /Random-MS /Pengenalan kepada Java EE
zor07
Tahap
Санкт-Петербург

Pengenalan kepada Java EE

Diterbitkan dalam kumpulan
Hari ini kita akan bercakap tentang apa itu - Java EE: kandungannya, apakah ciri-ciri seni bina aplikasi Java EE, dan kami akan memberikan penerangan tentang pelbagai teknologi platform ini. Topik itu sendiri adalah luas, tetapi kami tidak akan berhenti pada asasnya. Pada akhirnya, kami akan membuat perbandingan kecil Java EE dengan Rangka Kerja Spring dan menjawab soalan: "apa yang lebih baik untuk dipelajari" (spoiler: sudah tentu, anda perlu belajar segala-galanya =) ) Pengenalan kepada Java EE - 1Mari kita mulakan dengan asas.

Java EE - apakah itu?

Java EE ialah platform yang dibina di atas Java SE yang menyediakan persekitaran API dan masa jalan untuk membangun dan menjalankan aplikasi rangkaian berskala besar, berbilang peringkat, berskala, boleh dipercayai dan selamat. Aplikasi sedemikian dipanggil aplikasi perusahaan kerana ia menyelesaikan masalah yang dihadapi oleh perniagaan besar. Walau bagaimanapun, syarikat besar dan agensi kerajaan bukanlah satu-satunya yang boleh mendapat manfaat daripada aplikasi tersebut dan faedah yang disediakan oleh Java EE. Penyelesaian yang ditawarkan oleh platform Java EE berguna, dan kadangkala hanya perlu, untuk pembangun individu dan organisasi kecil.

Pembangunan Java EE

Java EE dibangunkan melalui Java Community Process (JCP), yang dibentuk pada tahun 1998. Ia membenarkan pihak yang berminat untuk mengambil bahagian dalam membentuk versi masa depan spesifikasi platform bahasa Java. Asas proses ini ialah JSR (Java Specification Request), dokumen rasmi yang menerangkan spesifikasi dan teknologi yang dicadangkan untuk ditambahkan pada platform Java. Permintaan sedemikian dibuat oleh ahli komuniti - pemaju dan syarikat biasa. Yang terakhir termasuk Oracle, Red Hat, IBM, Apache dan banyak lagi. Itu. mereka mencadangkan ciri dan barang baharu untuk dipertimbangkan yang mereka ingin sertakan dalam Java. Dan kemudian mereka mengadakan undian, berdasarkan keputusan dibuat tentang apa yang perlu dimasukkan dalam versi seterusnya. Sejarah versi Java EE kelihatan seperti ini:
  • J2EE 1.2 (Disember 1999)
  • J2EE 1.3 (September 2001)
  • J2EE 1.4 (November 2003)
  • Java EE 5 (Mei 2006)
  • Java EE 6 (Disember 2009)
  • Java EE 7 (Mei)
  • Java EE 8 (Ogos 2017)
  • Jakarta EE 8 (September 2019)
Pada 2017, pencapaian baharu dalam pembangunan platform telah berlaku: Oracle memindahkan kawalan ke atas pembangunan Java EE kepada Eclipse Foundation. Dan pada April 2018, Java EE telah dinamakan semula Jakarta EE, yang serasi sepenuhnya dengan Java EE 8.

Senibina Aplikasi Java EE

Pengenalan ringkas. Untuk memudahkan pemahaman, mari kita bincangkan tentang struktur aplikasi Java EE dan beberapa istilah yang akan kita gunakan selanjutnya. Aplikasi Java EE mempunyai struktur yang mempunyai dua kualiti utama:
  • Pertama, pelbagai peringkat. Aplikasi Java EE adalah berbilang peringkat, dan kami akan membincangkannya dengan lebih terperinci kemudian;
  • kedua, bersarang. Terdapat pelayan Java EE (atau pelayan aplikasi), dengan bekas komponen terletak di dalamnya. Bekas ini menempatkan komponen (bingo!).
Untuk menerangkan seni bina aplikasi Java EE, mari kita bincangkan tentang lapisan terlebih dahulu. Apakah tahapnya? Apakah teknologi Java EE yang digunakan pada tahap yang berbeza? Seterusnya, kita akan membincangkan bagaimana pelayan aplikasi, bekas komponen dan komponen itu sendiri saling berkaitan. Tetapi perlu diingat bahawa semua ini adalah pandangan dari sudut yang berbeza pada perkara yang sama, dan susunannya tidak begitu penting di sini.

Tahap aplikasi

Aplikasi berbilang peringkat ialah aplikasi yang dibahagikan mengikut prinsip fungsi ke dalam modul terpencil (tahap, lapisan). Biasanya (termasuk dalam konteks pembangunan Java EE), aplikasi perusahaan dibahagikan kepada tiga peringkat:
  • pelanggan;
  • tahap purata;
  • tahap capaian data.
  1. Lapisan klien ialah aplikasi yang meminta data daripada pelayan Java EE (lapisan tengah). Pelayan pula memproses permintaan pelanggan dan mengembalikan respons kepadanya. Aplikasi klien boleh menjadi penyemak imbas, aplikasi kendiri (mudah alih atau desktop), atau aplikasi pelayan lain tanpa antara muka grafik.

  2. Peringkat pertengahan pula dibahagikan kepada peringkat web dan peringkat logik perniagaan.

    1. Lapisan web terdiri daripada beberapa komponen yang menyediakan interaksi antara pelanggan dan lapisan logik perniagaan.

      Teknologi Java EE berikut digunakan pada peringkat web:

      • Teknologi JavaServer Faces (JSF);
      • Halaman Pelayan Java (JSP);
      • Bahasa Ungkapan (EL);
      • Servlets;
      • Konteks dan Suntikan Ketergantungan untuk Java EE (CDI).

    2. Lapisan logik perniagaan terdiri daripada komponen yang melaksanakan semua logik perniagaan aplikasi. Logik perniagaan ialah kod yang menyediakan fungsi yang merangkumi keperluan beberapa kawasan perniagaan tertentu (industri kewangan, perbankan, e-dagang). Tahap ini boleh dianggap sebagai teras keseluruhan sistem.

      Teknologi yang terlibat pada tahap ini:

      • Enterprise JavaBeans (EJB);
      • Perkhidmatan web JAX-RS RESTful;
      • Entiti API Kegigihan Java;
      • Perkhidmatan Mesej Java.

  3. Tahap capaian data. Tahap ini kadangkala dipanggil tahap sistem maklumat perusahaan (EIS). EIS terdiri daripada pelbagai pelayan pangkalan data, sistem perancangan sumber perusahaan ERP (Enterprise Resource Planning) dan sumber data lain. Lapisan logik perniagaan mengakses lapisan ini untuk data.

    Pada tahap ini anda boleh menemui teknologi seperti:

    • API Ketersambungan Pangkalan Data Java (JDBC);
    • API Kegigihan Java;
    • Senibina Penyambung EE Java;
    • Java Transaction API (JTA).

Pelayan aplikasi, bekas, komponen

Mari kita lihat definisi Java EE daripada Wikipedia. Java EE ialah satu set spesifikasi dan dokumentasi berkaitan untuk bahasa Java, menerangkan seni bina platform pelayan untuk tugas perusahaan sederhana dan besar. Untuk lebih memahami maksud "set spesifikasi" dalam konteks ini, mari kita lukiskan analogi dengan antara muka Java. Antara muka Java itu sendiri tidak mempunyai fungsi. Ia hanya mentakrifkan beberapa kontrak mengikut mana beberapa fungsi dilaksanakan. Tetapi kelas lain melaksanakan antara muka. Selain itu, satu antara muka boleh mempunyai beberapa pelaksanaan, setiap satu daripadanya mungkin berbeza antara satu sama lain dalam beberapa butiran. Dengan spesifikasi semuanya betul-betul sama. Naked Java EE hanyalah satu set spesifikasi. Spesifikasi ini dilaksanakan oleh pelbagai pelayan Java EE. Pelayan Java EE ialah aplikasi pelayan yang melaksanakan API platform Java EE dan menyediakan perkhidmatan Java EE standard. Pelayan Java EE kadangkala dipanggil pelayan aplikasi. Data pelayan boleh mengandungi komponen aplikasi, setiap satunya sepadan dengan tahapnya sendiri dalam hierarki berbilang peringkat. Pelayan Java EE menyediakan pelbagai perkhidmatan kepada komponen ini dalam bentuk bekas. Bekas ialah antara muka antara komponen yang dihoskan dan kefungsian bebas platform peringkat rendah yang menyokong komponen tersebut. Bekas menyediakan perkhidmatan khusus kepada komponen yang dihoskan. Contohnya, pengurusan kitaran hayat pembangunan, suntikan pergantungan, konkurensi, dll. Bekas menyembunyikan kerumitan teknikal dan meningkatkan kemudahalihan. Terdapat empat jenis bekas yang berbeza dalam Java EE :
  1. Bekas Applet dilaksanakan oleh kebanyakan penyemak imbas. Apabila membangunkan applet, anda boleh menumpukan perhatian pada bahagian visual aplikasi, manakala bekas menyediakan persekitaran yang selamat.

  2. Application Client Container (ACC) mengandungi set kelas Java, pustaka dan fail lain yang diperlukan untuk melaksanakan ciri seperti suntikan, pengurusan keselamatan dan perkhidmatan penamaan dalam aplikasi Java SE.

  3. Bekas web menyediakan perkhidmatan teras untuk mengurus dan melaksanakan komponen web (servlet, komponen EJB Lite, halaman JSP, penapis, pendengar, halaman JSF dan perkhidmatan web). Ia bertanggungjawab untuk membuat seketika, memulakan dan menggunakan servlet, dan menyokong protokol HTTP dan HTTPS. Bekas ini digunakan untuk menyampaikan halaman web kepada pelayar pelanggan.

  4. Bekas EJB (Enterprise Java Bean) bertanggungjawab untuk mengurus dan melaksanakan komponen model EJB yang mengandungi lapisan logik perniagaan aplikasi. Ia mencipta entiti kacang EJB baharu, mengurus kitaran hayat mereka dan menyediakan perkhidmatan seperti urus niaga, keselamatan, penyelarasan, pengedaran, penamaan, atau keupayaan invokasi tak segerak.

Juga dalam Java EE terdapat empat jenis komponen yang mesti disokong oleh pelaksanaan spesifikasi Java EE:
  1. Applet ialah aplikasi antara muka pengguna grafik (GUI) yang dijalankan dalam penyemak imbas. Mereka memanfaatkan API Swing yang kaya untuk menghasilkan antara muka pengguna yang berkuasa.

  2. Aplikasi ialah program yang dijalankan pada bahagian klien. Biasanya ia adalah antara muka pengguna grafik (GUI) dan digunakan untuk pemprosesan kelompok.

  3. Aplikasi web (terdiri daripada servlet dan penapisnya, pendengar acara web, halaman JSP dan JSF) - dijalankan dalam bekas web dan bertindak balas kepada permintaan HTTP daripada klien web. Servlets juga menyokong SOAP dan titik akhir perkhidmatan web RESTful.

  4. Aplikasi perusahaan (dibina dengan Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services) dijalankan dalam bekas EJB. EJB yang diuruskan kontena mengendalikan logik perniagaan transaksi. Mereka boleh diakses sama ada secara tempatan atau jauh melalui RMI (atau HTTP untuk SOAP dan perkhidmatan web RESTful).

Rajah di bawah menunjukkan seni bina aplikasi Java EE biasa: Pengenalan kepada Java EE - 2

Teknologi

Jadi, kami telah menyusun seni bina. Struktur keseluruhan harus jelas. Dalam proses menghuraikan komponen seni bina, kami menyentuh beberapa teknologi Java EE seperti EJB, JSP, dll. Mari kita lihat dengan lebih dekat mereka. Jadual di bawah menunjukkan teknologi yang digunakan terutamanya pada peringkat pelanggan:
Teknologi Tujuan
Servlets Kelas Java yang memproses permintaan pelanggan secara dinamik dan menjana respons (biasanya halaman HTML).
Muka Pelayan Java (JSF) Rangka kerja untuk membina aplikasi web dengan antara muka pengguna. Membolehkan anda memasukkan komponen antara muka pengguna (contohnya, medan dan butang) pada halaman, mengubah dan mengesahkan komponen ini dan menyimpan data ini dalam storan sebelah pelayan.
Teknologi Facelets Facelets Java Server Ia adalah subjenis aplikasi JSF yang menggunakan halaman XHTML dan bukannya halaman JSP
Halaman Pelayan Java (JSP) Dokumen teks yang disusun ke dalam servlet. Membolehkan anda menambah kandungan dinamik pada halaman statik (seperti halaman HTML)
Pustaka Teg Standard Halaman Pelayan Java (JSTL) Pustaka teg yang merangkum fungsi teras dalam konteks halaman JSP.
Bahasa Ungkapan Satu set teg standard yang digunakan dalam halaman JSP dan Facelets untuk mengakses komponen Java EE.
Konteks dan Suntikan Ketergantungan untuk Java EE (CDI) Mewakili satu set perkhidmatan yang disediakan oleh bekas Java EE untuk mengurus kitaran hayat komponen, serta menyuntik komponen ke dalam objek klien dengan cara yang selamat.
Komponen Kacang Jawa Objek yang bertindak sebagai storan data sementara untuk halaman aplikasi.
Jadual di bawah menunjukkan teknologi yang digunakan pada peringkat logik perniagaan:
Teknologi Tujuan
Komponen Kacang Jawa Perusahaan (kacang perusahaan). EJB ialah kacang terurus yang mengandungi fungsi teras aplikasi.
Perkhidmatan web JAX-RS RESTful Ia adalah API untuk membangunkan perkhidmatan web yang mematuhi gaya seni bina REST.
Titik akhir perkhidmatan web JAX-WS API untuk mencipta dan menggunakan perkhidmatan web SOAP.
Entiti Java Persistence API (JPA). API untuk mengakses data dalam stor data dan menukar data tersebut kepada objek bahasa pengaturcaraan Java dan sebaliknya.
Kacang terurus Java EE Kacang terurus yang menyediakan logik perniagaan aplikasi tetapi tidak memerlukan ciri transaksi atau keselamatan EJB.
Perkhidmatan Mesej Java API Perkhidmatan Mesej Java (JMS) ialah piawaian pemesejan yang membenarkan komponen aplikasi Java EE membuat, menghantar, menerima dan membaca mesej. Ini memastikan komunikasi teragih, boleh dipercayai dan tidak segerak antara komponen.
Jadual di bawah menunjukkan teknologi yang digunakan pada lapisan akses data:
Teknologi Tujuan
API Ketersambungan Pangkalan Data Java (JDBC) API peringkat rendah untuk mengakses dan mendapatkan semula data daripada stor data. Penggunaan biasa JDBC ialah menulis pertanyaan SQL terhadap pangkalan data tertentu.
API Kegigihan Java API untuk mengakses data dalam stor data dan menukar data tersebut kepada objek bahasa pengaturcaraan Java dan sebaliknya. API tahap yang jauh lebih tinggi berbanding JDBC. Menyembunyikan semua kerumitan JDBC daripada pembangun di bawah hud.
Senibina Penyambung EE Java API untuk menghubungkan sumber korporat lain, seperti:
  • ERP (Perancangan Sumber Perusahaan, sistem perancangan sumber perusahaan),
  • CRM (Bahasa Inggeris: Pengurusan Perhubungan Pelanggan, sistem pengurusan perhubungan pelanggan).
Java Transaction API (JTA) API untuk mentakrif dan mengurus urus niaga, termasuk urus niaga dan transaksi yang diedarkan merentas berbilang stor data.

Java EE lwn Spring

Rangka Kerja Spring dianggap sebagai pesaing kepada Java EE. Jika dilihat perkembangan kedua-dua platform ini, terserlah gambar menarik. Versi pertama Java EE telah dicipta dengan penyertaan IBM. Mereka ternyata sejuk, tetapi kekok, berat, dan menyusahkan untuk digunakan. Pembangun bergelut kerana keperluan untuk mengekalkan sejumlah besar fail konfigurasi dan sebab lain yang merumitkan pembangunan. Pada masa yang sama, Spring IoC dilahirkan. Ia adalah perpustakaan yang kecil, cantik dan mudah digunakan. Ia juga menggunakan fail konfigurasi, tetapi tidak seperti Java EE, hanya ada satu. Kesederhanaan Spring telah membawa kepada fakta bahawa hampir semua orang mula menggunakan rangka kerja ini dalam projek mereka. Dan kemudian Spring dan Java EE memulakan laluan mereka ke perkara yang sama, tetapi dari hujung yang berbeza. Pivotal Software, pembangun Spring, mula mengeluarkan projek demi projek untuk menampung semua keperluan pembangun Java yang mungkin dan mustahil. Secara beransur-ansur, apa yang sebelum ini dipanggil Spring mula-mula menjadi salah satu projek, dan kemudian digabungkan sepenuhnya dengan beberapa projek lain dalam Spring Core. Semua ini membawa kepada komplikasi Spring yang tidak dapat dielakkan berbanding dengan asalnya. Lama kelamaan, ia menjadi sangat sukar untuk menjejaki keseluruhan kekusutan kebergantungan Spring, dan keperluan timbul untuk perpustakaan berasingan yang akan memuatkan dan menjalankan segala-galanya sendiri (kini Boot Spring yang disayangi telah tercegat di suatu tempat). Selama ini, JCP telah mengusahakan satu perkara - untuk mencapai penyederhanaan maksimum semua yang mungkin di dalam Java EE. Akibatnya, dalam EJB moden, untuk menerangkan kacang, cukup untuk menentukan satu anotasi di atas kelas, yang memberikan akses pembangun kepada kuasa penuh teknologi Enterprise Java Beans. Dan penyederhanaan yang serupa telah mempengaruhi setiap spesifikasi dalam Java EE. Akibatnya, Spring dan Java EE adalah kira-kira pariti dari segi kefungsian. Ada yang lebih baik, ada yang lebih buruk, tetapi jika anda melihat secara global, tidak ada perbezaan yang besar. Begitu juga dengan kerumitan kerja. Kedua-dua Spring dan Java EE adalah alat yang sangat baik. Mungkin yang terbaik yang ada pada masa ini untuk membina aplikasi rangkaian perusahaan di Java. Walau bagaimanapun, Java EE secara amnya boleh berfungsi hanya dalam Pelayan Aplikasi Perusahaan (Tomcat bukan satu), dan aplikasi pada timbunan Spring boleh dijalankan pada apa-apa sahaja (pada Tomcat yang sama), dan walaupun tanpa pelayan sama sekali (kerana ia akan dijalankan ia dalam dirinya sendiri secara bebas). Ini menjadikan Spring sebagai alat yang ideal untuk membangunkan aplikasi GUI bahagian hadapan kecil atau seni bina perkhidmatan mikro. Tetapi menghapuskan pergantungan pada pelayan aplikasi mempunyai kesan negatif terhadap skalabiliti aplikasi Spring. Dan Java EE sangat sesuai untuk melaksanakan aplikasi kelompok monolitik berskala. Pembangun yang biasa dengan Rangka Kerja Spring kini mendapat permintaan yang lebih besar di pasaran buruh. Beginilah ia berlaku secara sejarah: pada masa Java EE terlalu rumit, Spring "mendapat pangkalan pelanggan." Namun, tiada jawapan yang jelas kepada soalan tentang apa yang perlu dipelajari Spring atau Java EE. Seorang pemula boleh diberi nasihat berikut. Berkenalan (sekurang-kurangnya secara dangkal) dengan kedua-dua platform. Tulis projek rumah kecil dalam Java EE dan Spring. Dan kemudian menyelidiki lebih dalam rangka kerja yang akan diperlukan di tempat kerja. Akibatnya, bertukar antara Spring dan Java EE tidak akan menjadi sukar.

Keputusan

Topik berskala besar, sudah tentu, tidak boleh dibincangkan dalam satu artikel! Selepas satu tan istilah baharu, anda mungkin mahu "menggunakan" pengetahuan ini kepada contoh kehidupan sebenar. Oleh itu, kami akan terus mempelajari Java EE: anda akan mendapat pelajaran praktikal tentang menyediakan persekitaran tempatan untuk pembangunan Java EE dalam artikel seterusnya.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION