EJB2 vs EJB3
EJB (Enterprise JavaBeans) adalah Java API (Application Programming Interface) yang ditemukan dalam spesifikasi Java EE (Java Platform, Enterprise Edition). EJB menjelaskan model arsitektur untuk pengembangan aplikasi perusahaan. Ini adalah model sisi server terkelola yang mampu menangkap logika bisnis aplikasi perusahaan. IBM adalah pencipta asli EJB yang mengembangkannya pada tahun 1997. Sun Microsystems mengadopsinya pada tahun 1999.
Sebelum pengenalan EJB, ditemukan bahwa solusi untuk masalah yang ditemukan dalam kode bisnis back-end sering diimplementasikan kembali oleh programmer. Hasilnya, EJB diperkenalkan untuk mengatasi masalah umum seperti persistensi, integritas transaksional, dan keamanan. EJB menyediakan cara standar untuk menangani masalah back end ini, dengan menentukan bagaimana server aplikasi harus memproses transaksi, mengintegrasikan dengan layanan JPA (Java Persistence API), menangani kontrol konkurensi, menangani Peristiwa JMS (Java Message Service), menyelesaikan masalah penamaan dengan JNDI (Java Naming and Directory Interface), mengembangkan program yang aman dengan JCE (Java Cryptography Extension) dan JAAS (Java Authentication and Authorization Service), menyebarkan komponen, berkomunikasi dari jarak jauh dengan RMI-IIOP (antarmuka Java Remote Method Invocation melalui Internet Inter-Orb Protocol),mengembangkan layanan web, menjalankan metode asynchronous, dan menggunakan layanan Timer.
EJB2
EJB2 (EJB 2.0) dirilis pada 22 Agustus 2001. Ini menjelaskan spesifikasi untuk mengembangkan aplikasi berorientasi objek terdistribusi di Jawa dengan menggabungkan alat yang dikembangkan oleh vendor yang berbeda. Salah satu tujuan utama EJB2 adalah untuk memungkinkan pemrogram mengembangkan aplikasi perusahaan dengan lebih mudah tanpa harus memahami detail tingkat rendah, seperti multi-threading dan penyatuan koneksi. Tujuan lainnya adalah memungkinkan pemrogram untuk menulis "Bean" sekali dan berjalan di mana saja tanpa kompilasi ulang (mengikuti slogan "tulis sekali, jalankan di mana saja" dari bahasa pemrograman Java). Lebih lanjut, EJB2 dimaksudkan agar komponen yang dikembangkan oleh vendor yang berbeda dapat dengan mudah dioperasikan, dan memungkinkan vendor untuk menulis ekstensi untuk produk mereka yang dapat mendukung EJB.
EJB3
EJB3 (EJB 3.0) dirilis pada 11 Mei 2006. EJB3 membuat hidup programmer sangat mudah dengan memungkinkan mereka untuk menggunakan anotasi sebagai pengganti deskriptor penyebaran yang digunakan dalam versi sebelumnya. EJB3 berisi antarmuka bisnis dan kacang entitas tertentu yang dapat mengimplementasikan antarmuka bisnis tersebut, menghilangkan kebutuhan untuk menggunakan antarmuka rumah / jarak jauh dan file ejb-jar.xml. Kinerja keseluruhan EJB3 jauh lebih baik dibandingkan dengan EJB2, dan ada peningkatan yang cukup besar dalam konfigurasi, fleksibilitas, dan portabilitas dalam rilis EJB ini.
Apa perbedaan antara EJB2 dan EJB3?
EJB3 memiliki peningkatan yang nyata dalam konfigurasi dan kinerja dibandingkan EJB2. Salah satu alasan untuk peningkatan kinerja ini adalah penggunaan POJO (Objek Java Lama Biasa) dengan metadata dan XML Deployment Descriptors oleh EJB3, bukan pencarian JNDI yang digunakan di EJB2 untuk referensi objek. Konfigurasi EJB3 jauh lebih sederhana karena programmer tidak perlu mengimplementasikan antarmuka Home / Remote dan lainnya (misalnya SessionBean), yang menghilangkan kebutuhan untuk menggunakan metode callback container (seperti ejbActivate dan ejbStore).
Selain itu, EJB3 lebih baik daripada EJB2 dalam hal fleksibilitas dan portabilitas. Misalnya, mudah untuk mengonversi entitas EJB3 menjadi DAO (Objek Akses Data) dan sebaliknya karena entitas EJB3 ringan (berlawanan dengan entitas EJB2 kelas berat, yang menerapkan antarmuka yang disebutkan di atas). Kueri database yang ditulis dalam EJB3 sangat fleksibel karena menggunakan EJB-QL yang disempurnakan, menggantikan versi EJB-QL yang lebih lama, yang memiliki beberapa keterbatasan. EJB3 menghapus semua masalah portabilitas EJB2 (yang menggunakan kacang entitas untuk akses database) dengan mendukung JPA yang lebih umum untuk semua transaksi data.
Tidak seperti EJB2, yang membutuhkan kontainer EJB untuk dieksekusi, EJB3 dapat dieksekusi dalam JVM independen (Java Virtual Machine) tanpa harus menggunakan kontainer (ini dimungkinkan karena tidak mengimplementasikan antarmuka standar). Tidak seperti EJB2, EJB3 mudah dipasang dengan penyedia persistensi yang ditawarkan oleh pihak ketiga. Perbedaan penting lainnya antara EJB3 dan EJB2 adalah bahwa EJB3 dapat menggunakan keamanan berbasis anotasi, sedangkan EJB2 menggunakan keamanan berbasis deskriptor penyebaran. Ini berarti bahwa konfigurasi dan tugas penyiapan jauh lebih mudah di EJB3, dan terdapat pengurangan yang cukup besar dalam overhead kinerja dibandingkan dengan EJB2.