In 2002 stelde de Australische ontwikkelaar Rod Johnson de code van de Java-Framework Interface21 voor in zijn publicatie Expert One-on-One J2EE Design and Development. Hij had de code zelf geschreven voor gebruik in zijn eigen projecten. Op basis van deze code ontwikkelde hij later samen met andere programmeurs het Spring Framework. In juni 2003 werd het framework voor het eerst in de gratis licentie Apache 2.0 op SourceForge gepubliceerd en geldt tot op de dag van vandaag als een van de beste oplossingen voor het ontwikkelen van bedrijfstoepassingen in Java. Het opensource-framework schrapt sindsdien de zwakke punten en beperkingen van de standaard ontwikkelaarsomgeving J2EE (ook bekend als ‘Java platform’) en van het componentmodel Enterprise JavaBeans (EJB) door hun complexiteit aanzienlijk te verminderen.
Spring vergemakkelijkt de ontwikkeling van Java-toepassingen zowel in offline- als online-applicaties. De grootste voordelen van het framework zijn de slanke broncode en de eenvoud waarmee aanpassingen gedaan kunnen worden. Om programmeurs dit comfort te kunnen bieden, is het framework gebaseerd op de volgende principes – die Rod Johnson al in zijn boek heeft toegelicht:
Door het volgen van de hierboven genoemde principes stelt het Spring Framework voor Java je in staat om bij de ontwikkeling van Enterprise-Java-toepassingen terug te grijpen op de zogeheten plain old Java objects (letterlijk: doodnormale Javaobjecten), oftewel POJO’s. In tegenstellingen tot Enterprise Javabeans (EJB’s) zijn deze POJO’s in bijna iedere omgeving inzetbaar en hebben daarom ook geen specifieke applicatieserver nodig om de EJB-container te ondersteunen. Standaardoplossingen zoals Tomcat zijn meer dan voldoende. Om Spring te kunnen gebruiken heb je verder ook de Java SE Development Kit (SDK) nodig.
Spring is de perfecte keuze voor de meest uiteenlopende toepassingen in Java. Dit is in de eerste plaats te danken aan de modulaire opbouw van het framework. Er staan je zo’n 20 modules ter beschikking bij de ontwikkeling met Spring. Je kunt zelf kiezen welke componenten je voor je toepassing wilt gebruiken en welke niet. In de standaardarchitectuur zijn de diverse modules ingedeeld in de volgende zes hoofdcategorieën:
Vanaf het begin was Java, inclusief bijbehorende technologieën, gepland voor gebruik in de webontwikkeling. Na opstartproblemen door slechte ondersteuning door eerdere browsers, de toen nog lage bandbreedte van particuliere internetaansluitingen en onvoldoende rekencapaciteiten van toenmalige pc’s, brak de programmeertaal aan het einde van de jaren negentig echt door. In het begin van het internettijdperk waren Java-applets nog populair – dat zijn Java-toepassingen die met bijbehorende runtime-omgevingen in de browser worden uitgevoerd. Ze kunnen op de gebruiker reageren zonder gegevens naar de server te moeten sturen. De applets waren echter niet geschikt voor dagelijks gebruik door de hoge vereisten. Met de opkomst van mobiele apparaten, die browser-applets niet ondersteunen, zijn de interactieve webelementen volledig verdwenen.
Hoewel Java zich aan de ene kant al snel als flop ontpopte, is de programmeertaal voor servers een vast begrip geworden. Java wordt op verschillende manieren gebruikt: van servlets, de applet-tegenhanger die op servers wordt gebruikt, tot aan complexe bedrijfsoplossingen zoals middleware, bankensoftware of grote content-managementsystemen. De diverse Javatechnologieën zijn tegenwoordig meer in trek dan ooit tevoren, voor zover het budget het toestaat. Vanwege de voordelen op het gebied van kosten en de benodigde tijd wordt namelijk bij driekwart van alle websites de scripttaal PHP gebruikt. Voor webontwikkelaars die toch met Java willen werken, biedt Spring echter zowel de benodigde structuren als een aanzienlijke vereenvoudiging van het werkproces. De voordelen van Java-webtoepassingen zijn onder andere de platformonafhankelijkheid, de duidelijke structuur en de mogelijkheid om met bedrijfssoftware en -processen te integreren.
Spring wordt meestal ook als lightweight-framework (letterlijk lichtgewicht) voor Java-toepassingen omschreven, omdat je bijna niets aan de broncode hoeft te veranderen om van de vele voordelen te kunnen profiteren. Onder andere gaat het hierbij om vereenvoudigingen bij het uitvoeren van transactiemanagement, interfaces en databanktoegang. Ook de mogelijkheid om gemakkelijk unit- en integratietests uit te voeren is beslist een reden voor de populariteit van het Spring-framework. Het belangrijkste punt is echter zonder twijfel de afstand van platform-specifieke en niet-gestandaardiseerde componenten. Dit maakt Spring in hoge mate draagbaar en onafhankelijk van applicatieservers. Daarom kan Spring zonder problemen als meta-netwerk worden ingezet waarin andere externe componenten of zelfs frameworks kunnen worden geïntegreerd. Een typisch voorbeeld is de ontwikkeling van een Backend op basis van Spring, dat vervolgens met een Frontend wordt verbonden dat eerder is aangemaakt met een UI-framework zoals Twitter Bootstrap.
Vooral bij het realiseren van complexe bedrijfstoepassingen laat Spring zich van zijn beste kant zien. Voor bedrijven is het framework net als Java daarom al jaren een uitstekende keuze om benodigde technologieën uit te voeren. In tegenstelling tot een puur webframework – bijvoorbeeld het project Struts van concurrent Apache – is Spring niet beperkt tot webtoepassingen, maar kunnen ook eigen desktopoplossingen worden ontwikkeld. Voor eenvoudige toepassingen – online of offline – zijn Spring en Java echter minder geschikt, ook al is het niet onmogelijk.
Als je wilt beginnen met de ontwikkeling van je volgende grote project en nog op zoek bent naar een geschikt framework, moet je het gebruik van het Spring-framework tenminste overwegen. Vooral als Java sowieso al een rol speelt in je plannen, kun je het jezelf een stuk makkelijker maken door gebruik te maken van de flexibele moduleverzameling. Zo krijg je een sterke basisstructuur waar je bijna niets aan hoeft te veranderen. Daarmee kun je al je aandacht richten op de ontwikkeling van de eigenlijke bedrijfslogica. In het officiële Githubarchief kun je te allen tijde het framework downloaden en uitproberen. Hieronder ten slotte nogmaals de voordelen van de ontwikkelaarsomgeving van Java op een rijtje: