Co je nového v Javě EE 6

Vyšla Java EE 6 a pro mě to byla příležitost se seznámit s tím, co nová platforma nabízí. Mezi novinky, které stojí za zmínku, patří například dependency injection nebo bean validation. Dále byly výrazně rozšířeny funkčnosti EJB, servletů.

Dle vývojářů nové Javy EE byla snaha o docílení několika hlavních cílů: flexibilní technologická platforma, možnosti rozšiřování platformy a snadnost vývoje.

Technologická platforma

Java EE 6 přináší nový koncept profilů a konfigurovatelnosti, které nyní mohou být designovány až na úroveň jednotlivých tříd. Co to vlastně je? Profil je v podstatě podmnožina Javy EE, která může být navíc doplněna o další technologie a toto vše slouží pak pro plnění určité úlohy. Například v aktualním releasu Javy EE byl uvolněn profil WebProfile, což je jakési redukované SDK, které slouží pouze pro provozování webových aplikací a „netahá“ na server věci,které pro provoz webové aplikace nepotřebuji (EJB, messaging apod.).

Rozšiřování platformy

Nová verze této platformy poskytuje mnohem více možností, jak rozšířit funkčnost SDK. Tuto oblast jsem však hluboce nestudoval, a tak pojďme dále.

Jednoduchost vývoje

Toto je asi oblast, která zajímá každého vývojáře, protože by mu měla usnadnit práci. Byla rozšířena sada nových anotací, které může vývojář využívat. Pro definovánáí webových komponent přibyla možnost snadné deklarace servletů (@WebServlet) nebo filtrů (@WebFilter). Dále byla standardizováno dependency injection, díky čemuž dojde ke sjednocení zápisu napříč všemi frameworky.

Další příjemnou záležitostí je to, že došlo ke zjednodušení požadavků na jednotlivé javové packages. Což v praxi například znamená, že dnes můžeme do *.war přibalit implementaci EJB.

Další nové funkčnosti, které bych rád představil můžeme rozdělit do následujících kategorií: Prezentační vrstva, dependency injection a data validation, služby a perzistenční vrstva.

Prezentační vrstva

Za nejzásadnější změnu považuji implementaci specifikace Servlet 3.0. Tato nová specifikace, kromě spousty jiného, přináší podporu asynchronního zpracování nebo tzv. long-lived spojení.

Další novinkou na prezentační vrstvě je nová specifikace JSF. JSF 2.0 zjednodušuje tvorbu jednotlivých stránek pomocí faceletů, šablon a pod. Výhodou je, že tyto funkšnosti byly konečně standardizovány a neřeší si to každý framework po svém. Dále se objevila vestavěná podpora Ajaxu a anotací.

Součástí release Java EE 6 je i nová specifikace JSP 2.2.

Dependency Injection a Data Validation

The Contexts and Dependency Injection for the Java EE Platform (CDI) je definován v JSR 299 a zavádí standardizovanou formu dependency injection. CDI dále zjednodušuje interoperabilitu mezi JSF a EJB, kdy umožňuje použití EJB místo managed beans.

Bean Validation (JSR 303) zavádí validace, které byly standardizovány a navíc mohou být sdíleny mezi všemi vrstvami aplikace (webová vrstva, služby nebo doménový model).

Služby a konponenty

Novinkou je určitě nová verze EJB 3.1 a nativní podpora RESTových služeb.

V EJB 3.1 nyní kromě spousty jiného najdeme:

  • Není dále potřeba vytvářet interface pro jednotlivé EJB
  • Nová anotace, kterou je možné definovat singleton (@Singleton)
  • Stejně jednoduše jako singleton se zajistí asynchronní služby. Na beanu se pouze použije anotace @Asynchronous.

Perzistenční vrstva

V nové vezi Javy EE se konečně dočkáme nové verze JPA 2.0. Došlo k rozšíření JPQL a nabízí zcela nové API pro definici kriterií (Criteria API). V nové verzi JPA dále programátor získává přístup k vlastnímu metamodelu.

Zajímavostí je zavedení podpory kolekcí. Slouží pro to dvě anotace @ElementCollection(definuje vlastní objekt, který má být v dané kolekci) a @CollectionTable (popisuje vlastní tabulku, kde bude ona kolekce uložena).

Snad se mi alespoň z části podařilo popsat ty, z mého pohledu, nejzajímavější novinky v Javě EE. Pokud jste narazili na další chytré novinky, budu rád za to, když se o ně podělíte v komentářích.

Leave a Reply

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..