Spring (Framework)
Das Spring Framework (kurz Spring) ist ein quelloffenes Framework für die Java-Plattform, welches oft für Web-Anwendungen verwendet wird. Ziel des Spring Frameworks ist es, die Entwicklung mit Java/Java EE zu vereinfachen und gute Programmierpraktiken zu fördern.[3] Das Spring Framework bietet mit einem breiten Spektrum an Funktionalität eine ganzheitliche Lösung zur Entwicklung von Anwendungen und deren Geschäftslogiken. Dabei steht die Entkopplung der Applikationskomponenten im Vordergrund. EigenschaftenDas Framework basiert auf den in Rod Johnsons Buch Expert One-On-One J2EE Design and Development[4] vorgestellten Prinzipien:
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. ErweiterungenAuf Basis des Spring-Frameworks existieren weitere Projekte, welche innerhalb des Spring-Projektes entwickelt werden:
Das mittlerweile nicht mehr fortgeführte Open-Source-Projekt Spring Modules bietet darüber hinaus eine Reihe von Tools und Erweiterungen für Spring, darunter z. B. Integration mit Ant, Flux, HiveMind, Lucene, Apache OJB, Tapestry, Unterstützung für Caching Services, db4o, Rules Engines, diversen Jakarta-Commons-Komponenten, JavaSpaces, jBPM, Erweiterungen für Spring MVC und Bean-Validierung.[5] VergleichSpring konkurriert direkt mit anderen Dependency-Injection-Frameworks wie PicoContainer oder Google Guice, bietet aber aufgrund seiner Unterstützung für Aspektorientierte Programmierung und Vereinfachung bestehender Programmierschnittstellen mehr als diese. Im Vergleich zu Enterprise Java Beans 3.0, das auch POJO-basierend ist und Dependency Injection unterstützt, gibt es folgende Unterschiede:
Gleichzeitig unterstützt Spring viele der Annotationen von EJB 3.0, sodass ein ähnliches Programmiermodell möglich ist.
Spring BootSpring Boot bietet die Möglichkeit eine Spring-Applikation nach dem Konvention-vor-Konfiguration-Prinzip zu erstellen, die alle notwendigen Komponenten mitbringt und keinen externen Application Server benötigt.[6] Mit Hilfe des sogenannten Spring Initializers können Abhängigkeiten wie z. B. Web-Frameworks, Datenbanktreiber, Messaging-Komponenten oder Software für die Unterstützung der Ausführung in Cloud-Umgebung ausgewählt werden, sodass die manuelle Konfiguration des Projektes entfällt. Insbesondere im Gegensatz zu klassischen Spring-Anwendungen, bei denen mehrere XML-Konfigurationsdateien bearbeitet werden mussten, bietet Spring Boot eine schnelle Erstellung eines neuen Projektes. Dadurch wird Spring Boot auch als Methode zur Erstellung von Microservices beworben. Spring Boot ist keine Alternative zum Spring Framework, sondern vereinfacht hauptsächlich die Konfiguration. Durch die Einbindung sogenannter „Starter“ in Maven oder Gradle wird eine Standardkonfiguration bereitgestellt, die viele Anwendungsfälle abdeckt. So konfiguriert der Starter „spring-boot-starter-web“ beispielsweise in der Standardeinstellung automatisch einen integrierten Tomcat-Webserver. Weitere Starter gibt es für das Einbinden und Konfigurieren eines ORM wie Hibernate oder des Sicherheits-Frameworks Spring Security. Durch Scannen des Klassenpfads können weitere Konfigurationen vorgenommen werden. Wenn z. B. der JDBC-Treiber für PostgreSQL im Klassenpfad vorhanden ist, wird automatisch eine PostgreSQL-Verbindung konfiguriert. GeschichteRod Johnson präsentierte die Ideen zu Spring erstmals in seinem Buch Expert One-On-One J2EE Design and Development[4] (2002) und stellte Quelltext als Begleitmaterial bereit. Im Februar 2003 wurde der Quellcode erstmals auf SourceForge als quelloffenes Projekt bereitgestellt 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 von Spring wurde im März 2004 veröffentlicht. Seit dieser Zeit fand das Spring-Framework in wenigen Jahren weite Verbreitung und wird 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ärtskompatibilitä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 war das Spring-Framework bereits eine Million Mal heruntergeladen worden und gewann im Jahr 2006 einen JAX Innovation Award und einen Jolt productivity award.[7][8] Am 19. November 2007 wurde die Version 2.5 veröffentlicht. Ursprünglich war die Entwicklung als Version 2.1 vorgesehen, aber aufgrund der vielen neuen Funktionen wurde stattdessen 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ärtskompatibilitä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. Im September 2009 wurde SpringSource von VMware übernommen.[9] Version 3.0 erschien am 16. Dezember 2009[10]. Neu integriert wurden darin unter anderem eine Expression Language u. a. für die Konfiguration der Spring-Beans und eine Unterstützung für REST. Außerdem wurde die Java-basierte Konfiguration aus dem Spring-Java-Config-Projekt in Spring 3.0 integriert. Wesentliche Neuerungen der Version 3.1 waren die portable Cache-Abstraktion und die Unterstützung von Konfigurationsprofilen, bei denen abhängig von der Umgebung unterschiedliche Spring-Beans erzeugt werden. Darüber hinaus werden Web Conversations eingeführt, mit denen Zustand verwaltet werden kann, der über mehrere Web-Seiten zur Verfügung stehen muss. Das Spring-Framework wird nach wie vor durch die Spring-Kernentwickler, unter anderem Jürgen Höller, Rod Johnson und Rob Harrop, weiterentwickelt. Die Firma SpringSource Division von VMware, ehemals Interface21, beschäftigt die meisten aktiven Entwickler des Projektes und bietet u. a. Beratung, Training und Unterstützung zu Spring. Im April 2013 wurde die inzwischen von SpringSource zu Spring umbenannte VMWare-Tochterfirma in ein neu gegründetes Joint-Venture-Unternehmen zwischen VMware, EMC Corporation und General Electric ausgegliedert. Dieses Unternehmen trug den Namen Pivotal Software Inc.[11] Pivotal wurde 2018 an die NYSE gebracht und 2019 wurden alle Anteile von VMware zurückgekauft.[12] 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 angeboten, OSGi-Services als Spring-Beans konsumiert werden. Services können dynamisch installiert und deinstalliert werden. Die derzeitige Freigabe ist Spring Dynamic Modules 1.1.2, das am 3. Oktober 2008 veröffentlicht wurde. SpringSource dm-ServerDie 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 darauf angewiesen ist, den Code der persistenten Objekte zu modifizieren. 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 als OSGi-Implementierung. Der SpringSource-dm-Server ist ein quelloffenes Projekt nach GNU General Public License (GPL). Mittlerweile sind die Quellen Basis für das Eclipse-Virgo-Projekt, das nach der Eclipse Public License lizenziert ist. Siehe auchLiteratur
Weblinks
Einzelnachweise
|