Journée « L’Open Source SUN à l’honneur » : stratégie logicielle Open Source de Java à GlassFish et au-delà

Le but de ce billet est de donner un aperçu des nouveautés de Java EE 6 annoncées lors de la journée « L’Open Source SUN à l’honneur » qui s’est tenue à Paris le 12 décembre 2008.

La spécification Java EE 6 est prévue pour mi-2009.  Elle se veut résolument tournée vers la simplicité de développement.  Hormis la programmation orientée POJO grâce aux annotations, déjà présente dans JEE 5, Java EE 6 introduit la notion de profils. Un profil correspond à des sous-ensembles de spécifications répondant à un « use-case » précisément identifié, et pouvant donner lieu à une certification de compatibilité. Par exemple, le profil Web contiendrait le minimum de technologies nécessaires pour développer une application Web : Servlet 3.0, JSP 2.1, JSR-45, EL 1.2, JSTL 1.2, JSF 2.0, EJB Lite 3.1, JTA 1.1, JPA 2.0, JSR-250.  Les technologies JAX-RS 1.1 et Web Beans 1.0 sont encours de discussion.

En plus des profils, Java EE 6 introduit l’élagage (pruning) qui consiste à rendre certaines technologies optionnelles : les technologies élaguées sont rendues optionnelles dans la prochaine « release » et un état élagué est noté dans la Javadoc. Ainsi, les technologies JAX RPC, EJB Entity Bean, JAXR et JSR-88 seront élaguées, et donc probablement optionnelles dans la prochaine sortie de JavaEE 6.

La dernière nouveauté de Java EE 6 est l’extensibilité. L’extensibilité permet d’ajouter de nouveaux frameworks à son application (en déposant des fichiers jar dans un répertoire précis) sans se soucier d’apporter des modifications au fichier web.xml.

Ci-dessous est donnée une liste (non exhaustive) des nouveautés apportées à certaines technologies Java EE 6, présentées lors de la journée.

Nouveautés Servlet 3.0 :

  • Les Servlets deviennent faciles à développer grâce aux annotations. Avec les annotations, vous pouvez écrire vos Servlets sous forme de POJOs. Les annotations @Webservlet, @ServletFilter et @WebServletContextListener sont utilisées pour déclarer une Servlet, un filtre et un listener.
  • Toute classe annotée présente dans /WEB-INF/classes ou dans un jar de /WEB-INF/lib est automatiquement découverte et prise en compte. Le descripteur web.xml devient alors facultatif.
  • Le fichier de configuration web.xml devient modulaire en utilisant des fichiers fragments web-fragment.xml.
  • Une API pour un enregistrement dynamique des Servlets
  • Traitement asynchrone des Servlets (@WebServlet(asyncSupported=true)). Pour rentrer en mode asynchrone, il faut utiliser la méthode ServletRequest.startAsync(). Cette méthode renvoie un objet AsycContext qui permet de contrôler le mode asynchrone.
@WebServlet(urlMappings="/foo")
public class MyServlet extends HttpServlet {
     @Get
     public void handleGet(HttpServletRequest request, HttpServletResponse response) {
                ....
     }
}

Nouveautés EJB3.1 :

  • Il n’est plus nécessaire d’implémenter une interface locale pour écrire des Sessions Beans.
  • L’ajout d’un Singleton Bean qui correspond bien évidemment au classique Design Pattern Singleton dans un conteneur.
  • Une nouvelle annotation fait son apparition : @Schedule. Avec cette annotation, il est maintenant possible d’activer un scheduler similaire à la Crontab sous Unix.
  • Les méthodes des Sessions Beans peuvent désormais être appelées de façon asynchrone en utilisant l’annotation @Asynchronous. Lorsqu’un client appelle une méthode asynchrone, le container redonne aussitôt la main au client et continue l’appel de cette méthode asynchrone dans un autre thread.
  • Pour faciliter le déploiement, il est maintenant possible de déployer des composants EJB 3.1 dans une archive WAR. On peut désormais appeler des EJB directement dans un container de Servlets comme Tomcat. Tout tient dans une archive WAR.
  • Un nom JNDI global pour accéder aux Beans (Par exemple, java:global/com/od/HelloWorld).
  • Introduction de la notion EJB embarqué: il est possible de déclarer et de lancer programatiquement un conteneur EJB léger. Cela rend possible l’utilisation des EJB dans n’importe quel environnement («EJBs everywhere!»), par exemple lors des tests unitaires.

Nouveautés  JPA 2.0 :

  • JPA 2.0 est désormais doté de l’API Criteria, inspirée d’Hibernate.
  • Il est possible de mapper des collections d’éléments simples (List<String>, par exemple) à l’aide de l’annotation «CollectionOfElements».
  • La sauvegarde d’un ordre de tri en base, avec @OrderedBy(« lastLoginDate ») et @OrderColumn(« loginOrder »). JPA crée automatiquement une colonne supplémentaire en base pour conserver cet ordre.

Une réflexion au sujet de « Journée « L’Open Source SUN à l’honneur » : stratégie logicielle Open Source de Java à GlassFish et au-delà »

Laisser un commentaire

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