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 Persistent API), керувати контролем одночасності, обробляти події JMS (Java Message Service), вирішувати проблеми іменування з JNDI ( Java Naming and Directory Interface), розробляють захищені програми з JCE (розширення криптографії Java) та JAAS (служба автентифікації та авторизації Java), розгортають компоненти, віддалено спілкуються з RMI-IIOP (інтерфейс виклику методу віддаленого методу Java через Інтернет-протокол між Orb) , розробляти веб-сервіси, застосовувати асинхронні методи та користуватися послугою Таймер.
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 (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.