Co je nového v Java EE 6

Podobné dokumenty
NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Spring framework 2.0. Roman Pichlík CZJUG

(Enterprise) JavaBeans. Lekce 7

Platformy / technologie. Jaroslav Žáček

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java Beans 3.0

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

KIV/PIA 2013 Jan Tichava

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Platformy / technologie. Jaroslav Žáček

Technologie Java. Jaroslav Žáček

Tvorba informačních systémů

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

PA165: Úvod do Java EE. Petr Adámek

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Technologie Java. Jaroslav Žáček

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

X33EJA Enterprise Java

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Architektury informačních systémů

Architektury informačních systémů

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Úvod do Web Services

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Transaction API + webové frameworky + další poznámky. Petr Aubrecht CA

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby

Softwarové komponenty a Internet

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

JAVA EE ORGANIZÉR - SOFTWAROVÁ ARCHITEKTURA

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com

RMI Remote Method Invocation

Tvorba informačních systémů

Tvorba informačních systémů

Server-side technologie pro webové aplikace

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

UJO Framework. revoluční architektura beans. verze

SOAP & REST služby. Rozdíly, architektury, použití

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

JAVA. Aspekty (AOP) AspectJ

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

JAVA Unit testing Java, zimní semestr

<Insert Picture Here> Vývoj portálových řešení v Javě

Návrhové vzory Tvorba objektů

Ověřování nahraditelnosti EJB komponent. Pavel Stuna

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Spring Framework Handout

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Distribuované systémy a výpočty

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Fakulta elektrotechnická. Bc. Petr Halaška. Studijní program: Elektrotechnika a informatika, strukturovaný, Navazující magisterský

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

IBA CZ průmyslový partner FI MU

Web Frameworks Java Server Faces. Petr Aubrecht CA

RMI - Distribuované objekty v Javě

Návrhové vzory pro J2EE. Miroslav Beneš

Podpora aplikační logiky v J2EE aplikačních rámcích

Návrhové vzory pro J2EE

Spring portfolio. Tomáš Krátký

Technologie JavaBeans

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Komponentový návrh SW

DPKOM_10 Transakce 1

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

IBA CZ průmyslový partner FI MU

PA165: Persistence Layer. Petr Adámek

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost

Vánoční hrátky s JAXB

Komponentní technologie

JAVA. Java Management Extensions JMX

Návrh sociální sítě se sportovní tématikou s využitím technologií Java Enterprise Edition

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Systémová administrace portálu Liferay

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

JAVA EE ORGANIZÉR MODUL KALENDÁŘ

JavaServer Faces Zdeněk Troníček

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Webové služby v Java EE (JAX-WS)

Transkript:

Co je nového v Java EE 6 Petr Adámek

Disclaimer Ačkoliv jsem snažil tuto prezentaci připravit co nejpečlivěji, může obsahovat nepřesnosti nebo dokonce nepravdivé informace. S popisovanými novinkami nemám téměř žádné praktické zkušenosti a většinu informací čerpám ze specifikací, přičemž moje interpretace specifikací nemusí být správná.

Java EE Java EE 5 (JSR 244, květen 2006) (podtržené = součást Java SE) EJB 3.0, JPA 1.0, Servlets 2.5, JSP 2.1, JSF 1.2, EL 1.0, JSTL 1.2, Web Services 1.2, JAX-RPC 1.1, JAX-WS 2.0, WS Metadata 2.0, JAXB 2.0, JAXR 1.0, SAAJ 1.3, JMS 1.1, JTA 1.1, Java Mail 1.4, JAF 1.1, Java EE Connector 1.5, JACC 1.1, Common Annotations 1.0, StAX 1.0, JSP Debugging 1.0, Java EE Management API 1.1, Java EE Deployment API 1.2 Java EE 6 (JSR 316, prosinec 2009) EJB 3.1, JPA 2.0, Servlets 3.0, JSP 2.2, JSF 2.0, EL 1.1, JSTL 1.2, Web Services 1.3, JAX-RPC 1.1, JAX-WS 2.2, WS Metadata 2.0, JAXB 2.2, JAXR 1.0, SAAJ 1.3, JMS 1.1, JTA 1.1, Java Mail 1.4, JAF 1.1, Java EE Connector 1.6, JACC 1.3, Common Annotations 1.1, StAX 1.0, JSP Debugging 1.0, Java EE Management API 1.1, Java EE Deployment API 1.2, JAX-RS 1.1, Web Beans (JSR-299) 1.0, Dependency Injection for Java (JSR-330) 1.0, JASPIC 1.0, Bean Validation 1.0

Profily Profily Jedním z cílů specifikace je modularizace platformy. Profily reprezentují konfiguraci platformy vhodnou pro určitý typ aplikací (např. Java EE 6 Web Profile). Profil může vypustit technologie, které nejsou pro daný typ aplikací potřebné (např. JMS pro Web Profile). Profil může zahrnout technologie, které nejsou ve standardní edici Java EE (např. JSR-286 pro hypotetický Java EE Portal Profile). Profil může označit nějaké technologie za volitelné. Momentálně pouze Java EE 6 Web Profile, další přijdou jako samostatné specifikace

Java EE 6 Web Profile Java EE 6 Web Profile Java EE 6 Web Profile Specification (vznikla v rámci JSR 316 jako samostatná specifikace) Povinné technologie: Servlet 3.0, JSP 2.2, EL 2.2 (?), JSP Debugging (JSR-45) 1.0, JSTL 1.2, JSF 2.0, Common Annotations 1.1, EJB 3.1 Lite, JTA 1.1, JPA 2.0, Bean Validation 1.0, Managed Beans 1.0, Interceptors 1.1, Web Beans (JSR-299) 1.0, Dependency Injection for Java (JSR-330) 1.0 (!) Žádné volitelné technologie

Managed Beans Typický problém Java EE verze 5: Služby jako Dependency Injection fungují pouze u komponent, jejichž životní cyklus řídí kontejner (EJB komponenty, servlety, portlety, apod.). Chybí podpora pro POJO komponenty. Tento problém se v Java EE 6 snaží vyřešit specifikace univerzálního komponentového modelu, který je společný pro celou Java EE 6. Vznikla v rámci JSR 316 jako samostatná specifikace Managed Beans 1.0 Specification

Managed Beans Managed Beans 1.0 Specification Managed Beans are container-managed objects with minimal requirements, otherwise known under the acronym POJOs (Plain Old Java Objects). They support a small set of basic services, such as resource injection, lifecycle callbacks and interceptors. Other, more advanced, aspects will be introduced in companion specifications, so as to keep the basic model as simple and as universally useful as possible. [Managed Beans 1.0 Specification] Jednoduchý a univerzální komponentový model pro platformu Java EE, který je společným základem pro ostatní specifikace. Díky společnému základnímu modelu je možné později jednoduché POJO komponenty snadno transformovat na složitější typy komponent (např. EJB)

Managed Beans Managed Bean Třída označená anotací javax.annotation.managedbean Třída nesmí být finální, abstraktní, nebo vnořená nestatická. Nemusí být serializovatelná. Může být pojmenovaná, jméno musí být unikátní v rámci modulu (včetně EJB komponent). Rozšiřující specifikace může umožnit označení komponenty specifickou anotací (místo ManagedBean) @ManagedBean( cart ) @Interceptor( MyInterceptor.class) public class ShoppingCart { @Resource DataSource ds; @PostConstruct void init() { } @PreDestroy void destroy() { } }

Web Beans Contexts and Dependency Injection for the Java EE platform (JSR-299) Web Beans 1.0 Snaha o zavedení univerzálního modelu pro Dependency Injection, který bude fungovat pro všechny typy komponent v Java EE (EJB, Servlety, JSP) Silně inspirováno frameworky Seam (leader je Gavin King) a Google Guice Podpora pro injektování POJO komponent. Web Bean je třída, obsahující business logiku. Životní cyklus Web Bean komponenty řídí Web Bean manažer, který také řeší závisloti mezi jednotlivými Web Bean komponentami. http://docs.jboss.org/webbeans/reference/1.0.0.alpha1/en/html/intro.html#d0e144 http://blog.krecan.net/2009/01/09/webbeans/

EJB 3.1 EJB 3.1 (JSR-318) EJB komponenty bez lokálního nebo vzdáleného rozhraní. EJB komponenty mohou být zabaleny přímo ve.war souboru. Embeddable API pro spouštění EJB komponent přímo v Java SE. Singleton Beans (anotace @javax.ejb.singleton). Automaticky vytvářené EJB časovače. EJB časovače podporují výrazy založené na kalendáři (cron-like). Podpora pro asynchronní volání metod u komponent Session EJB. EJB 3.1 Lite (pro Java EE 6 Web Profile). Standardizovaná globální JNDI jména.

EJB 3.1 EJB komponenty bez lokálního nebo vzdáleného rozhraní. S business rozhraním Bez business rozhraní // Component definition @Stateless @Local(Catalog.class) public class CatalogBean implements Catalog { } // Dependency injection @EJB Catalog catalog; // JNDI lookup @Resource SessionContext ctx; Catalog catalog = (Catalog) ctx.lookup( catalog ); // Component definition @Stateless public class CatalogBean { } // Dependency injection @EJB CatalogBean catalog; // JNDI lookup @Resource SessionContext ctx; CatalogBean catalog = (CatalogBean) ctx.lookup( catalog );

EJB 3.1 Embeddable API Embeddable API pro spouštění EJB komponent přímo v Java SE. Umožňuje rychle a snadno inicializovat EJB kontejner i v klasické Java SE aplikace. Properties props = new Properties(); props.setproperty( ); EJBContainer ec = EJBContainer.createEJBContainer(props); Context ctx = ec.getcontext(); String beanname = "java:global/catalog/catalogbean"; Catalog catalog = (Catalog) ctx.lookup(beanname);

EJB 3.1 Singleton Beans Singleton Beans Další typ komponenty Session EJB (vedle Stateful a Stateless). Anotace @javax.ejb.singleton. @Singleton public class MySingleton { @PersistenceContext private EntityManager em; @PostConstruct private void init() { }; } @PreDestroy private void destroy() { };

EJB 3.1 časovače Časovače Automatické spouštění (nastavení v deployment deskriptoru nebo pomocí anotací) Výrazy založené na kalendáři (jako Cron) @Singleton public class MyTimerBean { } @Schedule(second="0", minute="0", hour="0", dayofmonth="1", month="*", year="*") public void generatemonthlynewsletter() { } @Schedules({ @Schedule(hour= 12, dayofweek= Mon-Thu ), @Schedule(hour= 11, dayofweek= Fri ) }) public void sendlunchnotification() { }

EJB 3.1 asynchronní volání metod Podpora pro asynchronní volání metod u komponent Session EJB @Stateless public class MyServiceBean { @Asynchronous public void operationa( ) { }; } @Asynchronous public Future<OperationResult> operationb( ) { OperationResult result = ; return new AsyncResult<OperationResult>(result); } Pozor! V prvním případě neexistuje způsob, jak klientovi předat případnou vyhozenou výjimku!

EJB 3.1 Lite EJB 3.1 Lite EJB 3.1 Full Session Beans Ano Ano Message-driven beans Ne Ano 2.x/1.x CMP/BMP beans Ne Ano* Java Persistence 2.0 Ano Ano Local/No interface Ano Ano 3.0 Remote interface, 2.x Remote Home/Component interface Ne Ano JAX-WS Web Service Endpoint Ne Ano JAX-RPC Web Service Endpoint Ne Ano* EJB Timer Service Ne Ano Asynchronous Session EJB method invocation Ne Ano Interceptors Ano Ano RMI-IIOP interoperability Ne Ano Container-managed/Bean-managed transactions Ano Ano Declarative and Programmatic Security Ano Ano Embeddable API Ano Ano**

EJB 3.1 standardizovaná globální jména Standardizovaná globální JNDI jména Dříve to bylo specifické pro konkrétní kontejner. Nyní java:global[/<app-name>]/<module-name>/ <bean-name>[!<fully-quali-fied-interface-name>] Application Server JBoss global JNDI name GlassFish global JNDI name WebSphere Community Edition global JNDI name Oracle Application Server (OC4J) global JNDI name Proprietary Global Name action-bazaar/placebidbean/remote PlaceBid action-bazaarejb/placebidbean/placebid PlaceBidBean

Kvíz @EJB Cart cart1; @EJB Cart cart2; System.out.println(cart1.equals(cart2)); Co se vypíše na výstup?

JPA 2.0 Java Persistence 2.0 (JSR-317) Podpora pro kolekce základních typů a objektů typu Embedable. Rozšířená podpora map (klíčem může být základní typ, Embedable objekt nebo Entita). Podpora pro vnořené třídy typu Embedable. Podpora pro odvozené klíče (závislé klíče u slabých entitních množin). Jednosměrné OneToMany vazby bez vazební tabulky. Podpora pro seznamy s explicitně stanoveným pořadím. Orphan Removal. Pesimistické zamykání. BigInteger a BigDecimal mohou být primárním klíčem.

JPA 2.0 Java Persistence 2.0 (JSR-317) Rozšíření EntityManager API (clear(), getcache(), getfactory(), ) Cache API. Criteria API. Standardní názvy properties (např. javax.persistence.jdbc.driver místo eclipselink.jdbc.driver) Rozšíření JPQL Integrace s Bean Validation (včetně napojení na životní cyklus entity)

Bean Validation Bean Validation (JSR-303) Framework pro deklarativní definici omezujících podmínek a následnou validaci Definice pomocí anotací nebo XML Sada předdefinovaných anotací pro standardní omezující podmínky (@Null, @NotNull, @AssertFalse, @AssertTrue, @Min, @Max, @Size, @Pattern) Možnost definice vlastní anotací pro další omezující podmínky.

Další novinky Servlets 3.0, JSP 2.2, JSF 2.0, EL 1.1, Pokračování příště?