JavaRush /Java Blog /Random-ID /Pengantar Java EE
zor07
Level 31
Санкт-Петербург

Pengantar Java EE

Dipublikasikan di grup Random-ID
Hari ini kita akan berbicara tentang apa itu - Java EE: terdiri dari apa, apa saja fitur arsitektur aplikasi Java EE, dan kami akan memberikan deskripsi berbagai teknologi platform ini. Topiknya sendiri sangat luas, tetapi kami tidak akan membahas dasar-dasarnya. Pada akhirnya, kami akan membuat perbandingan kecil Java EE dengan Spring Framework dan menjawab pertanyaan: “apa yang lebih baik untuk dipelajari” (spoiler: tentu saja, Anda perlu mempelajari semuanya =) ) Pengantar Java EE - 1Mari kita mulai dengan dasar-dasarnya.

Java EE - apa itu?

Java EE adalah platform yang dibangun di atas Java SE yang menyediakan API dan lingkungan runtime untuk mengembangkan dan menjalankan aplikasi jaringan berskala besar, multi-tier, terukur, andal, dan aman. Aplikasi semacam ini disebut aplikasi perusahaan karena dapat memecahkan permasalahan yang dihadapi oleh bisnis besar. Namun, bukan hanya perusahaan besar dan lembaga pemerintah saja yang bisa mendapatkan manfaat dari jenis aplikasi ini dan manfaat yang diberikan Java EE. Solusi yang ditawarkan platform Java EE berguna, dan terkadang hanya diperlukan, bagi pengembang individu dan organisasi kecil.

Pengembangan Java EE

Java EE dikembangkan melalui Java Community Process (JCP) yang dibentuk pada tahun 1998. Hal ini memungkinkan pihak yang berkepentingan untuk berpartisipasi dalam membentuk spesifikasi platform bahasa Java versi masa depan. Dasar dari proses ini adalah JSR (Java Spesification Request), dokumen formal yang menjelaskan spesifikasi dan teknologi yang diusulkan untuk ditambahkan ke platform Java. Permintaan tersebut dibuat oleh anggota komunitas - pengembang dan perusahaan biasa. Yang terakhir ini termasuk Oracle, Red Hat, IBM, Apache dan banyak lainnya. Itu. mereka mengusulkan fitur dan barang baru untuk dipertimbangkan yang ingin mereka sertakan di Java. Dan kemudian mereka mengadakan pemungutan suara, berdasarkan keputusan yang dibuat tentang apa yang akan dimasukkan dalam versi berikutnya. Riwayat versi Java EE terlihat seperti ini:
  • J2EE 1.2 (Desember 1999)
  • J2EE 1.3 (September 2001)
  • J2EE 1.4 (November 2003)
  • Java EE 5 (Mei 2006)
  • Java EE 6 (Desember 2009)
  • Java EE 7 (Mei)
  • Java EE 8 (Agustus 2017)
  • Jakarta EE 8 (September 2019)
Pada tahun 2017, tonggak baru dalam pengembangan platform terjadi: Oracle mengalihkan kendali atas pengembangan Java EE ke Eclipse Foundation. Dan pada bulan April 2018, Java EE berganti nama menjadi Jakarta EE, yang sepenuhnya kompatibel dengan Java EE 8.

Arsitektur Aplikasi Java EE

Pengenalan singkat. Agar lebih mudah dipahami, mari kita bahas tentang struktur aplikasi Java EE dan beberapa istilah yang akan kita gunakan lebih lanjut. Aplikasi Java EE memiliki struktur yang memiliki dua kualitas utama:
  • Pertama, bertingkat. Aplikasi Java EE bersifat multi-tingkat, dan kita akan membicarakannya lebih detail;
  • kedua, bersarang. Ada server Java EE (atau server aplikasi), dengan wadah komponen terletak di dalamnya. Kontainer ini menampung komponen (bingo!).
Untuk menjelaskan arsitektur aplikasi Java EE, pertama-tama mari kita bahas tentang lapisan. Apa saja levelnya? Teknologi Java EE apa yang digunakan di berbagai level? Selanjutnya kita akan membahas bagaimana server aplikasi, container komponen, dan komponen itu sendiri saling berhubungan. Namun perlu diingat bahwa semua ini adalah pandangan dari sudut berbeda pada hal yang sama, dan urutannya tidak begitu penting di sini.

Tingkat aplikasi

Aplikasi multi-tier adalah aplikasi yang dibagi menurut prinsip fungsional ke dalam modul terisolasi (level, lapisan). Biasanya (termasuk dalam konteks pengembangan Java EE), aplikasi perusahaan dibagi menjadi tiga tingkatan:
  • klien;
  • level rata-rata;
  • tingkat akses data.
  1. Lapisan klien adalah aplikasi yang meminta data dari server Java EE (lapisan tengah). Server, pada gilirannya, memproses permintaan klien dan mengembalikan responsnya. Aplikasi klien dapat berupa browser, aplikasi mandiri (seluler atau desktop), atau aplikasi server lain tanpa antarmuka grafis.

  2. Tingkat menengah dibagi lagi menjadi tingkat web dan tingkat logika bisnis.

    1. Lapisan web terdiri dari beberapa komponen yang menyediakan interaksi antara klien dan lapisan logika bisnis.

      Teknologi Java EE berikut digunakan di tingkat web:

      • Teknologi Wajah JavaServer (JSF);
      • Halaman Server Java (JSP);
      • Bahasa Ekspresi (EL);
      • Servlet;
      • Konteks dan Injeksi Ketergantungan untuk Java EE (CDI).

    2. Lapisan logika bisnis terdiri dari komponen-komponen yang mengimplementasikan seluruh logika bisnis aplikasi. Logika bisnis adalah kode yang menyediakan fungsionalitas yang mencakup kebutuhan beberapa area bisnis tertentu (industri keuangan, perbankan, e-commerce). Level ini dapat dianggap sebagai inti dari keseluruhan sistem.

      Teknologi yang terlibat pada tingkat ini:

      • Perusahaan JavaBeans (EJB);
      • Layanan web JAX-RS Tenang;
      • Entitas Java Persistence API;
      • Layanan Pesan Java.

  3. Tingkat akses data. Tingkat ini kadang-kadang disebut tingkat sistem informasi perusahaan (EIS). EIS terdiri dari berbagai server database, sistem perencanaan sumber daya perusahaan ERP (Enterprise Resource Planning) dan sumber data lainnya. Lapisan logika bisnis mengakses lapisan ini untuk mendapatkan data.

    Pada level ini Anda dapat menemukan teknologi seperti:

    • API Konektivitas Basis Data Java (JDBC);
    • API Persistensi Java;
    • Arsitektur Konektor Java EE;
    • API Transaksi Java (JTA).

Server aplikasi, kontainer, komponen

Mari kita lihat definisi Java EE dari Wikipedia. Java EE adalah seperangkat spesifikasi dan dokumentasi terkait untuk bahasa Java, yang menjelaskan arsitektur platform server untuk tugas-tugas perusahaan menengah dan besar. Untuk lebih memahami apa arti “seperangkat spesifikasi” dalam konteks ini, mari kita menggambar analogi dengan antarmuka Java. Antarmuka Java sendiri tidak memiliki fungsionalitas. Ini hanya mendefinisikan kontrak tertentu yang dengannya beberapa fungsi diimplementasikan. Tapi kelas lain mengimplementasikan antarmuka. Selain itu, satu antarmuka dapat memiliki beberapa implementasi, yang masing-masing mungkin berbeda satu sama lain dalam beberapa detailnya. Dengan spesifikasi semuanya sama persis. Naked Java EE hanyalah sekumpulan spesifikasi. Spesifikasi ini diterapkan oleh berbagai server Java EE. Server Java EE adalah aplikasi server yang mengimplementasikan API platform Java EE dan menyediakan layanan Java EE standar. Server Java EE terkadang disebut server aplikasi. Data server dapat berisi komponen aplikasi, yang masing-masing memiliki levelnya sendiri dalam hierarki multi-level. Server Java EE menyediakan berbagai layanan untuk komponen ini dalam bentuk container. Kontainer adalah antarmuka antara komponen yang dihostingnya dan fungsionalitas independen platform tingkat rendah yang mendukung komponen tersebut. Kontainer menyediakan layanan khusus untuk komponen yang dihostingnya. Misalnya, manajemen siklus hidup pengembangan, injeksi ketergantungan, konkurensi, dll. Kontainer menyembunyikan kompleksitas teknis dan meningkatkan portabilitas. Ada empat jenis kontainer di Java EE :
  1. Kontainer applet diimplementasikan oleh sebagian besar browser. Saat mengembangkan applet, Anda dapat berkonsentrasi pada sisi visual aplikasi, sementara container menyediakan lingkungan yang aman.

  2. Application Client Container (ACC) berisi sekumpulan kelas Java, perpustakaan, dan file lain yang diperlukan untuk mengimplementasikan fitur seperti injeksi, manajemen keamanan, dan layanan penamaan dalam aplikasi Java SE.

  3. Kontainer web menyediakan layanan inti untuk mengelola dan mengeksekusi komponen web (servlet, komponen EJB Lite, halaman JSP, filter, pendengar, halaman JSF, dan layanan web). Ini bertanggung jawab untuk membuat instance, menginisialisasi dan memanggil servlet, dan mendukung protokol HTTP dan HTTPS. Wadah ini digunakan untuk menyajikan halaman web ke browser klien.

  4. Kontainer EJB (Enterprise Java Bean) bertanggung jawab untuk mengelola dan mengeksekusi komponen model EJB yang berisi lapisan logika bisnis aplikasi. Ini menciptakan entitas kacang EJB baru, mengelola siklus hidupnya, dan menyediakan layanan seperti transaksi, keamanan, konkurensi, distribusi, penamaan, atau kemampuan pemanggilan asinkron.

Juga di Java EE ada empat jenis komponen yang harus didukung oleh implementasi spesifikasi Java EE:
  1. Applet adalah aplikasi antarmuka pengguna grafis (GUI) yang dijalankan di browser. Mereka memanfaatkan Swing API yang kaya untuk menghasilkan antarmuka pengguna yang kuat.

  2. Aplikasi adalah program yang berjalan di sisi klien. Mereka biasanya berupa antarmuka pengguna grafis (GUI) dan digunakan untuk pemrosesan batch.

  3. Aplikasi web (terdiri dari servlet dan filternya, pendengar acara web, halaman JSP dan JSF) - dijalankan dalam wadah web dan merespons permintaan HTTP dari klien web. Servlet juga mendukung titik akhir layanan web SOAP dan RESTful.

  4. Aplikasi perusahaan (dibangun dengan Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services) dijalankan dalam kontainer EJB. EJB yang dikelola kontainer menangani logika bisnis transaksional. Mereka dapat diakses baik secara lokal atau jarak jauh melalui RMI (atau HTTP untuk layanan web SOAP dan RESTful).

Diagram di bawah menunjukkan arsitektur aplikasi Java EE yang khas: Pengantar Java EE - 2

Teknologi

Jadi, kami telah memilah arsitekturnya. Struktur keseluruhannya harus jelas. Dalam proses mendeskripsikan komponen arsitektur, kami menyentuh beberapa teknologi Java EE seperti EJB, JSP, dll. Mari kita lihat lebih dekat. Tabel di bawah ini menunjukkan teknologi yang sebagian besar digunakan di tingkat klien:
Teknologi Tujuan
Servlet Kelas Java yang secara dinamis memproses permintaan klien dan menghasilkan tanggapan (biasanya halaman HTML).
Wajah Server Java (JSF) Kerangka kerja untuk membangun aplikasi web dengan antarmuka pengguna. Memungkinkan Anda memasukkan komponen antarmuka pengguna (misalnya, bidang dan tombol) pada halaman, mengubah dan memvalidasi komponen ini, dan menyimpan data ini di penyimpanan sisi server.
Server Java Menghadapi teknologi Facelets Ini adalah subtipe aplikasi JSF yang menggunakan halaman XHTML, bukan halaman JSP
Halaman Server Java (JSP) Dokumen teks yang dikompilasi menjadi servlet. Memungkinkan Anda menambahkan konten dinamis ke halaman statis (seperti halaman HTML)
Perpustakaan Tag Standar Halaman Server Java (JSTL) Pustaka tag yang merangkum fungsionalitas inti dalam konteks halaman JSP.
Bahasa Ekspresi Seperangkat tag standar yang digunakan di halaman JSP dan Facelets untuk mengakses komponen Java EE.
Konteks dan Injeksi Ketergantungan untuk Java EE (CDI) Mewakili serangkaian layanan yang disediakan oleh kontainer Java EE untuk mengelola siklus hidup komponen, serta memasukkan komponen ke objek klien dengan cara yang aman.
Komponen Kacang Java Objek yang bertindak sebagai penyimpanan data sementara untuk halaman aplikasi.
Tabel di bawah ini menunjukkan teknologi yang digunakan pada tingkat logika bisnis:
Teknologi Tujuan
Komponen Enterprise Java Beans (kacang perusahaan). EJB adalah kacang terkelola yang berisi fungsionalitas inti suatu aplikasi.
Layanan web JAX-RS Tenang Ini adalah API untuk mengembangkan layanan web yang sesuai dengan gaya arsitektur REST.
Titik akhir layanan web JAX-WS API untuk membuat dan menggunakan layanan web SOAP.
Entitas Java Persistence API (JPA). API untuk mengakses data di penyimpanan data dan mengubah data tersebut menjadi objek bahasa pemrograman Java dan sebaliknya.
Kacang yang dikelola Java EE Kacang terkelola yang menyediakan logika bisnis aplikasi tetapi tidak memerlukan fitur transaksional atau keamanan EJB.
Layanan Pesan Java Java Message Service (JMS) API adalah standar perpesanan yang memungkinkan komponen aplikasi Java EE membuat, mengirim, menerima, dan membaca pesan. Hal ini memastikan komunikasi terdistribusi, andal, dan asinkron antar komponen.
Tabel di bawah menunjukkan teknologi yang digunakan pada lapisan akses data:
Teknologi Tujuan
API Konektivitas Basis Data Java (JDBC) API tingkat rendah untuk mengakses dan mengambil data dari penyimpanan data. Penggunaan khas JDBC adalah menulis query SQL terhadap database tertentu.
API Persistensi Java API untuk mengakses data di penyimpanan data dan mengubah data tersebut menjadi objek bahasa pemrograman Java dan sebaliknya. API tingkat yang jauh lebih tinggi dibandingkan dengan JDBC. Menyembunyikan semua kerumitan JDBC dari pengembang.
Arsitektur Konektor Java EE API untuk menghubungkan sumber daya perusahaan lainnya, seperti:
  • ERP (Perencanaan Sumber Daya Perusahaan, sistem perencanaan sumber daya perusahaan),
  • CRM (Bahasa Inggris: Customer Relationship Management, sistem manajemen hubungan pelanggan).
API Transaksi Java (JTA) API untuk menentukan dan mengelola transaksi, termasuk transaksi terdistribusi dan transaksi di beberapa penyimpanan data.

Java EE vs Musim Semi

Spring Framework dianggap sebagai pesaing Java EE. Jika melihat perkembangan kedua platform ini, muncul gambaran menarik. Versi pertama Java EE dibuat dengan partisipasi IBM. Ternyata keren, tapi kikuk, berat, dan tidak nyaman digunakan. Pengembang kesulitan karena kebutuhan untuk memelihara sejumlah besar file konfigurasi dan alasan lain yang mempersulit pengembangan. Pada saat yang sama, Spring IoC lahir. Itu adalah perpustakaan kecil, indah dan mudah digunakan. Itu juga menggunakan file konfigurasi, tetapi tidak seperti Java EE, hanya ada satu. Kesederhanaan Spring telah menyebabkan fakta bahwa hampir semua orang mulai menggunakan kerangka kerja ini dalam proyek mereka. Dan kemudian Spring dan Java EE memulai perjalanan mereka menuju hal yang sama, tetapi dari tujuan yang berbeda. Pivotal Software, pengembang Spring, mulai merilis proyek demi proyek untuk memenuhi semua kebutuhan pengembang Java yang mungkin dan tidak mungkin. Lambat laun, apa yang sebelumnya disebut Spring pertama kali menjadi salah satu proyek, dan kemudian digabungkan sepenuhnya dengan beberapa proyek lain di Spring Core. Semua ini menyebabkan komplikasi Musim Semi yang tak terhindarkan dibandingkan dengan aslinya. Seiring waktu, menjadi sangat sulit untuk melacak seluruh jalinan dependensi Spring, dan muncul kebutuhan akan perpustakaan terpisah yang akan memuat dan menjalankan semuanya sendiri (sekarang Spring Boot tercinta telah terhenti di suatu tempat). Selama ini JCP telah mengerjakan satu hal - untuk mencapai penyederhanaan maksimal dari segala sesuatu yang mungkin dilakukan di dalam Java EE. Hasilnya, dalam EJB modern, untuk mendeskripsikan sebuah bean, cukup dengan menentukan satu anotasi di atas kelasnya, yang memberikan pengembang akses ke kekuatan penuh teknologi Enterprise Java Beans. Dan penyederhanaan serupa telah mempengaruhi setiap spesifikasi dalam Java EE. Hasilnya, Spring dan Java EE memiliki kesamaan dalam hal fungsionalitas. Ada yang lebih baik, ada yang lebih buruk, tapi jika dilihat secara global, tidak ada perbedaan besar. Hal yang sama berlaku untuk kompleksitas pekerjaan. Spring dan Java EE adalah alat yang luar biasa. Mungkin yang terbaik yang ada saat ini untuk membangun aplikasi jaringan perusahaan di Java. Namun, Java EE umumnya hanya dapat bekerja di dalam Server Aplikasi Perusahaan (Tomcat bukan salah satunya), dan aplikasi di tumpukan Spring dapat berjalan di apa saja (di Tomcat yang sama), dan bahkan tanpa server sama sekali (karena akan berjalan itu dalam dirinya sendiri secara mandiri). Hal ini menjadikan Spring alat yang ideal untuk mengembangkan aplikasi GUI front-end kecil atau arsitektur layanan mikro. Namun menghilangkan ketergantungan pada server aplikasi berdampak negatif pada skalabilitas aplikasi Spring. Dan Java EE sangat cocok untuk mengimplementasikan aplikasi cluster monolitik yang dapat diskalakan. Pengembang yang akrab dengan Spring Framework saat ini memiliki permintaan yang lebih besar di pasar tenaga kerja. Inilah yang terjadi secara historis: pada saat Java EE terlalu rumit, Spring “mendapatkan basis pelanggan.” Namun, tidak ada jawaban yang jelas atas pertanyaan tentang apa yang harus dipelajari Spring atau Java EE. Seorang pemula dapat diberikan saran berikut. Kenali (setidaknya secara dangkal) kedua platform tersebut. Tulis proyek rumah kecil di Java EE dan Spring. Dan kemudian selidiki lebih dalam kerangka kerja yang akan dibutuhkan di tempat kerja. Oleh karena itu, beralih antara Spring dan Java EE tidak akan sulit.

Hasil

Topik berskala besar tentu saja tidak bisa dibahas dalam satu artikel! Setelah banyak istilah baru, Anda mungkin ingin “menerapkan” pengetahuan ini pada contoh kehidupan nyata. Oleh karena itu, kami akan terus mempelajari Java EE: Anda akan menemukan pelajaran praktis tentang menyiapkan lingkungan lokal untuk pengembangan Java EE di artikel berikutnya.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION