- Spring
- Die richtige Antwort auf die früheren EJB Spezifikationen
- Erleichtert das Arbeiten im Enterprise Java Bereich erheblich
- Ermöglicht konsequenten Einsatz von TDD und somit hoch qualitative Anwendungen
- Das mit Abstand am besten dokumentierte Open Source Framework
- Spring
- The correct answer to the earlier EJB specifications
- Significantly facilitates work in the Enterprise Java sector
- Provides consistent use of TDD and thus high quality applications
- By far the best documented Open Source Framework
Spring
Ziel des Spring Frameworks ist es, die Entwicklung mit Java bzw. JEE zu vereinfachen und gute Programmierpraktiken zu fördern. Dabei steht die Entkopplung der Applikationskomponenten im Vordergrund. Spring basiert auf drei Elementen, aus denen letztendlich das berühmte Spring Triangle besteht:
1. Enterprise Service Abstractions
Spring bietet eine vereinfachte und vereinheitlichte API-Schicht über viele Java-SE-APIs, Java-EE-APIs und Open-Source-Frameworks an. Der wesentliche Grund für die zunehmende Komplexität der Entwicklung mit Java ist nämlich nicht die Sprache selbst, sondern die zahlreichen APIs, die Java anbietet.
2. Dependency Injection
In einem klassisch aufgebauten OO-System ist jedes Objekt selbst dafür zuständig, seine Abhängigkeiten, also benötigte Objekte und Ressourcen, zu erzeugen und zu verwalten. Dafür muss jedes Objekt einige Kenntnisse seiner Umgebung mitbringen, die es zur Erfüllung seiner eigentlichen Aufgabe normalerweise nicht benötigen würde. Insbesondere muss es, um die entsprechenden Objekte erzeugen zu können, deren konkrete Implementierung kennen. Dependency Injection überträgt die Verantwortung für die Erzeugung und die Verknüpfung von Objekten an ein extern konfigurierbares Framework, e.g. Spring. Dadurch wird der Code des Objektes unabhängig von seiner Umgebung und von der konkreten Umsetzung der Klassen, die es benötigt. Das vermeidet unnötige Abhängigkeiten und erleichtert besonders die Erstellung von Unit Tests. Spring bietet mit seinem Dependency Injection Container einen einheitlichen Weg, solche Objektstrukturen aufzubauen.
3. Aspect-Oriented Programming
Aspektorientierte Programmierung (AOP) versucht, bestimmte logische Aspekte einer Softwareanwendung getrennt voneinander zu entwerfen, zu entwickeln und zu testen. Die getrennt entwickelten Aspekte werden dann zur endgültigen Anwendung zusammengefügt. Aspekte beziehungsweise Concerns in diesem Sinne sind alle eigenständigen Anforderungen der Anwendung, die nicht einem einzigen Modul zugeordnet werden können sondern vielmehr von mehreren Modulen berücksichtigt werden müssen. Aspekte sind z.B. Anforderungen wie Transaktionsverwaltung, Auditfähigkeit und Loggingverhalten, die für alle Module in einer Anwendung gelten. Ein Aspekt behandelt also einen sogenannten Cross-Cutting Concern mehrerer Softwaremodule. Für die Definition und Implementierung solcher Aspekte bietet Spring AOP Framework hervorragende Unterstützung.
Spring
The aim of the Spring Framework is to simplify development with Java and JEE and to promote good programming practices. Here the decoupling of application components is of paramount importance. Spring is based on three elements that make up the famous Spring Triangle:
1. Enterprise Service Abstractions
Spring provides a simplified and unified API layer over many Java SE APIs, Java EE APIs and Open Source Frameworks. The main reason for the increasing complexity of development with Java is not the language itself, but the number of APIs that Java offers.
2. Dependency Injection
In a classically structured OO System each object is responsible for its own dependencies, that is, objects and resources are required to both create and manage. Each object brings some knowledge of its environment that it would not need normally to perform its proper function. In particular the object needs to know the concrete implementation of corresponding objects in order to create them. Dependency Injection transfers the responsibility for the production, and the linking of objects to an externally configurable framework, e.g. Spring. In this way the code for the objects becomes independent of its environment as well as from the concrete implementation of the classes it needs. This avoids unnecessary dependencies and facilitates the creation of unit tests. Spring offers a unified way to develop object structures.
3. Aspect-Oriented Programming
Aspect-Oriented Programming (AOP) attempts to draw, develop and test certain logical aspects of a software application. The seperatly developed aspects are then combined for final use. Aspects, in this sense are all independent requirements of an application, that can not be assigned to a single module, but rather must be taken into account by several modules. Aspects are, for example, requirements such as transaction management, audit capability and logging behavior that apply to all modules in an application. One aspect deals with the so-called Cross-Cutting concern of multiple software modules. For the definition and implementation of such aspects the Spring AOP Framework offers excellent support.
