- Spring (Programmiergerüst)
-
Spring (Framework) Maintainer: SpringSource Aktuelle Version: 2.5.6
(31. Oktober 2008)Betriebssystem: plattformunabhängig Programmiersprache: Java Kategorie: Framework Lizenz: Apache-Lizenz 2.0 springframework.org Das Spring Framework ist ein quelloffenes Framework für die Java-Plattform. Ziel des Spring-Frameworks (kurz Spring) ist es, die Entwicklung mit Java/Java EE zu vereinfachen und gute Programmierpraktiken zu fördern. Spring bietet mit einem breiten Spektrum an Funktionalität eine ganzheitliche Lösung zur Entwicklung von Anwendungen und Geschäftslogiken. Dabei steht die Entkopplung einzelner Programmiergerüstkomponenten im Vordergrund und bietet somit das Zusammenspiel unterschiedlichster Plattformen und Tools: von J2EE-Servern über Persistenztools bis hin zur Web-Integration.
Inhaltsverzeichnis
Eigenschaften
Das Framework basiert auf den in Rod Johnsons Buch "Expert One-On-One J2EE Design and Development“[1] vorgestellten Prinzipien:
- Dependency Injection: Den Objekten werden die benötigten Ressourcen und Objekte zugewiesen. Sie müssen sie nicht selbst suchen.
- Aspekt-orientierte Programmierung (AOP): Dadurch kann man vor allem technische Aspekte wie Transaktionen oder Sicherheit isolieren und den eigentlichen Code davon frei halten.
- Vorlagen dienen dazu, die Arbeit mit einigen Programmierschnittstellen (APIs) zu vereinfachen, indem Ressourcen automatisch aufgeräumt sowie Fehlersituationen einheitlich behandelt werden.
Dadurch wird ein POJO-basiertes Programmiermodell möglich, bei dem die POJOs zusätzlich in verschiedenen Umgebungen (auf einem Server oder in einer Client Anwendung) lauffähig sind.
Das Spring-Framework stellt mit Spring MVC außerdem ein Webprogrammiergerüst für die Erstellung von Webanwendungen bereit.
Spring wird heute unter Anderem von Jürgen Höller, Rod Johnson und Rob Harrop (alle bei SpringSource, ehemals Interface21 beschäftigt) weiterentwickelt. Am 19. November 2007 erschien die Version 2.5 mit umfangreichen Änderungen unter Anderem in der Konfiguration der Dependency Injection durch Annotations.
Auf Basis des Spring-Frameworks existieren weitere Projekte, welche innerhalb des Spring-Projektes entwickelt werden:
- Spring .NET ist die Portierung des Spring-Framework auf der .NET-Plattform.
- Spring Batch für die Abbildung von Batch-Prozessen auf der Java-Plattform.
- Spring BeanDoc für die Erstellung von Dokumentationen zu den Spring-Programmiergerüstkonfigurationen.
- Spring Dynamic Modules for OSGi™ Service Platforms für die Implementierung von Spring-Anwendungen auf Basis des OSGI-Programmiergerüsts.
- Spring Extensions (Modules) zur Anbindung von weiteren Programmiergerüsten, welche nicht im Spring-Framework selbst enthalten sind.
- Spring IDE für die Entwicklerunterstütztung in der Erstellung und Wartung von Spring-Anwendungen.
- Spring Integration für die Implementierung von Integrationslogik mit einem Spring-konformen Programmierparadigma.
- Spring JavaConfig für die Konfiguration der Spring-Anwendung auf Basis von Java-Klassen an Stelle von XML oder Annotations.
- Spring LDAP für den einfacheren Zugriff auf LDAP-Systeme.
- Spring Rich Client zur Erstellung von Rich Client-Anwendungen auf Basis des Spring-Frameworks.
- Spring Security zur Absicherung von Java-Anwendungen sowie Webseiten.
- Spring Web Flow für die Implementierung von Abläufen auf einer Webseite.
- Spring Web Services zur Erstellung von Contract-First Webservices.
- ColdSpring ColdFusion ist die Portierung des Spring-Framework auf die ColdFusion-Plattform.
Geschichte
Die erste Version des Anwendungsprogrammiergerüsts wurde von Rod Johnson entwickelt, dessen Grundlagen und Prinzipien in Rod Johnsons Buch "Expert One-On-One J2EE Design and Development“[1] 2002 erschien, für welches der Quelltext des Programmiergerüsts als Begleitmaterial verfügbar war.
Im Februar 2003 wurde der Quellcode erstmals auf Sourceforge als quelloffenes Projekt eingestellt und erhielt zu diesem Zeitpunkt den Namen Spring-Framework. Im Juni 2003 erschien die erste Freigabe in der Version 0.9 unter der Apache 2.0 Lizenz. Die offizielle 1.0-Freigabe des Programmiergerüsts wurde im März 2004 veröffentlicht.
Seit dieser Zeit fand das Spring-Framework in wenigen Jahren weite Verbreitung und wird bereits in einer Vielzahl von Anwendungen eingesetzt.
Im September 2004 wurde die Version 1.1 mit Fehlerbehebungen und zahlreichen neuen Funktionen veröffentlicht. Die im Mai 2005 veröffentlichte Version 1.2 unterstützte bereits einige Java-5-Funktionalitäten bei gleichzeitiger Abwärtskompabilität zu älteren Java-Versionen. Im Dezember 2005 wurde von den Spring-Entwicklern die Version 2.0 angekündigt, welche dann eine Menge neuer Funktionen mit sich brachte und im Oktober 2006 veröffentlicht wurde.
Bis zur Veröffentlichung der Version 2.0 wurde das Spring-Framework bereits 1 Million mal heruntergeladen und gewann im Jahr 2006 den JAX Innovation Award.
Im November 2007 wurde die Version 2.5 veröffentlicht. Ursprünglich fand die Entwicklung unter der Version 2.1 statt, aber auf Grund der vielen neuen Funktionen wurde die Version 2.5 Nachfolger für die Version 2.0.x. Spring 2.5 unterstützt vollständig die Java-6-Version sowie die Java EE in der Version 5 bei gleichzeitiger Abwärtskompabilität zu Java 1.4 sowie Java EE 1.3. Außerdem werden in Spring 2.5 Annotations für die Konfiguration der Anwendungskomponenten unterstützt.
Seit einiger Zeit wird die Version 3.0 entwickelt, die vor allem eine Expression Language u. A. für die Konfiguration der Spring Beans und eine Unterstützung für REST mitbringen wird.
Die Entwicklung des Spring-Frameworks findet nach wie vor durch die Spring-Kernentwickler statt. Die Firma SpringSource beschäftigt alle aktiven Entwickler des Projektes und bietet u. A. Beratung, Training und Unterstützung zu Spring.
Spring Dynamic Modules for the OSGi Platform (früher Spring-OSGi)
Spring Dynamic Modules agiert als Brücke zwischen dem Spring-Framework und OSGi. Anwendungen auf Basis des Spring-Frameworks können hierdurch mit OSGi implementiert werden. Grundidee ist die Bereitstellung von Spring in Form von Bundles. Dabei sollen die dynamischen Merkmale von OSGi genutzt werden.
Jedes Bundle besitzt seinen eigenen Application-Context. Spring-Beans können als OSGi-Services exportiert, OSGi-Services als Spring-Beans importiert werden. Services können dynamisch installiert und deinstalliert werden. Die derzeitige Freigabe ist Spring Dynamic Modules 1.1.2, welches am 3. Oktober 2008 veröffentlicht wurde.
SpringSource dm Server
Die Nutzung von OSGi für Enterprise-Anwendungen führt zu einigen Problemen, da OSGi das Laden der Klassen anders handhabt. Das kann zu Inkompatibilitäten und auch komplexeren Problemen führen, da zum Beispiel ein O/R-Mapper wie Hibernate den Kode der persistenten Objekte modifizieren können muss. Der SpringSource dm Server bietet Lösungen für diese Probleme an und erleichtert außerdem die Nutzung von Spring. Er basiert auf Apache Tomcat für die Unterstützung von Web-Anwendungen und Equinox (OSGi-Programmiergerüst) als OSGi-Implementierung. Der SpringSource dm Server ist ein quelloffenes Projekt.
Literatur
- Jan Machacek, Aleksa Vukotic, Anirvan Chakraborty: Pro Spring 2.5. APress, 2005, ISBN 1-590-59921-7
- Rod Johnson, Jürgen Höller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu: Professional Java Development with the Spring-Framework. Wiley, 2005, ISBN 0-764-57483-3
- Richard Oates, Thomas Langer, Stefan Wille, Torsten Lueckow, Gerald Bachlmayr: Spring & Hibernate. Eine praxisbezogene Einführung, Hanser Verlag, 2006, ISBN 978-3-446-40457-1
- Eberhard Wolff: Spring 2 - Framework für die Java Entwicklung. dpunkt, 2007 (2. Auflage), ISBN 3-898-64465-0 , http://spring-buch.de
- Craig Walls: Spring in Action. Manning, 2007 (second edition), ISBN 1-933-98813-4
- Peter Welkenbach, Guido Schmutz: Spring 2.0 im Einsatz. EntwicklerPress, 2006, ISBN 978-3-939084-23-5
- Alfred Zeitner, Birgit Linner, Martin Maier, Thorsten Göckeler: Spring 2.5: Eine pragmatische Einführung. Addison-Wesley, 2008, ISBN 978-3-827-32622-5
- Thomas Biskup, Sven Helmberger, Holger Spielmann, Rafael Stalitza, Sascha Steiger, Nils Wloka: Spring Praxishandbuch: Integration und Testing. EntwicklerPress, 2008, ISBN 978-3-939-08439-6
- Thomas Biskup, Rafael Stalitza, Sascha Steiger, Nils Wloka: Spring Praxishandbuch: Band 2: Dynamisierung, Verteilung und Sicherheit. EntwicklerPress, 2009, ISBN 978-3-868-02022-9
Weblinks
- Webpräsenz des Projektes
- http://www.springframework.net/ – Portierung des Spring-Frameworks für Microsofts .NET (engl.)
- Spezifikation und Dokumentation von Spring-OSGi (englisch)
- Website zum dmserver (englisch)
Quellennachweis
Wikimedia Foundation.