Michael Isvy (SpringSource) : "Le framework Spring s'intègre à toutes les situations, du client Web au client lourd"

A l'heure où SpringSource ouvre un bureau en France, le consultant sénior pour l'éditeur a détaillé la logique de l'infrastructure de développement Open Source et ses principaux points forts.

Pouvez-vous nous résumer la logique de Spring ?

Spring peut-être vu comme une très riche boîte àoutils pour les développeurs Java. On y trouve des fonctionnalités pour organiser son code proprement (l'injection de dépendances, des outils de programmation par aspects, etc). Mais avant tout, c'est un projet universel, qui s'adapte à tous les environnements, y compris des versions anciennes de JDK et de serveurs d'applications.

Je suis développeur PHP. En deux mots, pourriez-vous expliquer le développement orienté aspects ?
Bien sûr. Tout d'abord il s'agit de restituer Java par rapport àPHP. Java peut être vu comme le grand frère de PHP, au sens ou Java est un langage plus complexe à appréhender, mais plus adapter pour les gros projets. La programmation par aspects prend toute sa logique dans une application Java. Elle permet d'ajouter "à la volée" des fonctionnalités transverses comme des logs, la gestion des exceptions, des transactions, en quelques lignes de code (le code est par la suite "injecté" dans l'ensemble des classes "cibles" de l'application). 

Spring est-il intégré à Eclipse ?
Tout à fait, nous proposons le plugin Open Source SpringIDE. C'est un plugin très riche, qui propose notamment un outil graphique interactif pour visualiser les beans Spring. Il permet aussi de faire une complétion de code intelligente au niveau de la
configuration Spring (soit par fichiers XML, soit par annotations). C'est un très beau plugin.

Spring et Struts, c'est la même idée ?
Pas tout à fait. Struts est un framework Web. Son rôle est donc de faciliter l'interaction avec les pages Web (validation des formulaires,rapatriation des données saisies par l'utilisateur, etc). Spring est un framework transverse. Il propose une "glue" pour les couches Web, mais aussi pour toutes les autres couches (Service, DAO...). En revanche, Spring propose une extension permettant de s'intégrer facilement à Struts.

1
"Spring est pleinement intégré à l'outil Maven", Michael Isvy (SpringSource) © Benchmark Group

Quels sont les possibilités de collaboration de Spring avec des outils de build, voire de gestion de projets ?
Spring est pleinement intégré à l'outil Maven. Il existe un repository permettant de récupérer toutes les librairies et dépendances Spring.Pour le reste, Spring s'intègre dans le standard J2EE (je ne connais pas d'outils spécifiques à Spring sur cet aspect).  

Avec quel serveur d'applications Spring est-il compatible ? Apache/Tomcat, WebSphere, Weblogic... ?

C'est justement l'une des grandes forces de Spring.Spring est compatible avec tous les serveurs d'applications certifiés J2EE. Et cela va même plus loin. Par exemple, Weblogic utilise Spring en interne pour son moteur EJB 3.0. Nous supportons également des versions anciennes de serveurs d'applications. Je tiens à ajouter que nous participons au développement de Tomcat.

Peut-on facilement faire travailler Spring avec des outils de génération de code ?
Tout dépend des outils eux-mêmes. Le plug-in SpringIDE propose des assistants graphiques permettant de créer des squelettes de beans Spring. 

Avec Spring, peut-on exporter facilement des services métier, sous forme de Web
Services ?

Bien sûr ! Il est très facile de transformer un service local en Web Service (ou en service distant via RMI). Cette opération ne nécessite aucune opération sur les classes Java, il s'agit juste d'une configuration.

Dans quel cas les utilisateurs de Java ont intérêt à intégrer Spring?
J'aurais tendance à dire dans tous les cas ! Spring s'intègre àtoutes les situations à ma connaissance (client Web, client lourd etc). Les utilisations "majoritaires" de Spring restent l'injection de dépendances, la programmation par aspects et les transactions. 

Finalement, quels sont les avantages de Spring ?
Nous avons déjà parlé des fonctionnalités proposées par Spring.Aussi je vais parler du projet en lui-même. Spring est un framework Open-Source,qui n'a pas les inconvénients "courants" de l'Open Source. Par exemple, la documentation est très détaillée. 99,5% des développements sont faits en interne par SpringSource, ce qui nous permet de nous porter garants de la qualité de notre produit phare.

2
"Nous préparons actuellement un framework Ajax", Michael Isvy (SpringSource) © Benchmark Group

Qu'en est-il d'Ajax dans Spring ?
A l'heure actuelle, SpringSource ne propose pas de framework Ajax. En revanche, Spring s'intègre très bien avec les frameworks Ajax Open Source de la sphère Java (GWT, IceFaces...). Par ailleurs, nous préparons actuellement un framework Ajax (Spring Faces). Il devrait sortir dans le courant de l'année.

Quels avantages a Spring par rapport à la norme EJB3 ?
Tout d'abord je voudrais restituer la question dans son contexte.Spring est apparu dans ses toutes premières versions comme une réaction épidermique aux EJB 1 et 2. Pour sa version 3, la spécification EJB a été complètement refondue sur une approche "conteneur léger". On sent très fortement l'influence des projets Hibernate et Spring. 

Aujourd'hui, Spring s'intègre aux EJB 3 comme aux autres technologies. Il est vrai que certains points comme la gestion des transactions peuvent paraître redondants entre Spring et les EJB 3. Mais il reste tout un ensemble de fonctionnalités Spring qui ne sont pas couvertes par les EJB (injection de dépendances à tous les niveaux, aide sur les tests unitaires, etc.).

Est-ce que Spring peut être utilisé dans des contextes industriels poussés en termes de charge et de performance? Si oui, pouvez-vous citer des exemples ?
Tout à fait. Spring est utilisé sur des projets très contraignants en termes de performances. De nombreuses références existent dans le domaine du transport aérien, dans le monde bancaire, etc. Parmi nos success stories, Je peux citer HSBC qui a intégré Spring dans son framework Java de référence. En revanche, il est important de savoir configurer Spring correctement pour obtenir de bonnes performances. Certaines fonctionnalités peuvent être très coûteuses. 

Que pensez-vous de l'intégration qui a été faite de Spring (Core + MVC) dans Grails et que pensez-vous de cette solution ?
Je n'ai pas encore eu l'occasion de me pencher sur cet aspect. 

3
"Aucun des projets gratuits aujourd'hui ne deviendra payant par la suite", Michael Isvy (SpringSource) © Benchmark Group

Spring va créer une filiale en France, pouvez-vous nous en parler?
Bien sûr. Nous sommes très heureux de participer à la création de SpringSource France. Nous espérons pouvoir apporter une présence locale ànotre communauté de développeurs. Il faut dire que Spring était déjà très présent dans la communauté francophone.Il existait de très nombreux blogs en français sur le sujet. Nous sommes là pour apporter des services en plus comme le support de nos produits, les formations "à la source", etc.

A ce sujet j'animerai une formation Core-Spring du 8 au 11 avril à Paris (il est possible de s'inscrire à travers le site de SpringSource).

Avec les certifications Spring ou les formations payantes bientôt proposées par SpringSource, Spring donne l'impression de se concentrer désormais sur une phase de développement commercial. Est-ce que ça signifie s'éloigner à terme du monde Open Source ?
Il est vrai que nous retrouvons cette crainte très régulièrement dans notre communauté, mais je ne pense pas qu'elle soit fondée. Il a étéannoncé clairement qu'aucun des projets gratuits aujourd'hui ne deviendrait payant par la suite. En ce moment, le nombre de nos projets Open Source a plutôt tendance à croître de façon exponentielle !

Consultant senior et formateur au sein de SpringSource France, Michael Isvy travaille depuis 8 ans sur les technologies Java. Après avoir collaboré à plusieurs gros projets Java pendant 4 ans, il s'est spécialisé dans les missions courtes d'expertise Java : formation, audit, conseil. 

Au-delà des frameworks du portfolio Spring, Michael Isvy a été amené à travailler sur toutes les briques techniques d'un projet Java : configuration des serveurs d'applications, MappingO/R (JPA...), frameworks de présentation (Spring MVC, Struts, JSF,IceFaces...), programmation par aspects, etc.