Hinter den Kulissen von Spring
Jürgen Höller sprach dann vorgestern abend zu dem Thema "Hinter den Kulissen von Spring".
Dabei gab es erst mal Trivia: Spring hat neben der Bedeutung "Frühling", die mittlerweile vor allem genutzt wird, auch die Bedeutung "Feder" und es gibt auch "Spring into life". Im Moment hat Spring 30.000 Downloads/Monat.
Interessant ist auch der Blick in die Struktur von Spring: 99% des Codes kommt von 6 Committern, 80% von zwei (Rob Harrop und Jürgen Höller, beide von Interface21). Dadurch wird auch nochmal klar, welchen Einfluß Interface21 hier hat. Weniger ist hier einfach auch mehr: Es gibt zentralisierte Entscheidungen und dadurch kann man auch Design-Entscheidungen konsistent durchsetzen.
Ein wichtiges Werkzeug ist dabei
JIRA, mit dem man nicht nur Bugs reporten kann, sondern auch Vorschläge für neue Features und sogar die Roadmap kann man diesem Tool entnehmen. Der Hauptvorteil von Open Source ist, dass man auf diese Weise viele Submissions bekommt und auch sonst viel Feedback: Sei es neue Konzepte aber auch Code.
Mittlerweile ist rund um Spring ein ganzes Ökosystem entstanden mit Spring Web Flow, Spring Web Services, Spring Rich Client und dem Acegi Framework.
Jürgen setzte sich dann mit dem klassischen Applicatioin Framework auseinander. Im Gegensatz zu den monolithischen Ansätzen, die alle Probleme in der Anwendung zu lösen versuchen, versucht Spring hier einen Best of Breed Ansatz d.h. man kann aus den integrierten Frameworks das beste für einen bestimmten Zweck auswählen. Auch die Teile von Spring selbst kann man getrennt voneinander verwenden. Diese Separierung ist sehr wichtig und es oft bei der Entwicklung eine echte Herausforderung, so zum Beispiel bei den neuen XML Schemata im Dependency Injection Container für Spring 2.0, die zwar für spezifische Subsysteme wie AOP oder Transaktionsmangement verwendet werden sollen, aber gleichzeitig darf der Container nicht von diesen Subsystemen abhängig werden.
Ein weiterer wichtiger Punkt war, dass man durch Spring die Infrastruktur durch ein Update der Anwendung austauschen kann: Man kann die neuen Feature von Spring 2.0 verwenden, wenn man einfach nur die Anwendung mit den passenden JARs ausliefert - ein Update des Application Servers ist nicht nötig. Dieses Vorgehen ist wesentlich risikoärmer und in der Realität haben die meisten Betriebsabteilungen eine Ehrfurcht davor, ein Update eines Application Servers vorzunehmen. Man kann so etwas auch nur dann tun, wenn man vorher umfangreiche Tests macht. Spring geht hier sehr weit: Selbst Spring 2.0 funktioniert noch auf Java EE 1.2 und es gab auch schon einen Bug Report für Spring 2.0 M4, also eine brandneue Version von Spring, auf IBM Web Sphere 3.5 aus dem Jahre 2000, was nochmal zeigt welche breite Unterstützung von Plattformen Spring anbietet.