De ontwikkeling van het Spring Framework is nog lang niet voorbij

Één van de meest veelzijdige en meest gebruikte applicatie frameworks van het hele Java ecosysteem

| VMware Tanzu | 8 min | 19 maart 2021 10:34
Exclusief
Copyright: VMware Tanzu
Wat hebben digitale projecten van grote bedrijven, als Netflix, Rabobank, Air France-KLM, met elkaar gemeen? Ze gebruiken allemaal het Spring Framework omdat het alle soorten applicatieontwikkeling ondersteunt en al meer dan 17 jaar één van de meest veelzijdige en meest gebruikte applicatie frameworks van het hele Java ecosysteem is. Dit is een eeuwigheid in de snelle IT-wereld. Om Spring en wat voor betekenis het heeft binnen de developer community te begrijpen, is het belangrijk om het hele verhaal van Spring te leren kennen.

Hoe is Spring ontstaan

Laten we teruggaan in de tijd, naar oktober 2002, het allereerste begin van het Spring framework. Het begon toen Rod Johnson het boek ‘Expert One-on-One J2EE Design and Development’ publiceerde. Rod hield niet van de complexiteit en slechte onderhoudbaarheid van EJB 2.0 en besloot om een eenvoudiger en beter te onderhouden framework voor J2EE-webapplicaties te ontwikkelen. In zijn boek presenteerde hij de grondbeginselen en principes van dit alternatieve J2EE framework en leverde 30.000 source lines of code (SLOC) om het te begeleiden. Ik herinner me dat ik het boek las en meteen het grote potentieel van dit alternatieve raamwerk inzag. Veel van de fundamentele concepten van het Spring Framework waren al opgenomen, zoals een capabele IoC container (Inversion of Control) en een geavanceerde implementatie van het Dependency Injection patroon. De ideeën van Rod maakten niet alleen indruk op mij, ook mijn collega developer Yann Caroff was geïntrigeerd en overtuigd van de mogelijkheden. In samenwerking met Rod hebben we hem overgehaald om een open source project te maken op basis van de infrastructuurcode.

In februari 2003 zijn we erin geslaagd om de broncode voor het eerst beschikbaar te maken als open source project. Naast de code moesten we nu ook een naam bedenken voor het framework. In eerste instantie werd het framework in het boek ‘Interface21 framework’ genoemd. Al snel bleek dat dit geen geschikte naam was om de community te inspireren. Het was Yann die Spring voorstelde als een ‘natuur gerelateerde allegorie’. Het nieuwe framework vertegenwoordigde immers een nieuwe start na de 'winter' van traditionele J2EE.

De groei en opkomst

In juni 2003 verscheen de eerste release van versie 0.9 onder de Apache 2.0 licentie. De officiële release 1.0 van Spring werd uitgebracht in maart 2004. Ons doel was om complexe enterprise architecturen gemakkelijker te testen en te onderhouden. Daartoe fungeert Spring als een gratis, open source en uiterst flexibele organiserende laag tussen de gebruikte componenten. De componenten hoeven zelf niet specifiek voor Spring geschreven te worden. Spring is losjes gebaseerd op de JavaBeans convention als een componentmodel. Vanaf het begin kon Spring worden gebruikt op alle gangbare applicatieservers of web containers, maar ook in een J2SE omgeving (zonder J2EE containers).

Na de start met Spring 1.0 en de eerste positieve feedback van lezers, de developer community en bedrijven die het gingen gebruiken, waren we natuurlijk gemotiveerd en konden we niet wachten om het framework verder te ontwikkelen. In september 2004 werd versie 1.1 uitgebracht met bugfixes en talrijke nieuwe functies. Versie 1.2, uitgebracht in mei 2005, ondersteunde al enkele Java 5 functies met behoud van achterwaartse compatibiliteit met oudere Java versies. In december 2005 kondigden we versie 2.0 aan, die toen veel nieuwe functies bracht en in oktober 2006 werd uitgebracht. Tegen de tijd dat versie 2.0 werd uitgebracht, was het Spring framework een miljoen keer gedownload en won het een JAX Innovation Award en een Jolt Productivity Award in 2006.

Tot op heden heeft Spring veel ontwikkelingen en nieuwe features ondergaan, waarvan ik hier alleen de belangrijkste wil noemen:
  • 2007 - Spring Framework 2.5 introduceerde een op annotaties gebaseerde configuratie;
  • 2009 - Spring Framework 3.0 introduceerde Java-configuratie klassen en vereiste minimaal Java 5;
  • 2013 - Spring Framework 4.0 introduceerde volledige ondersteuning voor Java 8;
  • 2017 - Spring Framework 5.0 introduceerde ondersteuning voor Kotlin en reactieve architecturen, waarvoor minimaal Java 8 vereist is.

De uitdagingen

Natuurlijk verliep de afgelopen 18 jaar niet alles soepel. Zo hebben we in de loop van de tijd steeds meer te maken gehad met de veranderingen in het landschap van componenten modellen. Op XML gebaseerde component beschrijvingen waren in de vroege jaren 2000 in trek. Maar met de introductie van annotaties, zoals de Java language feature in 2005, kwam daar een ommekeer in. De afgelopen jaren is er meer aandacht geweest voor het direct in kaart brengen van code voor configuratie. Hier moesten we een speciale inspanning leveren, maar uiteindelijk zijn we erin geslaagd de nieuwe benaderingen te ondersteunen zonder het Spring Framework fundamenteel te veranderen.

Een andere uitdaging was de verdere ontwikkeling samen met Java en de JDK, vooral met de nieuwe features en de nieuwe libraries in Java 5 en Java 8. Daarnaast is het database landschap in de loop der jaren steeds heterogener geworden. In 2010 werden bijvoorbeeld NoSQL databases populair en waren de gevestigde database API's in Java uitsluitend gerelateerd aan relationele API's (JDBC, JPA). We waren uiteindelijk in staat om deze veranderingen op te lossen met het Spring Data project en een consistent programmeermodel voor verschillende types data stores. Tot op de dag van vandaag is er geen echt alternatief hiervoor in de Java EE wereld.

Het Spring Boot Project

In oktober 2012 is een nieuwe toevoeging aan het Spring Framework geïntroduceerd op verzoek van een klant genaamd Mike Youngstrom. Hij creëerde een feature request in Spring Jira waarvoor een webapplicatie architectuur zonder “web container” in het Spring framework nodig was. Dit leidde tot de ontwikkeling van het Spring Boot project dat ergens begin 2013 begon en uiteindelijk tot de release van Spring Boot 1.0 in april 2014.

Spring Boot pakt de volgende uitdaging aan. Java- en Spring applicaties bestaan uit een groot aantal technische libraries (van derden) om vraagstukken als beveiliging en persistentie op te lossen. In het verleden was de selectie van libraries en vooral compatibele versies van deze libraries de taak van de ontwikkelteams. Nadat we in eerste instantie naar een BOM-model (Bill of Material) gingen voor afzonderlijke projecten, konden we het probleem fundamenteel oplossen met Spring Boot en zijn ‘starter POM's’.

Development teams krijgen een samengestelde lijst met afhankelijkheden, aan de hand van het technische aspect (web, batch, database) in compatibele versies. Spring Boot updates bevatten vervolgens updates voor libraries van derden. Dit verandert het werk van teams aanzienlijk, vooral op vlak van security omdat veel handmatig werk wordt geëlimineerd. Gezien Spring Boot het creëren van stand-alone, productieklare applicaties op basis van Spring enorm vereenvoudigt, worden tegenwoordig de meeste nieuwe Spring applicaties consequent op Spring Boot gebouwd.

Wie gebruikt Spring en waarom?

Net als het framework zelf, is de geschiedenis van het bedrijf de afgelopen 18 jaar blijven evolueren. Hoewel Spring oorspronkelijk was opgericht om Spring en zijn gerelateerde projecten te ondersteunen en te ontwikkelen, groeiden Spring en ons team van ontwikkelaars de eerste jaren gestaag. Na een overname van Covalent in 2008 en verdere overnames van G2One en Hyperic, konden we onze activiteiten aanzienlijk uitbreiden door een reeks software producten aan te bieden in alle drie de fasen van de levenscyclus van Java applicaties voor bedrijven. Dit leidde al snel tot de overname door VMware in 2009, waar we een aparte divisie binnen het bedrijf zouden worden. In 2013 richtte VMware de joint venture Pivotal Software op en droeg Spring over aan deze nieuwe organisatie. In 2020 werden de krachten weer gebundeld door Pivotal en Spring teruggebracht in het nieuw gecreëerde VMware Tanzu portfolio.

De constante groei en de bedrijfsondersteuning van het Springteam hebben ertoe bijgedragen dat Spring vandaag vooral opvalt door zijn betrouwbaarheid en veelzijdigheid. Daarom gebruiken tegenwoordig een breed scala aan bedrijven Spring in hun technische stacks, waaronder Accenture, Deleo Korea en Zalando. Naast deze bedrijven gebruikt Netflix bijvoorbeeld Spring Boot als basis van zijn SOA, omdat het de schaalbaarheid en volwassenheid van de Java Virtual Machine (JVM) biedt. Ook non-profitorganisaties of overheden draaien softwareprojecten die op Spring Boot zijn gebaseerd. Al met al waarderen bedrijven en hun IT-teams dat Spring betrouwbaar is, goed gepland en buitengewoon goed wordt uitgevoerd.

Wat volgt nu?

Wat ik zo leuk vind aan het feit dat ik al zoveel jaren in het Springteam zit, is dat het vanaf het begin nooit saai is geweest. Zelfs nu hebben we veel nieuwe initiatieven en verbeteringen om Spring nog beter te maken. Sinds oktober 2020 is Spring Framework 5.3 algemeen beschikbaar als een ‘Long Term Support’ onderdeel (en als basis voor Spring Boot 2.4 en verdere 2.x-releases). Dit is een zeldzame en strategisch zeer relevante stap, met het oog op de langverwachte Java 17 LTS-release in september 2021. Onze volgende stap, de ondersteuning van Java 16 in Spring Framework 5.3.5, die ook op 16 maart 2021 staat gepland past hierbij. In de Java wereld wordt Java Development Kit (JDK) 16 beschouwd als de laatste mijlpaal vóór JDK 17 LTS. We verwachten dat op middellange termijn veel Spring Framework 5.3.x gebruikers JDK 17 strategisch zullen adopteren.

Daarnaast bereiden we ook een nieuwe generatie Spring Framework 6 en Spring Boot 3 voor, waarvan de ontwikkelaars gemeenschap in 2021 al preview releases te zien krijgen. De belangrijkste thema's zijn onder meer een Java baseline upgrade met een focus op JDK 1. Dit is een migratie van de traditionele Java EE 7/8 API's tot de Jakarta EE 9+ API's. Bovendien biedt het diepe ondersteuning voor native executables door nauwe afstemming met GraalVM native conventies. We zijn ook van plan verouderde framework features agressief te snoeien en Spring Framework 6 te ontwikkelen voor nieuwe applicatie omgevingen in 2022 en verder. Uiteraard met LTS maintenance van Spring Framework 5.3.x, zodat de volledige Spring feature set voor bestaande applicaties behouden blijft. Kortom, de ontwikkeling van het Spring Framework is nog lang niet voorbij ondanks zijn lange historie.
Auteur: Juergen Hoeller, Senior Staff Engineer bij VMware Tanzu

Hoe vind je dit artikel?


Geef jij de eerste rating?

Content op basis van interesse of taal liever niet meer zien? Ga dan naar settings om eenvoudig je voorkeuren in te stellen.

Over VMware Tanzu

Om vandaag op de markt te winnen, moet u investeren in zowel uw mensen als uw technologie. Maak uw teams vrij om complexere uitdagingen aan te gaan. Gebruik flexibele, cloud-native ontwikkelingsmethoden en -tools. Upgrade uw oude systemen naar nieuwe native runtimes in de cloud. Dit soort transformatie op bedrijfsschaal is niet eenvoudig. Maar met VMware Tanzu kunt u het tempo van verandering versnellen. We helpen de manier waarop uw bedrijf werkt te heroverwegen en er een onderneming van de volgende generatie van te maken. We doen dit met een portfolio van oplossingen om uw applicatie en infrastructuur te moderniseren.
Meer over VMware Tanzu

Disclaimer

Dit item is verkregen via óf is gebaseerd op een externe bron en valt daarmee buiten de verantwoordelijkheid van de redactie. Als het item een (gedeeltelijke) vertaling is van het origineel, dan is bij eventuele verschillen in betekenis het originele item leidend.
20200707165104.png
Meer meisjes en vrouwen in bèta, techniek en IT
20191030101402.jpg
De grootste Nederlandse site over Android
20200608191257.png
Dé leukste website op het gebied van zorg in Nederland
20191030103431.png
Conference by app developers, for app developers!
20191030100036.png
Voor professionals met passie voor digitale revolutie!
20191029200614.jpg
Drive value with data
© 2019-2021, alle rechten voorbehouden.
TechVisor
Het vizier op de tech industrie.