EJB2 срещу EJB3
EJB (Enterprise JavaBeans) е Java API (интерфейс за програмиране на приложения), намиращ се в спецификацията на Java EE (Java Platform, Enterprise Edition). EJB описва архитектурен модел за разработване на корпоративни приложения. Това е управляван от сървър модел, който е в състояние да улови бизнес логиката на корпоративното приложение. IBM е оригиналният създател на EJB, който го разработи през 1997 г. Sun Microsystems го прие през 1999 г..
Преди въвеждането на EJB беше установено, че програмистите често реинвестират решения на проблеми, открити в бек-енд бизнес кода. В резултат на това EJB беше въведена за справяне с тези често срещани проблеми като постоянство, транзакционна цялост и сигурност. EJB предоставя стандартни начини за справяне с тези проблеми на задния край, като посочва как сървърът за приложения трябва да обработва транзакции, да се интегрира с JPA (Java Persistence API) услуги, да се справя с контрола на едновременността, да се справя със събития JMS (Java Message Service), да разрешава проблеми с именуването с JNDI ( Java Nameing и Directory Interface), разработвайте защитени програми с JCE (Java Cryptography Extension) и JAAS (Java Authentication and Authorization Service), разгърнете компоненти, комуникирайте дистанционно с RMI-IIOP (Java Remote Method Invocation Interface in Internet Inter-Orb Protocol) , разработвайте уеб услуги, използвайте асинхронни методи и използвайте услугата Timer.
EJB2
EJB2 (EJB 2.0) е издаден на 22 август 2001 г. Той описва спецификацията за разработване на разпределени обектно-ориентирани приложения в Java чрез комбиниране на инструменти, разработени от различни доставчици. Една от основните цели на EJB2 беше да позволи на програмистите да разработят по-лесно корпоративните приложения, без да им се налага да разбират подробности от ниско ниво, като многостранно обединяване и обединяване на връзки. Друга цел беше да се даде възможност на програмистите да напишат „Bean“ веднъж и да стартират навсякъде без прекомпилация (придържайки се към лозунга „напиши веднъж, пусни навсякъде“ на програмния език на Java). Освен това EJB2 има за цел да позволи на компоненти, разработени от различни доставчици, лесно да си взаимодействат и да позволи на продавачите да пишат разширения за своите продукти, които могат да поддържат EJB.
EJB3
EJB3 (EJB 3.0) беше пуснат на 11 май 2006 г. EJB3 направи живота на програмистите много лесен, като им позволи да използват пояснения вместо дескриптори на разполагане, използвани в предишните версии. EJB3 съдържа бизнес интерфейс и специфична структура на субекти, които могат да реализират този бизнес интерфейс, премахвайки необходимостта от използване на домашни / отдалечени интерфейси и файла ejb-jar.xml. Общата ефективност на EJB3 е много подобрена в сравнение с EJB2 и има значително увеличение на конфигурируемостта, гъвкавостта и преносимостта в това издание на EJB.
Каква е разликата между EJB2 и EJB3?
EJB3 има забележимо подобрение в конфигурацията и производителността спрямо EJB2. Една от причините за това подобряване на производителността е използването на POJO (Plain Old Java Object) с метаданни и XML дескриптори на внедряване от EJB3 вместо JNDI прегледи, използвани в EJB2 за препратки към обекти. Конфигурацията на EJB3 е много по-проста, тъй като програмистът не се нуждае от внедряване на Home / Remote интерфейси и други (например SessionBean), което премахва необходимостта от използване на методи за обратно извикване на контейнери (като ejbActivate и ejbStore).
Освен това EJB3 е по-добър от EJB2 в областите на гъвкавост и преносимост. Например, лесно е да конвертирате EJB3 субекти в DAO (обект за достъп до данни) и обратно, тъй като субектите EJB3 са леки (за разлика от тежките EJB2 субекти, които реализират гореспоменатите интерфейси). Заявките към базата данни, написани в EJB3, са много гъвкави, тъй като той използва усъвършенстван EJB-QL, вместо по-старата версия на EJB-QL, която имаше няколко ограничения. EJB3 премахва всички проблеми с преносимостта на EJB2 (който използва зърна на субектите за достъп до базата данни), като поддържа по-обобщен JPA за всички транзакции с данни.
За разлика от EJB2, който се нуждае от контейнер EJB, за да се изпълни, EJB3 може да бъде изпълнен в независим JVM (Java Virtual Machine), без да се налага използването на контейнери (това е възможно, защото не прилага стандартни интерфейси). За разлика от EJB2, EJB3 може лесно да се свърже с доставчици на постоянство, предлагани от трети страни. Друга важна разлика между EJB3 и EJB2 е, че EJB3 може да използва сигурност, базирана на пояснения, докато EJB2 използва сигурността, базирана на дескриптори на разполагане. Това означава, че задачите за конфигуриране и настройка са много по-лесни в EJB3 и има значително намаляване на режийните разходи в сравнение с EJB2.