Spring Framework, quelle histoire et quel avenir ?

Par :
Jürgen Höller

ven, 02/04/2021 - 12:24

Quel est le point commun entre les entreprises comme Netflix, Allianz, Commerzbank ou Daimler et des projets d’importance pour notre société comme les applications d’alerte au coronavirus ? Tous utilisent le framework Spring. Comme il supporte toutes sortes de développement applicatif, Spring a toujours été l’un des frameworks les plus versatiles et les plus appréciés de tout l’écosystème Java depuis plus de 17 ans, une éternité dans le monde ultrarapide de l’IT. Pour bien comprendre Spring et son importance pour les développeurs, il faut connaître son histoire, comment tout a commencé et comment les utilisateurs en ont fait ce qu’il est devenu aujourd’hui. 

Comment Spring est né

Repartons en octobre 2002 au tout début de Spring Framework, quand Rod Johnson publia son livre : « Expert One-on-One J2EE Design and Development ». Rod n’aimait pas la complexité et la difficulté à maintenir de EJB 2.0 et décida de développer un framework plus simple pour les applications web en J2EE. Dans son livre, il présentait les bases et les principes de ce framework J2EE alternatif, et fournissait 30 000 lignes de code source pour l’accompagner. Je me souviens avoir lu le livre et reconnu immédiatement l’immense potentiel de ce framework alternatif. Nombre des concepts fondamentaux de Spring Framework y étaient déjà inclus comme des conteneurs IoC (Inversion of Control) et une implémentation sophistiquée des schémas d’injonctions de dépendances. Les idées de Rod n’ont pas impressionné que moi : mon collègue développeur Yann Caroff était tout aussi intrigué et convaincu par les possibilités de ce projet. En travaillant avec lui, nous l’avons persuadé de créer un projet open source basé sur son code d’infrastructure. 

En février 2003, nous avons rendu disponible le code source pour la première fois dans un projet open source. En plus du code, nous avions également un nom pour le framework jusqu’ici désigné dans le livre comme « Interface21 framework ». Ce qui est peu inspirant pour la communauté. Ce fut Yann qui suggéra Spring (printemps en anglais) en une allégorie liée à la nature comme ce nouveau framework était un nouveau départ après l’hiver du J2EE traditionnel. 

La montée en popularité

En juin 2003, la première version est apparue sous le nom version 0.9 sous la licence Apache 2.0. La version officielle 1.0 de Spring sortit en mars 2004. Notre but à l’époque était de rendre les architectures d’entreprise complexes plus faciles à tester et à maintenir. Pour cela, Spring agissait comme une couche d’organisation extrêmement flexible, open source et gratuite entre les composants utilisés, même si ceux-ci n’avaient pas à être écrits spécialement pour Spring. Celui-ci se base sur les conventions JavaBeans pour ses modèles de composants. Depuis le début, Spring pouvait être utilisé sur tous les serveurs applicatifs ou conteneurs web classiques aussi bien que dans un environnement J2SE (c’est-à-dire sans conteneurs J2EE).

Après les premiers retours positifs sur Spring 1.0, la communauté des développeurs et les entreprises ont commencé à l’utiliser. Ce qui nous a motivés encore plus à continuer son développement. En septembre 2004, la version 1.1 est sortie avec des bugs corrigés et de nouvelles fonctions. La version 1.2, sortie en mai 2005, supportait déjà quelques fonctions de Java 5 tout en maintenant une rétrocompatibilité avec les versions de Java plus anciennes. En décembre 2005 nous avons annoncé la version 2.0 qui allait apporter beaucoup d’innovation et est  sortie en octobre 2006. À cette époque, le framework avait été téléchargé un million de fois et gagné deux récompenses : un Jax Innovation Award et un Jolt en 2006. 

À ce jour, Spring a connu plusieurs développements et plusieurs ajouts, dont je voudrais lister les plus importants ci-dessous : 

  • 2007 — Spring Framework 2.5 introduit les configurations avec annotation. 
  • 2009 — Spring Framework 3.0 introduit les classes de configuration Java et requiert a minima Java 5
  • 2013 — Spring Framework 4.0 supporte complètement Java 8
  • 2017 — Spring Framework 5.0 supporte Kotlin et les architectures réactives, et requiert a minima Java 8.

Les défis à relever

Bien sûr, durant les 18 ans de développement continu de Spring, tout ne se déroula pas sans accroc. Par exemple, nous avons dû gérer les changements dans le paysage des modèles de composants. Les descriptions de composants en XML étaient à la mode au début des années 2000. Mais avec l’introduction des annotations dans le langage Java en 2005, elles sont moins à la mode. Ces dernières années, il y a eu plus d'efforts pour cartographier directement le code en fonction de la configuration. Nous avons donc dû nous y adapter en supportant ces nouvelles approches sans changer fondamentalement Spring Framework.

Un autre défi fut de se développer en même temps que Java et le JDK, notamment avec les nouveaux modèles de langages et les nouvelles librairies dans Java 5 et Java 8. De plus, le paysage des bases de données (BDD) est devenu beaucoup plus hétérogène ces dernières années. Par exemple, en 2010, les bases de données NoSQL sont devenues populaires et les API de bases de données dans Java ne concernaient que les APIs de BDD relationnelles (JDBC, JPA). Nous avons finalement réussi à résoudre ces changements avec les projets Spring Data et un modèle de programmation cohérent pour les BDD de toute sorte. À ce jour, il n’y a pas réellement d’équivalent dans le monde JavaEE.

Le projet Spring Boot

En octobre 2012, nous avons introduit à la demande de notre client Mike Youngstrom une extension au Spring Framework. Il a créé une demande de fonction dans Spring jira qui nécessitait une architecture de web application sans conteneur dans le Spring Framework. Cela conduisit au développement du projet Spring Boot au début de 2013 et finalement à la sortie de Spring Boot 1.0 en avril 2014. Voici les problèmes qu’il traite. 

Les applications Spring et Java comprennent un grand nombre de librairies (de tiers) techniques pour résoudre des problèmes comme la sécurité. Auparavant, la sélection des librairies et, plus particulièrement, le choix des versions compatibles de celles-ci était à la charge des équipes de développement. Après avoir d’abord fourni un modèle BOM (Bill of Material) pour des projets uniques, nous avons pu résoudre à la base le problème avec Spring Boot et ses POMs de démarrage. Les équipes de développement accèdent à une liste mise à jour de dépendances en se basant sur les aspects techniques (web, batch, base de données) dans les versions compatibles et les mises à jour Spring Bot et puis poussent les mises à jour des librairies tierces. Cela révolutionne le travail des équipes, en particulier en ce qui concerne les failles de sécurité et une bonne partie du travail manuel est éliminée. Comme Spring Boot simplifie grandement la création d’applications indépendantes et prêtes à entrer en production basées sur Spring, de nos jours la majorité des nouvelles applications Spring sont bâties sur Spring Boot. 

Qui utilise Spring et pourquoi ? 

Tout comme le framework lui-même, l’histoire de l’entreprise a continué à évoluer ces 18 dernières années. D’abord créée pour supporter et développer Spring et ses projets associés, la société Spring et notre équipe de développeurs a régulièrement cru durant les premières années. Après l’acquisition de Covalent en 2008 puis celles de G2One et d’Hyperic, nous pouvions étendre notre offre et proposer un ensemble de logiciels aux trois étapes du cycle applicatif Java pour les entreprises. Ce qui mena rapidement à notre rachat par VMWare en 2009, où nous sommes une division séparée au sein de la société. En 2013, VMware crée la joint-venture Pivotal Software et y transfère Spring avant de la réintégrer en 2020 en rapatriant Pivotal et Spring dans sa nouvelle offre VMWare Tanzu.

La croissance continue et le support professionnel des équipes de Spring ont fait que la solution est largement au-dessus des autres en termes de fiabilité et de versatilité. C’est pourquoi aujourd’hui un grand nombre d’entreprises utilisent Spring dans leurs développements techniques comme Accenture, Deleo Korea ou Zalando. Outre ces sociétés, Netflix par exemple utilise Spring Boot comme base pour son SOA (service-oriented architecture), car il offre la maturité et la mise à l’échelle nécessaire du JVM. Des ONG et des gouvernements ont également des projets logiciels basés sur Spring Boot. En tout, les entreprises et leurs équipes IT apprécient la fiabilité de Spring, la planification de son évolution et son extraordinaire mise en œuvre. 

Et maintenant ? 

Après tant d’années au sein de Spring, depuis le début, ce que j’adore c’est que l’on ne s’ennuie jamais. Même maintenant, nous avons tellement de nouvelles initiatives pour toujours plus améliorer Spring. Depuis octobre 2020, Spring Framework 5.3 est disponible pour tous sur la branche « Long Terme Support », et sert de base pour Spring Boot 2.4 et les versions 2.x à venir. Ce qui est une étape significative rare, surtout en tenant compte de la sortie tant attendue de Java 17 LTS en septembre 2021. Notre prochaine étape, le support de Java 16 dans Spring Framework 5.3.5, prévue pour le 16 mars 2021, s’inscrit aussi dans cette évolution. Dans le monde Java, JDK 16 est considéré comme la dernière pierre avant JDK 17 LTS : nous nous attendons à ce qu’à moyen terme, nombre d’utilisateurs de Spring Framework 5.3.x adoptent stratégiquement JDK 17. 

En plus de cela, nous préparons également les nouvelles générations : Spring Framework 6 et Spring Boot 3, dont des versions d’essai seront disponibles pour les développeurs en 2021. Les principales évolutions seront : une mise à jour de la base Java avec un focus sur JDK17, une migration des API traditionnels de JavaEE 7/9 vers les API Jakarta EE 9+, et un support approfondi des exécutables natifs avec un alignement sur les conventions natives de GraalVM. Nous voulons également éliminer les fonctionnalités dépassées, adapter Spring Framework 6 aux nouveaux environnements de développement de 2022 et plus loin, côte à côte avec la maintenance LTS de Spring Framework 5.3.x qui gardera l’intégralité des fonctionnalités Spring pour les applications existantes. 

Le Spring Framework a déjà une longue histoire ET elle est loin d’être terminée.

 

A propos de l'auteur

Jürgen Höller
Senior Staff Engineer chez VMware et cofondateur de Spring