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 Naming и Directory Interface), разработва защитени програми с JCE (Java Cryptography Extension) и JAAS (Java Authentication and Authorization Service), разгръща компоненти, комуникира дистанционно с RMI-IIOP (Java Remote Method Invocation Interface през 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.