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 and Directory Interface), разработка безопасных программ с помощью JCE (Java Cryptography Extension) и JAAS (Java Authentication and Authorization Service), развертывание компонентов, удаленная связь с RMI-IIOP (Java Remote Method Invocation interface через Internet Inter-Orb Protocol),разрабатывать веб-службы, вызывать асинхронные методы и использовать службу таймера.
EJB2
EJB2 (EJB 2.0) был выпущен 22 августа 2001 года. Он описывает спецификацию для разработки распределенных объектно-ориентированных приложений на Java путем объединения инструментов, разработанных различными поставщиками. Одной из основных целей EJB2 было позволить программистам более легко разрабатывать корпоративные приложения без необходимости разбираться в деталях низкого уровня, таких как многопоточность и объединение пулов. Другая цель состояла в том, чтобы позволить программистам один раз написать «компонент» и запустить его в любом месте без перекомпиляции (придерживаясь лозунга языка программирования Java «пиши один раз, запускай где угодно»). Более того, EJB2 предназначен для того, чтобы позволить компонентам, разработанным разными поставщиками, легко взаимодействовать, и позволяет поставщикам писать расширения для своих продуктов, которые могут поддерживать EJB.
EJB3
EJB3 (EJB 3.0) был выпущен 11 мая 2006 года. EJB3 очень облегчил жизнь программистам, позволив им использовать аннотации вместо дескрипторов развертывания, которые использовались в предыдущих версиях. EJB3 содержит бизнес-интерфейс и конкретный объектный компонент, который может реализовать этот бизнес-интерфейс, устраняя необходимость в использовании домашнего / удаленного интерфейсов и файла ejb-jar.xml. Общая производительность EJB3 значительно улучшена по сравнению с EJB2, и в этом выпуске EJB значительно улучшены конфигурируемость, гибкость и переносимость.
В чем разница между EJB2 и EJB3?
EJB3 имеет заметное улучшение конфигурации и производительности по сравнению с EJB2. Одной из причин такого повышения производительности является использование POJO (простой старый объект Java) с метаданными и дескрипторами развертывания 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) без использования контейнеров (это возможно, поскольку он не реализует стандартные интерфейсы). В отличие от EJB2, EJB3 легко подключается к поставщикам сохраняемости, предлагаемым третьими сторонами. Еще одно важное различие между EJB3 и EJB2 заключается в том, что EJB3 может использовать безопасность на основе аннотаций, тогда как EJB2 использует безопасность на основе дескрипторов развертывания. Это означает, что задачи конфигурирования и настройки в EJB3 намного проще, а накладные расходы на производительность значительно снижаются по сравнению с EJB2.