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-служба аутентификации и авторизации), развертывание компонентов, удаленная связь с RMI-IIOP (интерфейс удаленного вызова методов Java через межорбитальный протокол Internet) разрабатывать веб-сервисы, вызывать асинхронные методы и использовать сервис 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 (Простой старый 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..