JavaDay Paris Java EE 5 & Tools. Paris. Ludovic Champenois Senior Architect Date: 29 Juin 2006

Documents pareils
1. Installation d'un serveur d'application JBoss:

Compte Rendu d intégration d application

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Création d une application JEE

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Java pour le Web. Cours Java - F. Michel

Auto-évaluation Aperçu de l architecture Java EE

J2EE - Introduction. Développement web - Java. Plan du chapitre

Création d un service web avec NetBeans 5.5 et SJAS 9

JOnAS 5. Serveur d application d

4. SERVICES WEB REST 46

Cedric Dumoulin (C) The Java EE 7 Tutorial

Programmer en JAVA. par Tama

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Rapport de projet de fin d études

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Introduction aux «Services Web»

Refonte front-office / back-office - Architecture & Conception -

Introduction à la plateforme J2EE

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Java Avancé. LicencePro Olivier Perrin Université de Lorraine

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Package Java.util Classe générique

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Cours en ligne Développement Java pour le web

EXA1415 : Annotations

EJB. Karim Bouzoubaa Issam Kabbaj

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Développement d un réseau social modulaire

Cours 1: Java et les objets

Alfstore workflow framework Spécification technique

Architecture Orientée Service, JSON et API REST

JOnAS Day 5.1. Outils de développements

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

SOAP Concepts Application à Glassfish

Architectures Web Services RESTful

PRODUCTS LIST (updated 11th January 2010)

Mise en œuvre des serveurs d application

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

JOnAS Day 5.1. Clustering

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Web Tier : déploiement de servlets

Projet Java EE Approfondi

Environnements de Développement

Introduction aux. services web 2 / 2

Dis papa, c est quoi un bus logiciel réparti?

Table des Matières. Qu'est ce qu'un service Web

Remote Method Invocation (RMI)

1 JBoss Entreprise Middleware

Application web de gestion de comptes en banques

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Plan du cours. Historique du langage Nouveautés de Java 7

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

TP1 : Initiation à Java et Eclipse

Bases Java - Eclipse / Netbeans

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Initiation à JAVA et à la programmation objet.

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

Java Naming and Directory Interface

Java 1.5 : principales nouveautés

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Composants Logiciels. Le modèle de composant de CORBA. Plan

Corrigé des exercices sur les références

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Catalogue des Formations Techniques

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello Mise à jour : 30 Septembre 2004

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Programmation par les Objets en Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Une introduction à Java

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

RMI le langage Java XII-1 JMF

JOnAS 5 Enterprise OSGi javaee compliant

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

Une introduction à la technologie EJB (2/3)

Installer GlassFish v3

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

OBJIS : 10 ans d'expérience en formation JAVA. Programme détaillé formation 'Développeur Java web Mobile' OBJIS Congo

Introduction à Java. Philippe Genoud.

Les architectures 3-tiers Partie I : les applications WEB

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

OpenPaaS Le réseau social d'entreprise

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Transcription:

JavaDay Paris Java EE 5 & Tools JavaDay Paris Ludovic Champenois Senior Architect Date: 29 Juin 2006

Agenda JavaDay, Paris 2

Le Java EE 5 nouveau est arrivé! Développement, et production... JavaDay, Paris 3

Java TM EE platforme: les vendeurs Java EE 5: JavaDay, Paris 4

Java TM EE 5 EDI Vendeurs JavaDay, Paris 5

But Principal de Java TM EE 5 Rendre le développement d'applications Java EE plus facile En particulier pendant les phases initiales... JavaDay, Paris 6

Comment ça, plus facile? Programmation déclarative > Avant XML déploiement descripteurs > Maintenant annotations du langage Java Remove requirements > 'Plain Old Java Objects' (POJOs) > Valeurs par défaut: davantage, et meilleures frameworks plus puissants > Vous travaillez moins, le serveur travaille plus Simple à apprendre, et productivité accrue. JavaDay, Paris 7

Java TM EE 5 annotations Usage extensif des annotations > Pour définir ou appeler des web services > Pour mapper des Java classes à XML ou à une DB. > Pour simplifier le développement d' EJB > Pour spécifier les dependences externes > Pour réduire l'usage de déploiements descripteurs JavaDay, Paris 8

Points fort de Java TM EE 5 Support simplifié des web services Plus de support des standards web service Injection de dépendance dévelopement enfantin d'ejb TM Nouveau: Java TM Persistence API Web app plus simples: JavaServer TM Faces Et toujour compatible avec J2EE 1.4 JavaDay, Paris 9

J2EE TM 1.4 Web Service package endpoint; import java.rmi.*; public class HelloServiceImpl implements HelloServiceSEI { public String sayhello(string param) throws java.rmi.remoteexception { return Hello + param; package endpoint; import java.rmi.*; public interface HelloServiceSEI extends java.rmi.remote { public String sayhello(string param) throws java.rmi.remoteexception; <?xml version='1.0' encoding='utf-8'?> <webservices xmlns='http://java.sun.com/xml/ns/j2ee' version='1.1'> <webservice-description> <webservice-description-name> HelloService</webservice-description-name> <wsdl-file> WEB-INF/wsdl/HelloService.wsdl</wsdl-file> <jaxrpc-mapping-file> WEB-INF/HelloService-mapping.xml </jaxrpc-mapping-file> <port-component xmlns:wsdl-port_ns='urn:helloservice/wsdl'> <port-component-name>helloservice</port-component-name> <wsdl-port>wsdl-port_ns:helloserviceseiport</wsdl-port> <service-endpoint-interface> endpoint.helloservicesei</service-endpoint-interface> <service-impl-bean> <servlet-link>wsservlet_helloservice</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices> <?xml version='1.0' encoding='utf-8'?> <configuration xmlns='http://java.sun.com/xml/ns/jax-rpc/ri/config'> <service name='helloservice' targetnamespace='urn:helloservice/wsdl' typenamespace='urn:helloservice/types' packagename='endpoint'> <interface name='endpoint.helloservicesei' servantname='endpoint.helloserviceimpl'> </interface> </service> </configuration> JavaDay, Paris 10

Java TM EE 5 Web Service package endpoint; import javax.jws.webservice; @WebService public class Bonjour { public String ditbonjour(string param) { return Bonjour + param; JavaDay, Paris 11

Java TM EE 5 Web Service Client package client; import endpoint.*; import javax.xml.ws.webserviceref; public class BonjourClient { @WebServiceRef(BonjourService.class) private static Bonjour svc; public static void main(string[] argv) { System.out.println(svc.ditBonjour(argv[0]); JavaDay, Paris 12

Web Services avec Java TM EE 5 JAX-WS (successeur de JAX-RPC) et JAXB sont la base des web services Support des nouveaux W3C standards > SOAP 1.2, MTOM/XOP, XML Schema 1.0 Supports des nouveaux WS-I standards > Basic Profile 1.1, Attachment Profile 1.0 Mise en œuvre: début du support WS-* specs > WS-Security Plus de WS-* dans la prochaine spec > WS-Addressing (JSR-261), WS-Policy (JSR-265) JavaDay, Paris 13

JAXB 1.0 1.0 génère: // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v@@build_version@@ // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2005.04.21?? 10:37:56 PDT // package generated.impl; public class PointTypeImpl implements generated.pointtype, com.sun.xml.bind.jaxbobject, generated.impl.runtime.unmarshallableobject, generated.impl.runtime.xmlserializable, generated.impl.runtime.validatableobject { protected boolean has_y; protected float _Y; protected boolean has_x; protected float _X; public final static java.lang.class version = (generated.impl.jaxbversion.class); private static com.sun.msv.grammar.grammar schemafragment; private final static java.lang.class PRIMARY_INTERFACE_CLASS() { return (generated.pointtype.class); public float gety() { return _Y; public void sety(float value) { _Y = value; has_y = true; public float getx() { return _X; public void setx(float value) { _X = value; has_x = true; public generated.impl.runtime.unmarshallingeventhandler createunmarshaller(generated.impl.runtime.unmarshallingcontext context) { return new generated.impl.pointtypeimpl.unmarshaller(context); public void serializebody(generated.impl.runtime.xmlserializer context) throws org.xml.sax.saxexception { if (!has_y) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "Y")); if (!has_x) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "X")); context.startelement("", "x"); context.endnamespacedecls(); context.endattributes(); try { context.text(javax.xml.bind.datatypeconverter.printfloat(((float) _X)), "X"); catch (java.lang.exception e) { generated.impl.runtime.util.handleprintconversionexception(this, e, context); context.endelement(); context.startelement("", "y"); context.endnamespacedecls(); context.endattributes(); try { context.text(javax.xml.bind.datatypeconverter.printfloat(((float) _Y)), "Y"); catch (java.lang.exception e) { generated.impl.runtime.util.handleprintconversionexception(this, e, context); context.endelement(); public void serializeattributes(generated.impl.runtime.xmlserializer context) throws org.xml.sax.saxexception { if (!has_y) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "Y")); if (!has_x) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "X")); public void serializeuris(generated.impl.runtime.xmlserializer context) throws org.xml.sax.saxexception { if (!has_y) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "Y")); if (!has_x) { context.reporterror(com.sun.xml.bind.serializer.util.createmissingobjecterror(this, "X")); public java.lang.class getprimaryinterface() { return (generated.pointtype.class); public com.sun.msv.verifier.documentdeclaration createrawvalidator() { if (schemafragment == null) { schemafragment = com.sun.xml.bind.validator.schemadeserializer.deserialize(( "\u00ac\u00ed\u0000\u0005sr\u0000\u001fcom.sun.msv.grammar.sequenceexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xr\u0000\u001dcom.su" +"n.msv.grammar.binaryexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0002l\u0000\u0004exp1t\u0000 Lcom/sun/msv/gra" +"mmar/expression;l\u0000\u0004exp2q\u0000~\u0000\u0002xr\u0000\u001ecom.sun.msv.grammar.expressi" +"on\u00f8\u0018\u0082\u00e8n5~o\u0002\u0000\u0002l\u0000\u0013epsilonreducibilityt\u0000\u0013ljava/lang/boolean;l\u0000\u000b" +"expandedexpq\u0000~\u0000\u0002xpppsr\u0000\'com.sun.msv.grammar.trex.elementpatt" +"ern\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0001l\u0000\tnameclasst\u0000\u001flcom/sun/msv/grammar/nameclass;" +"xr\u0000\u001ecom.sun.msv.grammar.elementexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0002z\u0000\u001aignoreundecl" +"aredattributesl\u0000\fcontentmodelq\u0000~\u0000\u0002xq\u0000~\u0000\u0003pp\u0000sq\u0000~\u0000\u0000ppsr\u0000\u001bcom.s" +"un.msv.grammar.dataexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0003l\u0000\u0002dtt\u0000\u001florg/relaxng/dataty" +"pe/datatype;l\u0000\u0006exceptq\u0000~\u0000\u0002l\u0000\u0004namet\u0000\u001dlcom/sun/msv/util/string" +"Pair;xq\u0000~\u0000\u0003ppsr\u0000\"com.sun.msv.datatype.xsd.FloatType\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002" +"\u0000\u0000xr\u0000+com.sun.msv.datatype.xsd.floatingnumbertype\u00fc\u00e3\u00b6\u0087\u008c\u00a8 \u00e0\u0002\u0000\u0000" +"xr\u0000*com.sun.msv.datatype.xsd.builtinatomictype\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xr\u0000" +"%com.sun.msv.datatype.xsd.concretetype\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xr\u0000\'com.sun" +".msv.datatype.xsd.xsdatatypeimpl\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0003l\u0000\fnamespaceurit\u0000" +"\u0012ljava/lang/string;l\u0000\btypenameq\u0000~\u0000\u0014l\u0000\nwhitespacet\u0000.lcom/sun/" +"msv/datatype/xsd/whitespaceprocessor;xpt\u0000 http://www.w3.org/" +"2001/XMLSchemat\u0000\u0005floatsr\u00005com.sun.msv.datatype.xsd.WhiteSpac" +"eprocessor$collapse\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xr\u0000,com.sun.msv.datatype.xsd.w" +"hitespaceprocessor\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xpsr\u00000com.sun.msv.grammar.expre" +"ssion$nullsetexpression\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xq\u0000~\u0000\u0003ppsr\u0000\u001bcom.sun.msv.ut" +"il.stringpair\u00d0t\u001ejb\u008f\u008d\u00a0\u0002\u0000\u0002l\u0000\tlocalnameq\u0000~\u0000\u0014l\u0000\fnamespaceuriq\u0000~\u0000" +"\u0014xpq\u0000~\u0000\u0018q\u0000~\u0000\u0017sr\u0000\u001dcom.sun.msv.grammar.choiceexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000xq\u0000" +"~\u0000\u0001ppsr\u0000 com.sun.msv.grammar.attributeexp\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0002l\u0000\u0003expq\u0000" +"~\u0000\u0002l\u0000\tnameclassq\u0000~\u0000\u0007xq\u0000~\u0000\u0003sr\u0000\u0011java.lang.boolean\u00cd r\u0080\u00d5\u009c\u00fa\u00ee\u0002\u0000\u0001z\u0000" +"\u0005valuexp\u0000psq\u0000~\u0000\u000bppsr\u0000\"com.sun.msv.datatype.xsd.qnametype\u0000\u0000\u0000\u0000" +"\u0000\u0000\u0000\u0001\u0002\u0000\u0000xq\u0000~\u0000\u0011q\u0000~\u0000\u0017t\u0000\u0005qnameq\u0000~\u0000\u001bq\u0000~\u0000\u001dsq\u0000~\u0000\u001eq\u0000~\u0000)q\u0000~\u0000\u0017sr\u0000#com." +"sun.msv.grammar.simplenameclass\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0002l\u0000\tlocalnameq\u0000~\u0000\u0014l" +"\u0000\fnamespaceuriq\u0000~\u0000\u0014xr\u0000\u001dcom.sun.msv.grammar.nameclass\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001" +"\u0002\u0000\u0000xpt\u0000\u0004typet\u0000)http://www.w3.org/2001/xmlschema-instancesr\u00000" +"com.sun.msv.grammar.expression$epsilonexpression\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0000x" +"q\u0000~\u0000\u0003sq\u0000~\u0000$\u0001psq\u0000~\u0000+t\u0000\u0001xt\u0000\u0000sq\u0000~\u0000\u0006pp\u0000sq\u0000~\u0000\u0000ppq\u0000~\u0000\u000esq\u0000~\u0000 ppsq\u0000~" +"\u0000\"q\u0000~\u0000%pq\u0000~\u0000&q\u0000~\u0000-q\u0000~\u00001sq\u0000~\u0000+t\u0000\u0001yq\u0000~\u00005sr\u0000\"com.sun.msv.gramma" +"r.expressionpool\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0000\u0001l\u0000\bexptablet\u0000/lcom/sun/msv/gramma" +"r/expressionpool$closedhash;xpsr\u0000-com.sun.msv.grammar.expres" +"sionpool$closedhash\u00d7j\u00d0n\u00ef\u00e8\u00ed\u001c\u0003\u0000\u0003i\u0000\u0005countb\u0000\rstreamversionl\u0000\u0006par" +"entt\u0000$lcom/sun/msv/grammar/expressionpool;xp\u0000\u0000\u0000\u0005\u0001pq\u0000~\u0000\u0005q\u0000~\u0000!" +"q\u0000~\u00008q\u0000~\u0000\nq\u0000~\u00007x")); return new com.sun.msv.verifier.regexp.redocumentdeclaration(schemafragment); public class Unmarshaller extends generated.impl.runtime.abstractunmarshallingeventhandlerimpl { public Unmarshaller(generated.impl.runtime.UnmarshallingContext context) { super(context, "-------"); protected Unmarshaller(generated.impl.runtime.UnmarshallingContext context, int startstate) { this(context); state = startstate; public java.lang.object owner() { return generated.impl.pointtypeimpl.this; public void enterelement(java.lang.string uri, java.lang.string local, java.lang.string qname, org.xml.sax.attributes atts) throws org.xml.sax.saxexception { int attidx; outer: while (true) { switch (state) { case 3 : if (("y" == local)&&("" == uri)) { context.pushattributes( atts, true); state = 4; return ; break; case 0 : if (("x" == local)&&("" == uri)) { context.pushattributes( atts, true); state = 1; return ; break; case 6 : reverttoparentfromenterelement( uri, local, qname, atts); return ; super.enterelement( uri, local, qname, atts); break; public void leaveelement(java.lang.string uri, java.lang.string local, java.lang.string qname) throws org.xml.sax.saxexception { int attidx; outer: while (true) { switch (state) { case 2 : if (("x" == local)&&("" == uri)) { context.popattributes(); state = 3; return ; break; case 6 : reverttoparentfromleaveelement( uri, local, qname); return ; case 5 : if (("y" == local)&&("" == uri)) { context.popattributes(); state = 6; return ; break; super.leaveelement( uri, local, qname); break; public void enterattribute(java.lang.string uri, java.lang.string local, java.lang.string qname) 308 lignes pour <point><x>1</x><y>2</y></point> 38 fichiers 219KB de code JavaDay, Paris 14

JAXB 2.0 JAXB 2.0 génère: @XmlAccessorType(FIELD) @XmlType(name =, proporder = { x, Y ) @XmlRootElement(name = point ) public class Point { protected float x; protected float y; public float getx() { return x; 62 lignes pour <point><x>1</x><y>2</y></point> 2 fichiers 3KB de code public void setx(float value) { this.x = value; public float gety() { return y; public void sety(float value) { this.y = value; JavaDay, Paris 15

EJB TM 3.0: 'mais qu'est ce que c'est ce Beans?' Simplification 'dramatique' de tous les beans Basé sur des POJO Plus de valeurs par défaut Injection de dépendance Intercepteurs JavaDay, Paris 16

Java TM EE 5 Web Service Transactionnel package endpoint; import javax.jws.webservice; import javax.ejb.stateless; @WebService @Stateless public class Bonjour { public String ditbonjour(string param) { return Bonjour + param; JavaDay, Paris 17

Java TM Persistence API API de persistence pour Java EE et Java SE Developpé par le groupe expert EJB > Basé sur des années d'experience avec des technologies et produits existants Beacoup plus simple que EJB CMP Tout le monde aime:-) Au moins 3 implementations (toutes open source): > Oracle GlassFish/TopLink Essentials > JBoss Hibernate > BEA Kodo/OpenJPA JavaDay, Paris 18

Java TM EE 5 Web Service Transactionnel package endpoint; import javax.jws.webservice; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; @WebService @Stateless public class Bonjour { @PersistenceContext private EntityManager em; public String ditbonjour(string param) { Personne p = em.find(personne.class, param); if (p == null) { p = new Personne(param); em.persist(p); return Hello + param + : + p.incrementcount(); JavaDay, Paris 19

Java TM EE 5 Web Service Transactionnel package endpoint; import javax.persistence.*; @Entity public class Personne { @Id protected String nom; protected int cnt; public Person() { public Person(String n) { nom = n; public int incrementcount() { return ++cnt; JavaDay, Paris 20

Java TM EE 5 Web Service Transactionnel persistence.xml: <?xml version= 1.0 encoding= UTF-8?> <persistence version= 1.0 xmlns= http://java.sun.com/xml/ns/persistence > <persistence-unit name= pu1 /> </persistence> JavaDay, Paris 21

Injection de Dépendance Exemple de 'Inversion of Control' IoC Le conteneur injecte les ressources... > DataSource, EJB ref, web service ref, persistence units, UserTransaction, env entries,...... dans l'application... > Champs, methodes; public, private, ou protected... dans les classes 'container-managed' > EJBs, servlets, JSF managed beans, web service endpoints, handlers, interceptors, app clients > Ceci remplace JNDI JavaDay, Paris 22

J2EE 1.4 Ressource Lookup public class MonEJB implements SessionBean { private DataSource mads; public void ejbcreate() {... try { InitialContext ctx = new InitialContext(); mads = (DataSource)ctx.lookup( employeedatabase ); catch (NamingException ex) { // XXX? Et en plus : entrée déploiement descripteur JavaDay, Paris 23

Injection de Dépendance package com.exemple; @Session public class MonEJB { @Resource... private DataSource mads; Déclare une ressource nommée com.exemple.monejb/mads Et l'injecte dans le champ mads Plus besoin de déploiement descripteur! JavaDay, Paris 24

JavaServer TM Faces 1.2 'Le' Web Framework pour le standard Java EE > Injection de dépendance dans les managed beans > Simple, puissant, extensible Expression Language, commun avec JSP Marché de composants JSF > Plus de 200 composants provenant de 20+ vendeurs comme: > Apache, BusinessObjects, ESRI, Oracle, Sun, etc. > Incluant le support AJAX Composants Java BluePrints AJAX > http://blueprints.dev.java.net JavaDay, Paris 25

Web 2.0 Java Pet Store: Construit avec des composants AJAX-JSF Auto-complete Ratings RSS Reader Popup Balloon File Upload Google Maps Mashup JavaDay, Paris 26

Projet GlassFish Développer un application serveur Java EE 5 en open source Java.sun.com/javaee/GlassFish Simplifier le development Java applications avec les technologies Java EE 5 Inclus JAX-WS 2.0, JAXB 2.0, JSF 1.2, EJB 3.0, et Java Persistence 1.0 Support > 40 frameworks and apps Open source CDDL license Base pour le Java EE 5 SDK Free to download and free to deploy Plus de 2200 membres & 280,000 downloads Contributions de Oracle, BEA, IBM,... Intégré avec NetBeans Source: Sun 2/06 See website for latest stats blogs.sun.com/theaquarium JavaDay, Paris 27

Les outils pour Java EE 5 vi/emacs Java EE 5 SDK > Admin GUI > Auto-deploy > Asadmin CLI > Blueprints NetBeans 5.5: raison d'être-> Java EE 5 JavaDay, Paris 28

NetBeans 5.5 Momentum > 10m+ téléchargement de l'lde...exponentiel > 3m+ pages vues par mois > 330k+ souscription pour les listes courielles > 100+ partenaires industriels > 400% d'augmentation des utilisateurs actifs depuis 2,5 ans JavaDay, Paris 29

NetBeans 5.5 But: rendre le développement d' apps Java EE 5 encore plus simple Java EE 5 'end to end' développement > Java Persistence API > Web Tier > EJB 3.0 > Web Services 2.0 Support du Java EE 5 SDK Toujours aussi simple d'emploi (NetBeans 5.0) > Projets: basés sur ANT > JBoss, WebLogic, Tomcat > Profiling of Java EE apps (pack additionnèl) JavaDay, Paris 30

NetBeans 5.5 Assistants graphiques Détection d'erreurs en ligne et corrections Editeurs spécialisés > JPA, Web Sevices, JSP, JSF, EL, Sécurité, Palette,... Générateurs > DB vers JPA, JPA vers DB > CRUD: JPA vers JSF! > Annotations (ou non!) EE 5 BluePrints catalogue JavaDay, Paris 31

Java TM EE 5 en résumé: Java EE 5 est beaucoup plus facile Téléchargez le SDK: > http://java.sun.com/javaee > Prêt au développement > Prêt à la production! Impliquez vous dans la communauté GlassFish > http://glassfish.dev.java.net Donnez nous votre avis, participez: > javaee-spec-feedback@sun.com > http://forum.java.sun.com JavaDay, Paris 32

NetBeans 5.5 et Java EE 5 SDK DEMOS > Plus de démos cet après-midi... JavaDay, Paris 33

JavaDay Paris Ludovic Champenois JavaDay Paris Date: Ludovic 29 juin Champenois 2006 lc@sun.com