EJB2 vs EJB3
EJB (Enterprise JavaBeans) adalah Java API (Application Programming Interface) yang terdapat dalam spesifikasi Java EE (Java Platform, Enterprise Edition). EJB menerangkan model seni bina untuk pengembangan aplikasi perusahaan. Ini adalah model sisi pelayan terurus yang dapat menangkap logik perniagaan aplikasi perusahaan. IBM adalah pencipta asal EJB yang mengembangkannya pada tahun 1997. Sun Microsystems menerimanya pada tahun 1999.
Sebelum pengenalan EJB, didapati bahawa penyelesaian untuk masalah yang terdapat dalam kod perniagaan back-end sering dilaksanakan kembali oleh pengaturcara. Hasilnya, EJB diperkenalkan untuk mengatasi masalah umum seperti ketekunan, integriti transaksi dan keselamatan. EJB menyediakan cara standard untuk menangani masalah akhir ini, dengan menentukan bagaimana pelayan aplikasi harus memproses transaksi, berintegrasi dengan perkhidmatan JPA (Java Persistence API), menangani kawalan serentak, menangani Acara JMS (Java Message Service), menyelesaikan masalah penamaan dengan JNDI (Java Naming and Directory Interface), mengembangkan program aman dengan JCE (Java Cryptography Extension) dan JAAS (Java Authentication and Authorization Service), menyebarkan komponen, berkomunikasi jarak jauh dengan RMI-IIOP (antara muka Permintaan Kaedah Jauh Jauh melalui Protokol Inter-Orb Internet),membangunkan perkhidmatan web, menggunakan kaedah tidak segerak dan menggunakan perkhidmatan Pemasa.
EJB2
EJB2 (EJB 2.0) dirilis pada 22 Agustus 2001. Ini menjelaskan spesifikasi untuk mengembangkan aplikasi berorientasi objek terdistribusi di Java dengan menggabungkan alat yang dikembangkan oleh berbagai vendor. Salah satu tujuan utama EJB2 adalah untuk membolehkan pengaturcara mengembangkan aplikasi perusahaan dengan lebih mudah tanpa perlu memahami perincian tahap rendah, seperti penyambungan berbilang dan penyambungan. Tujuan lain adalah untuk membolehkan pengaturcara menulis "Bean" sekali dan berjalan di mana sahaja tanpa penyusunan semula (mematuhi slogan "tulis sekali, jalankan di mana sahaja" bahasa pengaturcaraan Java). Selanjutnya, EJB2 bertujuan untuk membolehkan komponen yang dikembangkan oleh vendor yang berlainan dapat beroperasi dengan mudah, dan membolehkan vendor menulis pelanjutan untuk produk mereka yang dapat menyokong EJB.
EJB3
EJB3 (EJB 3.0) dirilis pada 11 Mei 2006. EJB3 menjadikan kehidupan pengaturcara sangat mudah dengan membenarkan mereka menggunakan anotasi sebagai pengganti penerangan penyebaran yang digunakan dalam versi sebelumnya. EJB3 mengandungi antara muka perniagaan dan kacang entiti tertentu yang dapat melaksanakan antara muka perniagaan itu, menghilangkan keperluan untuk menggunakan antara muka rumah / jarak jauh dan fail ejb-jar.xml. Keseluruhan prestasi EJB3 jauh lebih baik dibandingkan dengan EJB2, dan terdapat peningkatan ketara dalam konfigurasi, fleksibiliti dan mudah alih dalam pelepasan EJB ini.
Apakah perbezaan antara EJB2 dan EJB3?
EJB3 mempunyai peningkatan yang ketara dalam konfigurasi dan prestasi berbanding EJB2. Salah satu sebab peningkatan prestasi ini adalah penggunaan POJO (Plain Old Java Object) dengan metadata dan XML Deployment Descriptors oleh EJB3 dan bukannya pencarian JNDI yang digunakan di EJB2 untuk rujukan objek. Konfigurasi EJB3 jauh lebih sederhana kerana pengaturcara tidak perlu melaksanakan antara muka Rumah / Jauh dan lain-lain (misalnya SessionBean), yang menghilangkan keperluan untuk menggunakan kaedah panggilan balik kontena (seperti ejbActivate dan ejbStore).
Tambahan pula, EJB3 lebih baik daripada EJB2 dalam bidang fleksibiliti dan mudah alih. Sebagai contoh, mudah untuk menukar entiti EJB3 menjadi DAO (Objek Akses Data) dan sebaliknya kerana entiti EJB3 adalah ringan (berbanding dengan entiti EJB2 kelas berat, yang melaksanakan antara muka yang disebutkan di atas). Pertanyaan pangkalan data yang ditulis dalam EJB3 sangat fleksibel kerana menggunakan EJB-QL yang lebih baik, sebagai pengganti EJB-QL versi lama, yang mempunyai beberapa batasan. EJB3 menghapus semua masalah mudah alih EJB2 (yang menggunakan kacang entiti untuk akses pangkalan data) dengan menyokong JPA yang lebih umum untuk semua transaksi data.
Tidak seperti EJB2, yang memerlukan wadah EJB untuk dijalankan, EJB3 dapat dijalankan dalam JVM bebas (Java Virtual Machine) tanpa harus menggunakan kontena (ini mungkin dilakukan kerana ia tidak melaksanakan antara muka standard). Tidak seperti EJB2, EJB3 mudah dipasang dengan penyedia kegigihan yang ditawarkan oleh pihak ketiga. Perbezaan penting lain antara EJB3 dan EJB2 ialah EJB3 dapat menggunakan keselamatan berdasarkan anotasi, sementara EJB2 menggunakan keselamatan berdasarkan penerangan penerapan. Ini bermaksud bahawa tugas konfigurasi dan penyediaan jauh lebih mudah di EJB3, dan terdapat pengurangan overhed prestasi yang ketara berbanding EJB2.