Java Enterprise Edition 6 & Projekt GlassFish. Daniel Adelhardt Senior Software Architect Sun Microsystems GmbH



Ähnliche Dokumente
Softwareentwicklung mit Enterprise JAVA Beans

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

RESTful Web. Representational State Transfer

Programmierung von Client/Server- Anwendungen

Spring Dynamic Modules for OSGi Service Platforms

Zend PHP Cloud Application Platform

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Struts 2 Das Imperium schlägt zurück?

Faclets. Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz

Spring Dynamic Modules for OSGi Service Platforms

SAP NetWeaver Gateway. 2013

Übungsaufgabe Transaktion als Middleware

WebService in Java SE und EE

Softwareentwicklung mit JAVA EE

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Java Web Services Metadata JSR-181

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart

JSP und Servlet Programmierung

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de>

ORACLE Business Components for Java (BC4J) Marco Grawunder

SE2-10-Entwurfsmuster-2 15

Webinar: Einführung in ICEfaces

Dirk Reinemann Working Student Sales Consulting

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Erfahrungsbericht zu JBoss SOA Platform 6 Tech Talk 2013, 17. Oktober 2013, Bern

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Automatisiertes Testen von Java EE-Applikationen mit Arquillian

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Tomcat Konfiguration und Administration

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

FH LU JEE Vorlesung SS Ralf Gitzel

RESTful Services mit Java EE

Enterprise Java Beans Einführung

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

SAP SharePoint Integration. e1 Business Solutions GmbH

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

Java EE Projektseminar

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Etablierung serviceorientierter Architekturen mit Web Services

Groovy on Grails. Informatik-Seminar WS06/07. Alexander Treptow. Groovy on Grails Alexander Treptow (minf2622) 1

Content Management mit JSR-170 und dem Open Source CMS Magnolia

- XPages 2.0? René Winkelmeyer

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

JSP vs. PHP. Ein persönlicher Vergleich. EQUIcon Software GmbH Jena, Jörg Spilling Frankfurter Treffen Agenda

Überblick Produkte. ORACLE AS 10g R3 JAVA Programming. (5 Tage)

Security Technologien in Java EE 6

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Weblogic Server: Administration für Umsteiger

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

Konfiguration und Deployment einer hochverfügbaren ADF Anwendung

Introduction to JSF technology and Rapid Application Development Roland Zänger

Open Source. Hendrik Ebbers 2015

Frankfurt,

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Contexts and Dependency Injection. W3L AG

Architektur des agimatec-validation Frameworks

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

Application Frameworks

12.4 Sicherheitsarchitektur

APEX und Workflows: Spaghetticode oder Integration. Sven Böttcher. Consultant, Apps Associates GmbH

Axis2, CXF und JAX-WS RI im Vergleich

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen. Sommersemester Michael Theis, Lehrbeauftragter 1

Java Persistence API 2.x. crud + relationships + jp-ql

Auszug aus JAX-WS Folien

Enterprise Web-SSO mit CAS und OpenSSO

Automatisierter Java EE Entwicklungs-Lifecycle mit WebLogic Server 12c. Robin Müller-Bady Systemberater, Oracle Deutschland

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak

E-Business Architekturen

Server-centric vs. Client-centric Web Applications. BITKOM Software Summit 2014, Frankfurt

Lokale Installation von DotNetNuke 4 ohne IIS

Das Interceptor Muster

Softwareentwicklung mit Enterprise JAVA Beans

Axis2, CXF und JAX-WS RI im Vergleich

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Objektorientierter Systementwurf mit Java

Liste V Enterprise JavaBeans

Enterprise Java Beans

Transkript:

Java Enterprise Edition 6 & Projekt GlassFish Daniel Adelhardt Senior Software Architect Sun Microsystems GmbH 1

Agenda Java Enterprise Edition Rückblick > Java EE 5 Status Quo > Motivation für Java EE 6 Java Enterprise Edition 6 Ausblick > Generelle Änderungen > Enterprise Java Beans API 3.1 > Java Persistence API 2.0 > Java Server Faces 2.0 > Misc. Projekt GlassFish als Java EE 6 Implementierung 2

Java Enterprise Edition 5 Java Enterprise Edition ist seit mehr als 2 Jahren am Markt verfügbar > Sehr schnelle und breite Akzeptanz bei Entwickler > 9 verschiedene Implementierungen verfügbar Weshalb ist die Akzeptanz so gut? > Java EE 5 bringt viele Vereinfachungen mit sich > Ease of Development > Convention over Configuration > Eliminierung vieler althergebrachter Ansätze > Vereinfachtes Packaging & Deployment 3

Java Enterprise Edition 5 Zertifiziert Apache Geronimo 2.1.1 BEA WebLogic 10 IBM WASCE 2.0 Apusic Application Server v5.0 Oracle Application Server v11.0 SAP NetWeaver v7.1 Sun Java System Application Server 9.x TmaxSoft JEUS 6 GlassFish v1/v2 http://java.sun.com/javaee/overview/compatibility.jsp 4

Java EE 5 Inhalte im Detail JAX-B (JSR-222) JAX-WS (JSR-224) StAX (JSR-173) Web Services Metadata (JSR-181) JSP Standard Tag Library (JSR-52) Java Server Faces 1.2 (JSR-252) EJB 3.0 und Java Persistence API (JSR-220) Common Annotations (JSR-250) XML/Web Services Web Technologien EoD 5

Disclaimer Die Java EE 6 Spezifikationen sind noch nicht final. Alle Inhalte daher subject to change! 6

Die Ziele von Java EE 6 Rightsizing der Plattform > Vollständige Plattform vs. Modulare Plattform mit Profilen Weitere Vereinfachung der Entwicklung > Java EE 5 vereinfachte die Entwicklung mit EJBs/JPA und Web Services > Java EE 6 vereinfacht die Entwicklung von Web Applikationen Erweiterbarkeit Plugin Schnittstellen für Open Source Frameworks 7

Der Umfang von Java EE 6(tbc) EJB 3.1 JSR 318 Servlets 3.0 JSR 315 JPA 2.0 JSR 317 JSF 2.0 JSR 314 JCA 1.6 JSR 322 JAX-RS 1.0 JSR 311 JACC JSR 196 WebBeans 1.0 JSR 299 Java EE 6 Platform JSR 316 Plus Updates für JAX-WS 2.2, JSP 2.2, EL 1.1, Web Services 1.3, Common Annotations, JAX-B 2.2 8

Generelle Änderungen in Java EE 6 Einführung von Java EE Profilen > Profile als Sub- oder Supermenge von Java EE > Web Profile(Profile A/B) als erster Vorschlag Enthält Submenge von Java EE Technologien für Web Applikationen wie Servlet 3.0, JSP 2.2, JSF2.0(*), Web Beans(*), JAX-RS, JAX-WS etc. Deployment von EJBs in Web Modulen > Betonung des POJO Charakters von EJBs > Vereinfachtes Packaging für Entwickler Pruning für veraltete Technologien > Verschlanken der Plattform durch Entfernen von APIs 9

Enterprise Java Beans 3.1 Behutsame Erweiterung von EJB 3.0 um folgende Aspekte > Vereinfachung der Entwicklung Vereinfachte Local View auf EJB Session Beans EJB Deployment in Web Archiven (.war Files) EJB lite - Subset von EJB für Web Profile Global JNDI Names Container Bootstrapping API für Unit Testing > Neue Funktionalität Singleton Session Beans EJB Timer Erweiterungen: Automatische Erzeugung von Timern und Calender Expressions Asynchrone Aufrufe 10

EJB 3.1 No Interface Local View EJB 3.0 sieht für EJB Komponenten ein Business Interface vor > EJB 3.1 vereinfacht die Verwendung von Local EJBs per No Interface Local Views > Nur public Methoden der Bean exponiert EJB 3.0 Local SB @Local public interface BarBeanLocal { void foo(); } @Stateless public class BarBean implements BarBeanLocal { public void foo(){...} } EJB 3.1 no-interface @Stateless public class BarBean public void foo(){...} } 11

EJB 3.1 Vereinfachtes Deployment Co-Packaging von Beans in Web Archiven vereinfacht Deployment > Single Naming & Classloader Environment Pre-Java EE 6 MyEar.ear /META-INF/application.xml MyEJB.jar /META-INF/ejb-jar.xml /com/xyz/myejb.class MyWeb.war /WEB-INF/web.xml /WEB-INF/classes/com/abc/MyServlet... Mit Java EE 6 MyWeb.war /WEB-INF/web.xml /WEB-INF/ejb-jar.xml /WEB-INF/classes/com/xyz/MyEJB.class /WEB-INF/classes/com/abc/MyServlet.class 12

EJB 3.1 Singleton Beans Singleton Beans werden pro JVM instanziiert > Erhalten Zustand zwischen Calls Zustand muss nicht persistiert werden > Container vs. Bean managed Concurreny @ReadOnly, @ReadWrite Lock Annotations @Startup //Startup Annotation für Inititalisierug bei Start @Singleton //Marker Annotation für Singletons @DependsOn( MySecondSingleton ) //Abhängigkeit zu 2.ter Bean public class MySingletonEJB { } private String shareddata=... ; @PostConstruct void init () {...} 13

EJB 3.1 Asynchrone Aufrufe EJB 3.1 führt optionale Asynchronität für Session Beans ein > Return Typen: void oder java.lang.concurrent.future<v> > Verwendung: @Asynchronous Annotation für Klassen/Methoden und javax.ejb.asyncresult als Helper Klasse > Client kann Abbruch der Operation per Future<v>.cancel() erreichen und Bean kann per SessionContext.isCancelled() Abbruch prüfen > Transaktionalität und Persistenz der Operation unterstützt 14

EJB 3.1 Timer Service Neuerungen Der Timer Service wird von jedem EJB Container seit EJB 2.1 bereitgestellt > Verwendung in EJB 3.0 per TimedObject Interface oder @Timeout Annotation Neu in EJB 3.1: @Schedule Annotation für Unix cron like Timer Events > Beispiele: @Schedule(dayOfWeek= Mon ) //Jeden Montag 0 Uhr @Schedule(minute= *,hour= * ) // Jede Minute > @Schedule Annotation wird auf Methoden angewand Methode kann optional Timer Objekt in Signatur nutzen 15

EJB 3.1 lite - Under Discussion Es gibt Überlegungen eine Submenge der EJB Spec für das Web Profile aufzunehmen Vorgeschlagene Submenge > Local Session Beans, Annotations / ejb-jar.xml > CMT / BMT, Deklarative Security, Interceptoren > Java Persistence API 2.0 OHNE: > Message Driven Beans, EJB Web Service Endpoints > RMI-IIOP, 2.x / 3.x Remote view, 2.x Local view > Timer Service, CMP / BMP 16

Java Persistence API 2.0 Design Ziele > Mehr Modellierungsmöglichkeiten > Erweitertes OR Mapping > Erweiterungen der Query Sprache > Erweitertes Handling von detached Instances > Validation Referenzimplementierung: EclipseLink Projekt 17

Java Persistence API 2.0 Bessere Modellierung und Mapping > Collections von Basis Typen und Embeddable Typen @ID protected String user; @ElementCollection @CollectionTable(name= Aliase ) @Column(name= Alias ) protected Set<String> aliase; Geordnete Listen > Spezifikation per @OrderBy Annotation für transiente Sortierung @OneToMany() @OrderBy( lastname ) List<Customer> kunden; > Nutzung von @OrderColumn für persistente Sortierung Per Join Table 18

Java Persistence API 2.0 Unterstützung für pessimistisches Locking > EntityManager Erweiterungen lock(), find(), refresh() > Query Erweiterungen setlockmode(), sethint() > @NamedQuery lockmode Attribut Caching per Java Persistence API 2.0 > Interface für optionale Caching Infrastruktur eines JPA Providers > Simple API javax.persistence.cache: contains(entityclass, pk), evict(entityclass,pk), evictall() Integration mit JSR-303 (Beans Validation) für Validierung auf Entity Klassen 19

JAX-RS 1.0 Restful Web Services Rest als Architekturstil für Web Services wird zunehmend populär - JSR 311 stellt eine Standard API für Java bereit Elementares über Rest > Jedes Objekt hat eine ID http://jfs2008.de/besucher/id4711 > Verlinkung von Objekten > Multipe Repräsentation von Dingen in XML, JSON > Verwendung von Standard (HTTP) Methoden wie GET/POST/PUT/DELETE > Stateless Design Rest Services sind einfach zu skalieren und zu nutzen! 20

JAX-RS 1.0 - Überblick Verwendung der @Path Annotation um POJOs zu annotieren > ID wird relativ zum Deployment Context vergeben > Einbettbare Parameter per Annotation @PathParm @Path( besucher/{visitor_id} ) public class JFSBesucher { @GET @ProduceMime({"application/xml", "application/json"}) public JFSBesucherConverter get(@pathparam( visitor_id ) String id } 21

Servlet 3.0 API Neuerungen Pluggability > Verwendung von Addon Frameworks ohne extra Config > Modularisierung der web.xml Include Mechanismus für web.xml Fragmente in 3 rd Party Jar Files per <WebFragment> Element > Erweiterung der ServletContext API um beim Start Servlets, Filter, URL Mappings und Listener zu einer Web App hinzuzufügen Ease of Development > @Servlet Annotation mit url-mapping > @GET, @PUT, @POST, @DELETE, @HEAD, @HttpMethod Annotationen für Methoden 22

Servlet 3.0 API Neuerungen Ease of Development Beispiel @Servlet(urlMapping={ /myservlet },name= MyServlet ) public class MySampleServlet { } @GET public void myget(httpservletrequest req, HttpServletResponse res) {...} Servlet Filter per Annotations @ServletFilter @FilterMapping(urlPattern= /myservlet/* ) public class MyFilter { public void dofilter(req,res) 23

Servlet 3.0 - Asynchronität Die berücksichtigten Use Cases für Asynchronität sind > Server Side AJAX Push per Comet > Asynchrone Web Services und Web Proxies > Ermöglicht non-blocking Verhalten des Containers bei langen Requests Erweiterung von ServletRequest um > void suspend(long timeoutms); void resume(); > void complete(); boolean issuspended(); boolean isresumed(); boolean istimeout(); 24

Java Server Faces 2.0 JSF 2.0 ist eine massive Überarbeitung der Spec mit folgenden Zielen > Einfachere Entwicklung eigener Komponenten > AJAX Support > Page Description Language > Vereinfachte Konfiguration > Kompatibilität zwischen JSF Implementierungen > Bookmarkfähigkeit > Neues State Management > Vereinfachtes Deployment > Standard Facelets Integration 25

Java Server Faces 2.0 JSF Project Stages > Ähnlich wie (J)Ruby on Rails RAILS_ENV > Project Stage Varianten: Production, Development, UnitTest, SystemTest, Extension > Definiert als context-param im web.xml oder per JNDI unter java:comp/env/jsf/projectstage. > Zur Laufzeit per Application.getProjectStage() abrufbar 26

Web Beans JSR 299 Die Web Beans Spezifikation adressiert > Schaffung eines einheitlichen Komponentenmodells für Web-/Business Logik > State & Konversationsmanagement > Konfiguration von Komponenten > Enge Zusammenarbeit mit JSF und EJB3 jedoch keine starre Abhängigkeit dazu! Bestandteile > Komponententyp+API + Annotations + Name + Scope > Komponententypen: Stateless+Statefull SB, Entity, PoJo 27

Web Beans JSR 299 Eigenschaften einer WebBean > Applikationskomponente mit Business Logik > Abhängigkeiten untereinander Container gemanaged > Lifecycle Kontrolle durch Container > Meist Statefull & Kontext bezogen @Component @SessionScoped @Named( FooFoo ) public class Foo{ public String foo(){... } } @Component public class Bar{ @In Foo myfoo; } <h:outputtext value="#{foofoo.foo}" > 28

Zeitplan für Java EE 6 Viele der Spezifikationen sind bereits als Early Access Drafts verfügbar > EJB 3.1, JPA 2.0, Servlet 3.0, JSF 2.0,... > Erste Implementierungen bereits verfügbar Zeitplan sieht April/Mai 2009 für Java EE 6 Release vor Sun's Implementierung GlassFish v3 wird zeitgleich veröffentlicht werden 29

Projekt GlassFish & Java EE 6 GlassFish ist die Open Source Community für Java EE Technologien > Neue Technologien und Specs werden im Rahmen des GlassFish Projektes entwickelt GlassFish ist ein vollständiger Java EE Application Server ausgelegt für produktiven Einsatz > Hohe Performance & Skalierungsfähigkeit, Load Balancing & Clustering Mehr als 6 Millionen Downloads seit 2006 30

GlassFish - Ökosystem & Community Erweiterungen bzw. Nutzung von GlassFish 24x7 Support Tooling für GlassFish Contributions durch Oracle, Ericsson, Community Technologiebasis 31

GlassFish für Entwickler GlassFish ist die offizielle Sun Java EE 5 Referenz 100% Java EE 5 Support für Java 5 und 6 als Runtime Unterstützung für Java Business Integration (JSR-208) Top Web Services Stack (Projekt Metro) mit JAX-WS 2.x, JAX-B Unterstützung für WS-RM, WS-AtomicTX, MTOM,... JMX Instrumentierung Vereinfachung der Entwicklung Developer Profil mit vereinfachter Architektur Tool Integration mit NetBeans und Eclipse WTP Scripting Fähigkeiten Schneller Start Web Start Integration Profiling / Debugging Tools integriert Umfangreiche Dokumentation, Tutorials, Blogs 32

GlassFish Nutzung - Stuttgart http://beta.glassfish.java.net:81/maps/ 33

GlassFish v3 Ziel von von v3 ist Modularität > Rightsizing der Container Architektur > Customizable & Embeddable Container GlassFish v3 wird auf OSGi Basis entwickelt GlassFish für Scripting: JRuby/Rails, Groovy/Grails, Php 34

Java Enterprise Edition 6 & Projekt GlassFish daniel.adelhardt@sun.com 35