[JUG Nantes]Retour du Jeudi 14 Janvier 2010 : Les nouveautés de Java EE6 avec Antonio Goncalves

Jeudi 14 Janvier nous avons eu le plaisir de recevoir Antonio Goncalves au JUG de Nantes, qui est venu nous présenter les dernières nouveautés de Java EE6.
Avant de commencer la liste des nouveautés de Java EE6. Je pense qu'il faut s'arrêter sur le parcours d'Antonio.
Antonio Goncalves
Comme le dit si bien Antonio "Il n'appartient à personne!" et il est Architecte sénior en freelance.
Antonio intervient chez ses clients comme consultant et formateur.
Ancien de chez BEA en tant que consultant Weblogic , il s'est spécialisé depuis 1998 dans l'architecture logicielle et les technologies Java.
Antonio est l'auteur de plusieurs livres dont Java EE5 aux éditions Eyrolles et Java EE 6 aux éditions Apress.
Il est membre du JCP (Java Community Process) et intervient sur les JSR 316 (Java EE 6), JSR 317 (JPA 2.0) et JSR 318 (EJB 3.1).
Il enseigne également la plate-forme Java EE au Conservatoire National des Arts et Métiers (http://www.cnam.fr/).
Il est rédacteur technique pour les sites DevX et Developpez.com, co-fondateur du Paris Java User Group (http://www.parisjug.org/) et co-animateur des Cast Codeurs (http://lescastcodeurs.com/).

Depuis peu, Il a été élu "Java Champion" pour sa forte implication sur la plateforme Java.
Suivez-le sur son blog http://agoncal.wordpress.com/ ou sur Twitter http://twitter.com/agoncal.

Pour commencer un bref historique de java s'impose :

  • Project JPE May 1998
  • J2EE 1.2 Dec 1999 10 spécifications
         * Servlet
         * JSP
         * EJB
         * JMS
         * RMI/IIOP
  • J2EE 1.3 Sept 2001 13 spécifications
         * Robust 
         * Scalable  
         * CMP
         * JCA
  • J2EE 1.4 Nov 2003
         * Web services 
         * Management 
         * Deployment
  • JAVA EE5 May 2006
         * Développement plus facile
         * Annotations, 
         * EJB3, 
         * JPA 1.0, 
         * Web Service,
         * JSF
  • JAVA EE6 Q4 2009 29 spécifications Développement Web plus facile
         * EJB3.1,
         * JPA2.0, 
         * Servlet 3.0, 
         * JSF 2.0, 
         * JAX-RS1.1,
         * JCDI 1.0,
         * Web profile

The JCP expert Group :

  • 8 compagnies au départ
  • Aujourd'hui 15 compagnies 10 individuels (dont 13 ou 14 qui font de l'open source) 1 université .

Avec pour ne citer que quelques unes Sun Microsystems, IBM, Spring source, red hat...
Pour Antonio, le JCP va dans le bon sens, plus d'open source et plus d'ouverture. JAVA EE6 est un bon millésime.
Il y a de nombreuses nouveautés dans cette version de java EE6

Partie web :

  • JSF 1.2 -> 2.0
  • Servlet 3.0
  • JSP
  • EL
  • JSTL
  • Debugging
  • Support

Enterprise :

  • EJB
  • JCA
  • JPA
  • Web services
  • JAX-RS
  • Management, Security,Common
      * CDI(JSR 299)1.0
      * @inject (JSR330) 1.0
      * Bean validation 1.0
      * Interceptors 1.1
      * Managed Beans 1.0

Java SE 6

  • Jax-ws

Antonio nous explique que dans Java EE7 ils vont pruned (enlever) certaines spécifications qui sont peu utilisées.

  • entity CMP2.x
  • JAX-RPC
  • JAX-R
  • JSR 88 (JAVA EE aplication developpement)

Java EE6 c'est 29 spécifications.
La grande nouveauté c'est la gestion des profils avec notamment un profil web qui possèdent une dizaine de pages de spécifications JSR 316.
Chaque profil va évoluer à son rythme.

EJB Lite qui tourne dans un conteneur web et plus dans un conteneur EJB.

Il ne reste plus que Local Session Bean

  • Injection
  • CMT/BMT
  • Interceptors
  • Security

resin 4: le premier serveur d'application qui implémentera le profil web http://www.caucho.com/projects/resin/ .

Portable JNDI names: Les noms seront maintenant normés.

Nouvelles spécifications:
Le développement est facilité grâce aux annotations.

Annotations based programming model

  • @WebServlet
  • @ServletFilter
  • @WebServletContextListener
  • @InitParam
  • Deployment descriptors optional (web.xml)
  • Modular

Extensible

  • Fragments or modular web.xml
  • Logical partitioning of a web application
  • Annotations and web fragments are merged
  • Overriden by main web.xml

Managed Beans 1.0
Tout ce qui tourne dans un conteneur est managé, On peut faire de l'injection. Il a un cycle de vie simple et des intercepteurs (modele AOP).

EJB c'est un managed bean avec des services en plus.

  • Transaction support
  • security
  • Multi thread

A REST service is a Managed bean with HTTP support.

Interceptors 1.1

existe depuis les EJB 3, permet à la plate forme de faire de l'AOP lite.
ils peuvent être mis dans un managed bean. Elle a une nouvelle spécification.

Bean Validation 1.0

  • Enable declarative validation in your applications.
  • Contrain Once,validate anywhere
  • rectriction on a bean, field or property.
  • not null, size between

Permet d'écrire des règles métiers et de les utiliser avec JPA 2, les EJB ou JSF.
L'objet métier définit des règles.Un entity est maintenant serializable.

JAX-RS 1.1

  • RESTful Services existe depuis un an.
  • Spec minimaliste 60 pages. Permet d'exposer des services en mode REST.
  • POJO and Annotations Based
  • MAP HTTP verbs(GET,Post,Put,Delete...)
  • JAX-RS 1.0 has been released in 2008
  • JAX-RS 1.1 integreé au modeles EJB.

On peut aussi dire que ma ressource REST est un EJB.

@Inject 1.0 (JSR 330)
On peut injecter des managed bean.

Il ne faut que 5 annotations pour faire de l'injection.
package javax.inject

  • @Inject: identifies injectable constructors, methods,and fields.
  • @Named: String-based qualifier (for EL)
  • @Qualifier:Identifies qualifier
  • @Scope:Identifies scope annotations (request,conversation,session + un autre)
  • @singleton:Instantiates once

On peut injecter ses propres annotations pour pouvoir différencier ses propres services par exemple.

CDI 1.0 (JSR 299)
c'est le nouveau nom des WEB Beans. Spécification qui au dessus de @Inject

  • Context & Dependency injection
  • Uses @inject annotations

JPA2: Richer Mapping
avant JPA 1 et hibernate. Maintenant JPA2 est au dessus d'Hibernate.
On peut mapper des listes, des maps. Le mapping est beaucoup plus riche.

Richer JPQL
Query polymorphique. Join dans une subquery

JPA 2 lock pessimiste,
JPA2 a maintenant un cache.
Caching
Supports the use of a second-level cache
Cache API
* contain(Class,PK)
* evict
* evictall

       * @Cacheable annotation on entities

Criteria API

  • Type safe
  • Strongly typed criteria API
  • Object-based query definition objects, rather than string-based
  • Like JPQL
  • uses a metamodel.
  • Chaque entité a un nom_ (metamodel)
  • Rendre les "order by" persistant.
  • detacher explicitement un entity.
  • Supprimer les orphelins
  • standard properties in persistence.xml

EJB 3.1
Classe qui implémente des interfaces locales ou distribuées.

Singleton
nouveau composant. Une seule instance de cet EJB.
Singleton par application on ne parle pas de cluster ici.

Appel asynchrone:

  • une annotation : @Asynchronous

Packaging in a war

un conteneur Websphere, Weblogic.

Enfin un conteneur léger, embarqué donc testable. Peut tourner dans un JAVA SE environnement.

Timer Service

  • Programmatic and Calendar based scheduling
  • basé sur Cron
  • Annotation @Schedule

Servlet 3.0

  • Optional web.xml
  • Better defaults and CoC
  • Annotations basing programmeted model.

Pluggability

  • Enable use of frameworks without configuration in web.xml
  • Fragment the web.xml to allow frameworks to be self_contained in their own jar.

* Declare their own controller servlet
* Declare listener and filters

Asynchronous support
Je peux faire une requête HTTP faire un traitement et laisser sur un autre thread.
Puis enfin avoir mon résultat. Mais le problème tout doit être asynchrone.

Un file upload.

JSF 2.0

  • Composite components
  • write your own components
  • no java code needed
  • use xhtml and JSF tags

Ajax support.
pour la premiere fois. (jsf.js) javascript library.

L'avenir ?

  • La fin des jsp
  • Facelets for templating.
  • Easier resources management
  • New scope (View)
  • Bookmarkable Urls

Tout est disponible depuis le 10 décembre 2009 avec Glassfish par exemple.

Pour la première fois toute les implémentations de référence sont open source.
Tout les grands interagissent entre eux. Chacun a écrit un bout de puzzle et la gestion des profils permet de faire son serveur à la carte.
Pour l'instant, seulement 2 serveurs d'application permettent de faire tourner Java EE6 : GlassFish et bientôt Resin.

Merci d'avoir lu le billet jusqu'ici pour les plus courageux. C'est vrai que c'est assez fastidieux à lire mais il est difficile de résumer plus de 800 pages de spécifications en quelques lignes. Antonio a su avec sa bonne humeur et son humour rendre toutes ces informations digestes.
Je vous invite à lire son livre qui explique toutes ces nouveautés : Java EE 6

2 commentaires

  1. Bienvenu à toi à Netapsys et merci pour ton post. C’est intéressant de lire ton retour.
    Et je vous rejoins (Denis et toi) sur le point: Comment peut-on faire un développement (sain) et faciliter la maintenance sans apprendre l’essentiel de ces design patterns?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.