EJB2 vs EJB3
EJB (Enterprise JavaBeans) Java EE (Java Platform, Enterprise Edition) spesifikasiyası daxilində tapılan Java API (Tətbiq Proqramlaşdırma İnterfeysi)-dir. EJB müəssisə proqramlarının inkişafı üçün memarlıq modelini təsvir edir. Bu, müəssisə tətbiqinin biznes məntiqini tutmağa qadir olan idarə olunan server tərəfi modelidir. IBM onu 1997-ci ildə inkişaf etdirən EJB-nin orijinal yaradıcısıdır. Sun Microsystems onu 1999-cu ildə qəbul etmişdir.
EJB-nin tətbiqindən əvvəl məlum oldu ki, back-end biznes kodunda tapılan problemlərin həlli proqramçılar tərəfindən tez-tez yenidən həyata keçirilirdi. Nəticədə, EJB davamlılıq, əməliyyat bütövlüyü və təhlükəsizlik kimi ümumi problemləri həll etmək üçün təqdim edildi. EJB proqram serverinin əməliyyatları necə emal etməsini, JPA (Java Persistence API) xidmətləri ilə inteqrasiyasını, paralel nəzarəti idarə etməsini, JMS (Java Mesaj Xidməti) Hadisələrini idarə etməsini, JNDI ilə adlandırma məsələlərini necə həll etməsini müəyyən etməklə bu arxa son problemləri həll etmək üçün standart yollar təqdim edir. Java Adlandırma və Kataloq İnterfeysi), JCE (Java Kriptoqrafiya Genişləndirilməsi) və JAAS (Java Authentication and Authorization Service) ilə təhlükəsiz proqramlar hazırlayın, komponentləri yerləşdirin, RMI-IIOP (İnternet Inter-Orb Protokolu üzərindən Java Remote Method Invocation interfeysi) ilə uzaqdan əlaqə saxlayın., veb xidmətləri inkişaf etdirin, asinxron metodlara müraciət edin və Taymer xidmətindən istifadə edin.
EJB2
EJB2 (EJB 2.0) 22 avqust 2001-ci ildə buraxılmışdır. O, müxtəlif təchizatçılar tərəfindən hazırlanmış alətləri birləşdirərək Java-da paylanmış obyekt yönümlü proqramların işlənib hazırlanması üçün spesifikasiyanı təsvir edir. EJB2-nin əsas məqsədlərindən biri proqramçılara çox iş parçacığı və əlaqənin birləşdirilməsi kimi aşağı səviyyəli təfərrüatları başa düşmədən müəssisə proqramlarını daha asan inkişaf etdirməyə imkan vermək idi. Başqa bir məqsəd proqramçılara bir dəfə “Bean” yazmaq və yenidən tərtib etmədən (Java proqramlaşdırma dilinin “bir dəfə yaz, hər yerdə işlət” şüarına əməl etməklə) istənilən yerdə işləmək imkanı vermək idi. Bundan əlavə, EJB2 müxtəlif təchizatçılar tərəfindən hazırlanmış komponentlərin asanlıqla qarşılıqlı fəaliyyət göstərməsinə və təchizatçılara öz məhsulları üçün EJB-ləri dəstəkləyə bilən genişləndirmələr yazmağa icazə verməyi nəzərdə tuturdu.
EJB3
EJB3 (EJB 3.0) 11 may 2006-cı ildə buraxıldı. EJB3 əvvəlki versiyalarda istifadə edilən yerləşdirmə deskriptorlarının yerinə annotasiyalardan istifadə etməyə icazə verməklə proqramçıların həyatını çox asanlaşdırdı. EJB3 ev/uzaqdan interfeyslərdən və ejb-jar.xml faylından istifadə ehtiyacını aradan qaldıraraq, həmin biznes interfeysini həyata keçirə bilən biznes interfeysi və xüsusi qurum lobyasını ehtiva edir. EJB3-ün ümumi performansı EJB2 ilə müqayisədə xeyli yaxşılaşmışdır və EJB-nin bu buraxılışında konfiqurasiya, çeviklik və daşınma qabiliyyəti əhəmiyyətli dərəcədə artmışdır.
EJB2 və EJB3 arasındakı fərq nədir?
EJB3 EJB2 ilə müqayisədə konfiqurasiya və performansda nəzərəçarpacaq təkmilləşdirməyə malikdir. Bu performans təkmilləşdirməsinin bir səbəbi obyekt istinadları üçün EJB2-də istifadə olunan JNDI axtarışları əvəzinə EJB3 tərəfindən metadata və XML Yerləşdirmə Deskriptorları ilə POJO-nun (Düz Köhnə Java Obyekti) istifadəsidir. EJB3-ün konfiqurasiyası daha sadədir, çünki proqramçının Ev/Uzaq interfeyslərini və başqalarını (məsələn, SessionBean) tətbiq etməsinə ehtiyac yoxdur, bu, konteyner geri çağırış metodlarından (ejbActivate və ejbStore kimi) istifadə ehtiyacını aradan qaldırır.
Bundan başqa, EJB3 çeviklik və daşınma sahələrində EJB2-dən daha yaxşıdır. Məsələn, EJB3 obyektlərini DAO-ya (Data Access Object) və əksinə çevirmək asandır, çünki EJB3 obyektləri yüngüldür (yuxarıda qeyd olunan interfeysləri həyata keçirən ağır çəkili EJB2 obyektlərindən fərqli olaraq). EJB3-də yazılmış verilənlər bazası sorğuları çox çevikdir, çünki o, EJB-QL-in bir neçə məhdudiyyəti olan köhnə versiyasının əvəzinə zərif EJB-QL-dən istifadə edir. EJB3, bütün data əməliyyatları üçün daha ümumiləşdirilmiş JPA-nı dəstəkləyərək EJB2-nin (verilənlər bazasına daxil olmaq üçün obyekt lobyasından istifadə edən) bütün daşınma problemlərini aradan qaldırır.
İcra etmək üçün EJB konteynerinə ehtiyacı olan EJB2-dən fərqli olaraq, EJB3 konteynerlərdən istifadə etmədən müstəqil JVM-də (Java Virtual Maşın) icra edilə bilər (bu, standart interfeysləri həyata keçirmədiyi üçün mümkündür). EJB2-dən fərqli olaraq, EJB3 üçüncü tərəflər tərəfindən təklif olunan davamlı provayderlərlə asanlıqla qoşula bilər. EJB3 və EJB2 arasındakı digər mühüm fərq ondan ibarətdir ki, EJB3 annotasiya əsaslı təhlükəsizlikdən istifadə edə bilər, EJB2 isə yerləşdirmə deskriptorlarına əsaslanan təhlükəsizlikdən istifadə edir. Bu o deməkdir ki, EJB3-də konfiqurasiya və quraşdırma tapşırıqları daha asandır və EJB2 ilə müqayisədə performans əlavə xərclərində xeyli azalma var.