EJB2 vs EJB3
EJB (Enterprise JavaBeans) je rozhraní Java API (Application Programming Interface), které se nachází ve specifikaci Java EE (Java Platform, Enterprise Edition). EJB popisuje architektonický model pro vývoj podnikových aplikací. Toto je model na straně spravovaného serveru, který je schopen zachytit obchodní logiku podnikové aplikace. IBM je původním tvůrcem EJB, který jej vyvinul v roce 1997. Sun Microsystems jej přijal v roce 1999.
Před zavedením EJB bylo zjištěno, že programátoři často znovu implementovali řešení problémů nalezených v podnikovém kódu typu back-end. Výsledkem bylo zavedení EJB k řešení těchto běžných problémů, jako je vytrvalost, transakční integrita a bezpečnost. EJB poskytuje standardní způsoby řešení těchto problémů typu back-end, specifikováním způsobu, jakým by měl aplikační server zpracovávat transakce, integrací se službami JPA (Java Persistence API), zpracováním řízení souběžnosti, zpracováním událostí JMS (Java Message Service), řešením problémů s pojmenováním pomocí JNDI (Java Naming and Directory Interface), vyvíjet zabezpečené programy s JCE (Java Cryptography Extension) a JAAS (Java Authentication and Authorization Service), nasazovat komponenty, vzdáleně komunikovat s RMI-IIOP (Java Remote Method Invocation interface over the Internet Inter-Orb Protocol),vyvíjet webové služby, vyvolávat asynchronní metody a používat službu Timer.
EJB2
EJB2 (EJB 2.0) byl vydán 22. srpna 2001. Popisuje specifikaci pro vývoj distribuovaných objektově orientovaných aplikací v Javě kombinací nástrojů vyvinutých různými prodejci. Jedním z hlavních cílů EJB2 bylo umožnit programátorům snadněji vyvíjet podnikové aplikace, aniž by museli rozumět podrobnostem na nízké úrovni, jako je multi-threading a sdružování připojení. Dalším cílem bylo umožnit programátorům jednou napsat „Bean“a spustit kdekoli bez rekompilace (dodržovat slogan programovacího jazyka Java „zapisovat jednou, spustit kdekoli“). Dále měl EJB2 umožnit snadnou spolupráci komponent vyvinutých různými prodejci a umožnit prodejcům psát rozšíření pro jejich produkty, které mohou podporovat EJB.
EJB3
EJB3 (EJB 3.0) byl vydán 11. května 2006. EJB3 velmi usnadnil programátorům život tím, že jim umožnil používat poznámky místo deskriptorů nasazení, které byly použity v předchozích verzích. EJB3 obsahuje obchodní rozhraní a konkrétní fazole entity, která může implementovat toto obchodní rozhraní, což odstraňuje potřebu používat domácí / vzdálená rozhraní a soubor ejb-jar.xml. Celkový výkon EJB3 je mnohem lepší ve srovnání s EJB2 a v této verzi EJB dochází k výraznému zvýšení konfigurovatelnosti, flexibility a přenositelnosti.
Jaký je rozdíl mezi EJB2 a EJB3?
EJB3 má znatelné zlepšení v konfiguraci a výkonu oproti EJB2. Jedním z důvodů pro toto zlepšení výkonu je použití POJO (Plain Old Java Object) s metadaty a deskriptory nasazení XML EJB3 místo vyhledávání JNDI použitých v EJB2 pro odkazy na objekty. Konfigurace EJB3 je mnohem jednodušší, protože programátor nemusí implementovat rozhraní Home / Remote a další (např. SessionBean), což odstraňuje nutnost používat metody zpětného volání kontejneru (například ejbActivate a ejbStore).
Kromě toho je EJB3 lepší než EJB2 v oblasti flexibility a přenositelnosti. Například je snadné převést entity EJB3 na DAO (Data Access Object) a naopak, protože entity EJB3 jsou lehké (na rozdíl od těžkých entit EJB2, které implementují výše uvedená rozhraní). Databázové dotazy napsané v EJB3 jsou velmi flexibilní, protože používají vylepšenou EJB-QL namísto starší verze EJB-QL, která měla několik omezení. EJB3 odstraňuje všechny problémy s přenositelností EJB2 (který používá pro přístup k databázi fazole entit) podporou všeobecnějšího JPA pro všechny datové transakce.
Na rozdíl od EJB2, který ke spuštění potřebuje kontejner EJB, lze EJB3 spustit v nezávislém JVM (Java Virtual Machine), aniž byste museli používat kontejnery (je to možné, protože neimplementuje standardní rozhraní). Na rozdíl od EJB2 lze EJB3 snadno připojit k poskytovatelům vytrvalosti nabízeným třetími stranami. Dalším důležitým rozdílem mezi EJB3 a EJB2 je, že EJB3 může používat zabezpečení založené na anotacích, zatímco EJB2 používalo zabezpečení založené na deskriptorech nasazení. To znamená, že úlohy konfigurace a nastavení jsou v EJB3 mnohem jednodušší a ve srovnání s EJB2 dochází ke značnému snížení režijních nákladů na výkon.