Blog Zenika

#CodeTheWorld

Java

Sortie de Spring 3.0

Après plus d’un an et demi de travail, SpringSource a annoncé que la sortie de Spring 3.0. Cette nouvelle version apporte son lot de nouveautés comme une API révisée pour Java 5, un support serveur et client pour REST, un langage d’expression et bien d’autres choses encore. Voici un condensé de ces changements et de ces nouveautés.

  • Passage à Java 5 : le code de Spring 3.0 a été entièrement révisé pour tirer pleinement parti de Java 5. Cette révision a été faite bien sûr dans le code interne mais aussi dans les diverses API de Spring. Ainsi, les divers Templates (JdbcTemplate, HibernateTemplate, RestTemplate, etc.) disposent maintenant de méthodes à arguments variables et tirent parti des génériques. Cela donne du code plus concis et plus sûr ; finis les transtypages hasardeux ! Spring 3.0 ne profitent pas seulement des améliorations syntaxiques de Java 5, mais aussi des API disponibles. Par exemple, l’abstraction de TaskExecutor tirent maintenant parti des API de concurrences introduites dans Java 5.
  • Langage d’expression : le Spring Expression Language (SpEL), proche du standard Unified EL mais plus puissant, peut être utilisé à la fois dans les configurations XML et par annotations. Il permet par exemple de facilement utiliser dans la configuration d’un contexte Spring des valeurs de propriétés système ou des propriétés d’autres beans ou tout autre type d’expressions. Le SpEL sera vraisemblablement très utilisé dans les projets du portfolio Spring. A noter que le SpEL propose aussi une API qui permet de l’embarquer dans une application.
  • Support REST : les contrôleurs Spring MVC peuvent maintenant devenir très facilement des Web Services REST, grâce à l’ajout de quelques annotations. Que vous utilisiez Spring principalement pour le backend ou aussi pour la partie Web d’une application, exposer quelques fonctionnalités sous forme de Web Services REST ne demande aucun effort. Spring 3.0 propose aussi un support REST client, sous la forme du RestTemplate, qui permet d’interroger des Web Services REST en masquant la plupart des détails techniques pénibles : les différentes opérations HTTP (GET, POST, DELETE, etc.), pool de connexions HTTP, transformations de la réponse (flux XML, contenu binaire ou même désérialisation en objets Java). Le RestTemplate est donc un outil de choix pour attaquer toute application exposant des Web Services REST.
  • Validation déclarative avec la JSR-303 “Bean Validation” : cette JSR permet d’apposer des annotations de validation sur des classes Java. Spring MVC est maintenant capable de lancer la validation sur les objets synchronisés depuis la couche graphique.
  • Implémentation de la JSR-330 “Dependency Injection for Java” : Spring 3.0 supporte cette JSR définissant un système d’injection basé sur des annotations, proche de celui de Google Guice.
  • Configuration 100% Java : Spring 2.5 avait apporté un modèle de configuration puissant basé sur des annotations (notons que Spring 3.0 améliore encore ce modèle), Spring 3.0 permet maintenant d’effectuer une configuration 100% Java, sans XML, où les méta-données de configuration sont fournies par des classes Java annotées.
  • Amélioration de Spring MVC : un nouveau namespace mvc permet de simplifier la configuration de l’infrastructure nécessaire aux contrôleurs annotés et à la validation JSR-303. Spring MVC bénéficie aussi d’un nouveau système de conversion, utilisé pour le binding formulaire HTML/objet Java.
  • Support des premières briques de Java EE 6 : certaines briques de Java EE 6 (JSR-303, JSF 2.0, JPA 2.0) sont déjà supportées par Spring 3.0. Cela permet de bénéficier d’important services de JEE 6, avant même que les serveurs correspondants ne soient officiellement disponibles. La portabilité de Spring 3.0 permet aussi d’effectuer des combinaisons intéressantes, comme par exemple utiliser JPA 2.0, une brique JEE 6, sur un conteneur comme Tomcat 5.5, un conteneur Web de la génération de JEE 1.4. Parfait pour une migration pas à pas.
  • Bases de données embarquées : fonctionnalité toujours bonne à prendre, un support pour des bases de données embarquées (H2, HSQLDB et Derby). Avec un namespace dédié, définir un bean datasource pour une de ces bases de données est un jeu d’enfant (plus besoin d’aller chercher le nom du driver et l’URL adaptée). Spring se charge de créer la base de données en mémoire et peut aussi jouer dessus des scripts SQL paramétrés. Idéal pour les tests unitaires ou les démonstrations.

Vous trouverez plus de détails et des exemples de code dans la seconde édition du livre Spring par la pratique, qui couvre la plupart de ces nouveautés (REST, langage d’expression, etc.). Une page de compléments est aussi disponible sur le site du livre.
Un spectre de fonctionnalités encore plus étendu, mais aussi un lifting important (Java 5 et dépréciation de modules), Spring 3.0 représenterait-il le vrai passage à maturité du framework ? Spring n’est plus juste un conteneur léger ou un framework applicatif, il est aussi la base de tout un portfolio de projets ou encore le noyau d’un serveur d’applications (dm Server). On le retrouve aussi comme implémentation de référence de standards OSGi (Spring Dynamic Modules et le Blueprint Service).
Peut-on adopter Spring 3.0 alors ? Oui ! Le framework est très stable, même pour les nouvelles fonctionnalités, comme REST. L’équipe de développement a fait de réels efforts pour que la migration depuis des versions précédentes se fassent sans heurts. Les principaux problèmes risquent de venir des frameworks supportés, Spring 3.0 ayant monté de version pour nombre d’entre eux (Hibernate, Tiles, etc.), sans cependant briser systématiquement la compatibilité avec les versions antérieures. Vérifiez donc bien les versions des frameworks impliqués dans vos applications.
Les prochaines étapes ? L’ensemble des projets du portfolio vont pouvoir profiter des nouveautés de Spring 3.0, cela annonce pas mal de mouvements autour des projets comme Spring Web Flow, Spring Batch, Spring Integration… et dm Server. Spring 3.1 est aussi déjà sur les rails, avec un support Java EE 6 plus complet, courant 2010.

Auteur/Autrice

Laisser un commentaire

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