Le 12 décembre dernier, Pivotal a publié Spring 4.0, la première version majeure depuis 2009. La nouvelle version supporte Java 8 avec les expressions des callbacks qui utilisent les lambdas, la JSR 310 API Date et Time, et la découverte du nom des paramètres.
Le support de Java EE 7 comprend JMS 2.0, JTA 1.2, JPA 2.1, Bean Validation 1.1, et les services de concurrence JSR-236.
Spring 4 dispose également d'un support amélioré de REST avec un nouveau AsyncRestTemplate et HTML5/WebSocket intégrés avec un système de fallback pour les anciens navigateurs.
Pour en savoir plus sur la liste complète des nouvelles fonctionnalités et capacités de Spring 4, vous pouvez voir Adrian Coyler l'Architecte en chef d'Application Fabric chez Pivotal annoncer la version 4.0 GA du Framework Spring.
Spring 4 revendique d'apporter à la fois aux développeurs Java et Groovy une manière plus simple de fournir et intégrer de nouvelles architectures d'application, des systèmes big data, devops et un déploiement facilité pour le cloud. En plus il inclut un nouveau projet nommé Spring Boot. Spring Boot est une nouvelle technologie Spring qui vise à offrir la productivité de Ruby on Rails au développement Java.
Spring dispose de plusieurs projets dans son portefeuille. La plateforme Spring IO a été récemment créée pour héberger les principales APIs de Spring core au sein d'une plateforme cohérente et gérant les versions. Plus généralement, il s'agit d'un nouveau site web avec la documentation de référence, des tutoriels, un forum et un blog pour l'équipe. Le communiqué de presse sur Spring 4 contient une citation intéressante sur comment Spring IO et Spring Boot aident les développeurs :
L'objectif principal de Spring IO est de positionner Java comme leader en productivité de développement grâce aux composants comme Spring Boot et Groovy. "La barre pour le bonheur du développeur et l'intolérance pour le code non maintenable a été placée très haut chez Pivotal Labs, qui a toujours beaucoup donné pour le développement de Ruby on Rails," dit Edward Hieatt, responsable des opérations à Pivotal Labs. "Nos développeurs Ruby on Rails qui utilisent Spring Framework 4.0 avec Spring Boot sont impressionnés par sa productivité et sa capacité à répondre à un large éventail de scénarios avec un model de programmation unique."
Je voulais savoir si Spring 4 était un remplaçant de Spring 3, j'ai mené ainsi récemment une expérience pour le découvrir. Dans un relooking d'une webapp avec Spring 4 et Spring Boot, j'ai pris une application développée avec Spring 3.2.5, Spring Security 3.1.4 et Jersey 1.18 et je l'ai mise à jour en Spring 4, Jersey 2 et Java 8. De plus, j'ai intégré Spring Boot et converti en JavaConfig au lieu d'XML. L'expérience de développement était agréable. J'ai trouvé, encore une fois de plus, que Spring a une excellente compatibilité ascendante. Le seul problème que j'ai rencontré était avec Jersey dans un environnement container-less.
Suite à l'annonce de la sortie de la version, j'ai eu la chance de parler avec Adrian Colyer.
Lorsque vous dites que Spring 4 a un support approfondi pour Java 8, que voulez-vous dire? Pourquoi Java 8 serait plus simple avec Spring?
Java 8 est parfaitement aligné avec le modèle de programmation de Spring. Nous croyons que la combinaison est très intéressante avec Java 8, qui offre des fonctionnalités de langage élégantes. et des améliorations des librairies pour une utilisation immédiate avec les APIs typiques de Spring. En fait le Framework Spring 4.0 est le premier véritable framework d'application Java 8 de l'industrie. Nous avons fait l'effort supplémentaire de fournir tout ce qui est nécessaire aujourd'hui pour commencer le développement des applications Spring en Java 8, même avant le démarrage en production de Java 8 au mois de mars.
Vous dites que Spring Boot offre une productivité sans précédent pour Java. Qu'en est-il pour Grails, Spring Roo, Play et JRebel? Ils vous permettent de développer toute la journée sans redémarrer votre application. Comment Spring Boot peut-il être meilleur que ces technologies?
Boot offre une productivité plus à Java "entreprise", et couvre un ensemble beaucoup plus large d'applications web, en partant du batch à des applications purement orientées données (voir Spring XD). Grails d'un autre côté est vraiment dédié au développement rapide d'applications web dans un environnement full stack. Spring adresse beaucoup plus que les applications web, et Boot représente une approche convention plutôt que configuration pour Spring et l'écosystème de ses projets. Bon, d'accord, nous n'offrons pas encore le support Boot pour chacun des derniers projets Spring, mais le rythme d'adoption est stupéfiant et ce ne sera pas long à atteindre les 100% de couverture.
Pourquoi Pivotal possède autant de frameworks basés sur la JVM (Grails, Spring Roo et maintenant Spring Boot) pour créer des nouvelles applications?
En fait, tous les frameworks basés sur la JVM (Boot, Grails et Roo) sont basés sur Spring MVC, mais s'adressent à des publics différents. Boot propose un style très assumé sur la convention par rapport à la configuration dans l'écosystème Spring, qui est beaucoup plus large que les seules applications web. Grails d'un autre côté est un environnement d'exécution spécifique ciblé pour le développement rapide d'application Web utilisant le langage Groovy et les DSLs. Enfin, Roo est concentré uniquement sur la génération de code. Tous ces frameworks amènent des développeurs à la plateforme Spring, ce qui est notre principal objectif.
Pensez-vous qu'autant de choix puisse provoquer l'anxiété chez les développeurs et les décideurs?
C'est difficile et subjectif de répondre à cette question. Pour les décideurs, plus de choix apporte probablement une meilleure gestion des risques, un recrutement et une intégration des développeurs plus facile. Pour les développeurs, c'est probablement plus anxiogène, mais toute proportion gardée, au moment où ils découvrent l'existence d'un style qui s'accommode au mieux à leur expérience et à leur niveau de compétence, ils sont alors passionnés.
Spring-Loaded semble être une version gratuite de JRebel. Selon son site web il s'agit du système de rechargement utilisé par Grails 2. Ce projet est-il lié à Spring Boot et sa productivité sans précédent?
Non. Boot est activé dans le Spring Framework 4.0 par l'infrastructure de l'annotation @Conditional. Votre perception du rechargement est plus précise au contraire - JRebel est bien plus complet, il fonctionne avec plusieurs IDE, etc.
Qu'est ce que Spring 4 apporte aux WebSockets qui serait manquant dans Java EE (ou les autres implémentations)?
C'est sur les options de fallback (SockJS) et les protocoles de messages de plus haut-niveau (STOMP). Nous considérons la technologie WebSocket principalement comme une couche de transport ; les parties réellement intéressantes émergent au dessus de ce cette couche. Le nouveau module de messaging de Spring indique où nous situons le terrain commun pour les développeurs d'applications. Cela va bien au delà de la JSR-356 de Java EE 7 ; notez que nous supportons la JSR-356 comme fondation mais nous nous concentrons plutôt sur les modèles d'interaction de plus haut-niveau dans notre propre modèle de programmation WebSocket. Etant donné que les WebSockets ne sont plus supportées dans les versions Internet Explorer < 10, aujourd'hui, elles ne sont pratiquement plus utilisables seules sans les options de fallback.
Outre le support des WebSockets et les attributs HTML5 dans les Tags JSP de Spring, quelles autres fonctionnalités sont apportées par Spring 4 pour HTML5?
Notre objectif est de permettre la mise en œuvre d'architectures orientée HTML5. De notre point de vue, il s'agit plus des styles de communication et des modalités de gestion de l'état que des fonctionnalités spécifiques d'HTML5. Cela dit, Spring est aussi un bon candidat pour l'intégration avec les frameworks populaires en Javascript du côté client. Et nous ne faisons pas juste participer en ce moment, nous sommes également engagés pour l'évolution à venir lors de la prochaine génération d'architecture web dans la ligne de Spring 4.x.
De mon expérience (en tant que consultant et conférencier), la plupart des développeurs utilisent toujours Spring avec XML. Pensez-vous que plus de développeurs vont se tourner vers JavaConfig avec Spring4?
C'est leur choix, ils peuvent l'adopter au moment et à l'endroit qui leur semble opportun. Ils peuvent utiliser des annotations, JavaConfig ou XML - ce qui représente plus d'options que Java EE en propose. Par ailleurs, nous apprécions JavaConfig, et nous espérons que plus d'organisations seront en mesure de l'adopter.
Si vous utilisez Spring avec Maven, il y a une nouvelle nomenclature pour le POM disponible pour vous mettre à jour. Pour télécharger ou visualiser les informations Gradle, rendez vous sur le site web du Framework Spring website.