JavaRush /Java Blog /Random-ID /Rehat kopi #119. Pengantar Java Enterprise Edition (Java ...

Rehat kopi #119. Pengantar Java Enterprise Edition (Java EE)

Dipublikasikan di grup Random-ID
Sumber: Dev.to Java Enterprise Edition (Java EE) adalah seperangkat spesifikasi dan dokumentasi untuk bahasa Java yang menjelaskan arsitektur platform server untuk memecahkan masalah perusahaan menengah dan besar. Rehat kopi #118.  Pengantar Java Enterprise Edition (Java EE) - 1Saat mempelajari Java EE Anda akan menemukan istilah-istilah berikut:
  • Server aplikasi adalah implementasi konkret dari spesifikasi Java EE abstrak. Contoh: Server Payara (Glassfish), IBM OpenLiberty dan JBoss Wildfly.

  • Permintaan Spesifikasi Java (JSR) adalah permintaan formal kepada komunitas Java untuk menambah dan meningkatkan teknologi. Ini adalah badan yang menstandarkan API pada platform teknologi Java dan digunakan untuk mengelompokkan API ke dalam blok, seperti JAX-RS (Java API untuk RESTful Web Services). Untuk setiap JSR, selalu ada implementasi referensi default.

  • Implementasi referensi adalah implementasi/implementasi konkrit dari JSR abstrak. Misalnya, implementasi referensi untuk JAX-RS disebut Jersey. Java EE sendiri merupakan JSR. Dengan demikian, server aplikasi adalah kumpulan implementasi referensi Java EE JSR yang berbeda. Java EE adalah JSR 366, dan salah satu implementasi referensinya adalah Glassfish 5.

  • Jakarta EE adalah nama baru untuk Java EE mulai tahun 2018. Saat ini Oracle telah mentransfer platform Java di bawah pengelolaan Eclipse Foundation .

Dasar-dasar JavaEE

Ada tiga API utama di Java EE:
  1. API Persistensi Java (JPA). Ia bertanggung jawab untuk menyimpan dan mengambil informasi dari database relasional, yang dapat diperluas untuk bekerja dengan database NoSQL. Ini adalah lapisan data dalam aplikasi.

  2. Injeksi Konteks dan Ketergantungan (CDI API). Ini adalah cara standar untuk mengurangi kopling dalam aplikasi. Ia mengelola berbagai interaksi komponen untuk memastikan pemisahan bebas.

  3. Java API untuk Layanan Web RESTful (JAX-RS). Ini menyediakan sumber daya melalui HTTP sebagai layanan web.

API Injeksi Konteks dan Ketergantungan

Injeksi ketergantungan adalah bentuk khusus dari kontrol inversi (strategi perangkat lunak di mana masing-masing komponen menerima ketergantungannya). Hal ini mengeksternalisasi ketergantungan dalam aplikasi untuk membuat komponen kopling rendah.

Fitur CDI

  • Injeksi ketergantungan (Typesafe) memungkinkan Anda mendeklarasikan ketergantungan pada tipe sehingga kompiler menangkap kesalahan saat runtime.

  • Konteks siklus hidup adalah kemampuan untuk mengikat interaksi siklus hidup dan komponen stateful ke komponen siklus hidup yang terdefinisi dengan baik namun dapat diperluas.

  • Pencegat memungkinkan Anda mencegat permintaan untuk mengakses metode tertentu.

  • Acara adalah cara untuk mengembangkan aplikasi yang sangat terpisah. Peristiwa dapat diaktifkan saat metode Pengamat mendengarkan peristiwa yang diaktifkan.

  • Antarmuka Penyedia Layanan (SPI) adalah sekumpulan teknik, API, dan antarmuka yang dapat digunakan sebagai ekstensi, seperti di perpustakaan Apache.

Beberapa konsep CDI API:

  • CDI Bean Discovery adalah mekanisme di mana kerangka injeksi ketergantungan mem-parsing dan menemukan kacang untuk mengontrol bagaimana kacang ditemukan secara default, yaitu kacang dengan anotasi seperti @Annotated. Ada tiga jenis mode penemuan kacang: SEMUA (termasuk kacang yang tidak dianotasi), ANNOTATED, dan NONE.

  • Kontainer CDI adalah metode pabrik tempat kelas Java masuk dan keluar dengan fungsionalitas dan kemampuannya. Ini adalah aplikasi yang mengelola kacang.

  • Contoh Bean dan Kontekstual. Bean adalah template yang dibuat oleh pengembang. Contoh kontekstual adalah contoh Bean yang dibuat dan dikelola oleh wadah CDI.

API Persistensi Java

JPA digunakan untuk memetakan objek ke tabel database relasional. Java Persistence API mengikuti prinsip manifesto ORM. Manifes ORM (Manifes Pemetaan Relasional Objek):
  • Objek, bukan tabel: Pengembang menulis objek, bukan tabel.

  • Kenyamanan, bukan ketidaktahuan: ORM harus nyaman. Pengembang harus memiliki pengetahuan minimum tentang database relasional. ORM bukanlah cara untuk menyembunyikan ketidaktahuan, tapi sebuah kenyamanan.

  • Tidak mengganggu dan transparan: ORM harus membuat pengembang dapat mengontrol apa yang ada di database dan memiliki kontrol penuh atas apa yang disimpan. Data lama, objek baru: ORM memungkinkan Anda membuat objek baru dari data lama, yaitu merekonstruksi database lama menjadi objek Java.

  • Cukup, tetapi tidak terlalu banyak: ORM akan menyediakan semua alat untuk menyelesaikan masalah umum akibat ketidaksesuaian impedansi (istilah yang digunakan untuk merujuk pada masalah yang muncul karena perbedaan antara model database dan bahasa pemrograman). ORM tidak boleh terlalu berat.

  • Lokalitas dan mobilitas: Data bersifat lokal, tetapi status persisten aplikasi harus memungkinkan untuk berpindah ke bagian aplikasi yang berbeda.

  • API standar, penerapan yang dapat dicolokkan: Mengandalkan API standar, namun dapat mengubah penerapan sesuai kebutuhan.

Beberapa konsep JPA penting: Entitas JPA
  • Komponen objek JPA yang paling modular adalah objek Java lama biasa (POJO). Setiap objek harus memiliki pengenal unik.

  • Entitas JPA biasanya menggunakan anotasi seperti @MappedSuperClass, yang memungkinkan penggunaan superclass yang berisi bidang entitas umum. Anotasi @AttributeOverride digunakan untuk mengganti entitas superkelas. @Column digunakan untuk mengkonfigurasi pemetaan database. Anotasi @Transient dapat digunakan untuk bidang di kelas entitas yang tidak boleh dipetakan ke database.

  • Tipe akses adalah proses dimana penyedia persistensi mengakses status dalam suatu entitas. Akses bidang terjadi ketika penyedia mengakses bidang suatu kelas secara langsung melalui refleksi. Akses properti terjadi ketika metode properti Java Bean digunakan untuk mengakses status, yaitu getter dan setter. Untuk menggunakan akses properti, pengambil harus dianotasi dengan @Id. Tipe akses campuran menggunakan akses ke bidang dan properti di kelas entitas yang sama menggunakan anotasi @Access.

Java API untuk layanan web RESTful

Keterbatasan arsitektur REST:
  1. Klien dan server tidak bergantung satu sama lain.

  2. Stateless: Setiap permintaan individual yang masuk ke server bersifat otonom dan unik. Server tidak membuat asumsi apapun dari permintaan sebelumnya.

  3. Cacheability: Sistem harus mendukung caching pada tingkat yang berbeda untuk meningkatkan kinerja dan skalabilitas.

  4. Antarmuka terpadu berarti bahwa klien harus memiliki antarmuka terpadu yang umum untuk mengakses sumber daya di server, serta untuk berinteraksi dengan sumber daya di server. Sistem multi-tingkat: Server dapat diimplementasikan dalam lapisan yang berbeda sedemikian rupa sehingga klien tidak perlu khawatir tentang sistem multi-tingkat, seperti server yang mendukung penyeimbangan beban.

Beberapa konsep umum terkait JAX-RS:
  • Metode HTTP GET: meminta sumber daya atau sumber daya. Metode permintaan GET bersifat idempoten, artinya membuat permintaan yang sama ke metode tersebut berulang kali tidak akan mengubah status sumber daya atau data di server.

  • Metode HTTP POST: Permintaan POST digunakan untuk membuat sumber daya baru di server. Hal ini menyebabkan kumpulan data di server berubah. POST biasanya memiliki badan tempat payload atau apa pun yang ingin kita buat di server dipublikasikan atau dilampirkan.

  • Metode HTTP PUT: Digunakan secara semantik untuk memperbarui sumber daya di server.

  • Metode HTTP DELETE: Digunakan untuk menghapus sumber daya di server.

  • Tipe konten. Ada beberapa tipe konten yang dapat digunakan dan dibuat dengan metode kueri: XML, CSV, EXCEL, TEXT, dan JSON.

  • JAX-RS memiliki konsep penulisan badan pesan. Ini adalah konstruksi API yang digunakan untuk mengonversi tipe Java ke tipe yang diharapkan oleh klien. Anotasi @Produces dapat digunakan untuk menentukan tipe respons objek Java yang dikonversi.

  • Anotasi @Consumes memberi tahu runtime JAX-RS jenis konten yang digunakan oleh metode sumber daya tertentu. Runtime JAX-RS kemudian mengubah konten JSON yang diteruskan sebagai payload menjadi objek Java yang tipenya sama dengan parameter metode.

  • JAX-RS Exception Mapper: Konstruksi API yang digunakan untuk memetakan pengecualian pada respons HTTP. Anotasi @Provider digunakan untuk mendaftarkan pemecah pengecualian secara terprogram dengan runtime JAX-RS.

Ini adalah pengenalan yang sangat sederhana tentang Java EE. Untuk membangun aplikasi web menggunakan Java EE, Anda harus mendalami lebih dalam setiap API utama.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION