Einführung
... [ Seminar BS, WWW und PS ] ... [ Thema Spring Framework ] ... [ Features: Übersicht ] ...
Einführung
Motivation
Die Entwickler von Spring waren mit den von J2EE zur Verfügung gestellten Methoden zum Entwickeln von Anwendungen nicht
zufrieden. J2EE bietet zum Abbilden der mittleren Schicht, der Geschäftslogik, die Enterprise Java Beans (EJB). Diese sind
allerdings nur in Zusammenspiel mit einem J2EE-Server lauffähig. Zum Auffinden ihrer Ressourcen sind die EJBs zusätzlich
an Java Naming and Directory Interface (JNDI) gebunden und dieses wird typischerweise nur von einem J2EE-Server zur
Verfügung gestellt. Spring soll hier Abhilfe schaffen und die Geschäftslogik unabhängig vom Server verwalten können.
Darüber hinaus wollten die Entwickler eine ganzheitliche Lösung anbieten, die unterschiedliche Frameworks unter einem Dach
zusammenfasst und damit die teilweise komplizierte Integration dieser Frameworks in eine umfassende Architektur vereinfachen.
Spring sollte dabei modular gehalten werden, so dass es auch möglich ist nur einzelne Teile des Frameworks zu benutzen.
Außerdem sollte der Aufwand zum Entwickeln von Programmen minimiert werden. Ein wichtiges Ziel war es auch, dass die
erzeugten Programme so wenig wie möglich von Spring abhängen. Auch untereinander sollten die Teile von Programmen
möglichst wenig voneinander abhängen um Wiederverwendbarkeit und einfache Testbarkeit zu ermöglichen. Um diese
Unabhängigkeiten zu erreichen und trotzdem den Überblick über die Anwendung behalten zu können, ist es notwendig die
Abhängigkeiten der Programmteile untereinander zu konfigurieren. Dies sollte in einer konsistenten und einheitlichen Form
geschehen. Darüberhinaus sollte Spring auf Interfaces basieren um eine möglichst leichte Erweiterbarkeit zu gewährleisten.
Es ist dabei wichtig hervorzuheben, dass Spring nicht mit anderen Frameworks konkurrieren, sondern eine einheitliche und
vereinfachte Möglichkeit diese anzusprechen bieten will.
Leistungen
Spring nimmt dem Entwickler die Verwaltung seiner Objekte ab. Egal um welche Art von Objekten es sich handelt, Spring
übernimmt anhand einer Konfiguration deren Erstellung, Konfiguration und überwacht den Lebenszyklus. Die Objekte werden
dazu in einem Container verwaltet der die oben genannten Aufgaben erfüllt. In der Spring-Terminolgie sind alle Objekte, die
in einem Spring-Container verwaltet werden Beans (weicht von der Definition der JavaBeans im Kontext der EJBs ab). Da der
Programmierer die Abhängigkeite seiner Objekte zu anderen nicht mehr hineinprogrammieren muss, werden einfache, unabhängige
Objekte erzeugt, die leicht test- und wiederverwendbar sind. Zum Testen bietet Spring ein Package mit Superklassen an,
die das Testen eines ganzen Containers mit JUnit ermöglichen und vereinfachen. Da die Konfiguration der Objekte und ihrer
Abhängigkeiten in der Spring-Konfiguration vorgenommen wird sind änderungen hieran einfach und zentral möglich und erfordern
in einfachen Fällen kein Verständnis von Java. Diese zentrale Verwaltung ermöglicht es auch die Anwendung an neue Umgebungen
anzupassen. Wenn sich zum Beispiel die zugrunde liegende Datenbank ändert reicht es in den meisten Fällen aus die Adresse
und/oder den Treiber der Datenbank in der Konfiguration zu ändern. Da das zugrundeliegende Objekt nicht weiss, dass es von
einem Spring-Container verwaltet wird sind meist keine Abhängigkeiten zu Spring nötig. Nur wenn auf spezielle
Funktionalitäten zurückgegriffen wird, wie zum Beispiel die Vereinfachung von Datenbankzugriffen oder bei der Programmierung
von Webkomponenten, werden Abhängigkeiten von APIs erzeugt. Spring stellt eine umfangreiche Alternative zu den EJBs da. So
ist es weder von einem J2EE-Server noch von JDNI abhängig. Außerdem ermöglicht es eine modularere Nutzung, so dass nur die
wirklich benötigten Teile des Frameworks eingebunden werden müssen; und bietet zusätzliche Features, wie zum Beispiel den
einheitlichen Zugriff auf Datenbanken, an.
Historie
Die Entwicklung am Spring Framework begann unter dem Namen Interface21-Framework, das mit dem Buch "Expert One-on-One J2EE
Design and Development" von Rod Johnson veröffentlich wurde. Interface21 ist der Name der Firma bei der Rod Johnson zur
Veröffentlichung seines Buches arbeitete. Dieses Framework war allerdings bei weitem nicht so umfangreich und sollte nur die
in dem Buch gezeigten Ansätze verdeutlichen. Aufgrund des starken Interesse an diesem Framework wurde es im Februar 2003 in
Spring Framework umbenannt und als Projekt bei Sourceforge gestartet. Im Juni 2003 folgte als erste öffentliche Version das
Spring Framework 0.9. Am 24.3.2004 folgte die Version 1.0 final. Zu dieser Version gab es eine Veröffentlichung von Jürgen
Höller und Rod Johnson, "Expert One-on-One J2EE Development without EJB". Seit dem 03.10.2006 gibt es die Version 2.0 final,
die erhebliche änderungen in einigen Bereichen bracht. So wurde die XML-Konfiguration deutlich vereinfacht, Java 5 Support
und die Unterstützung dynamische Sprachen hinzugefügt und vieles weitere. Aktuell ist zum Zeitpunkt dieser Arbeit
die Version 2.0.1. Die Weiterentwicklung des Spring Framework wird von Interface21 vorangetrieben. Die aktuelle Version des
Frameworks, sowie umfangreiche Dokumentation und Links zu verwandten Projekten gibt es auf
www.springframework.org.
... [ Seminar BS, WWW und PS ] ... [ Thema Spring Framework ] ... [ Einführung ] ... [ Features: Übersicht ] ...