Dies Jahr hatte ich das Glück bei der Spring One dabei zu sein. Es waren, wie letztes Jahr auch, circa 370 Besucher und eine Menge Speaker anwesend. Ich versuche mal die viele Erlebnisse in komprimierter Form darzustellen.

Die SpringOne wurde mit einer Keynote von Rod Johnson eröffnet. In der Keynote stellte Rod dar, wie Interface21 die kürzlich erhaltene Finanzspritze (10 mio. $) von Benachmark Captial, einem Investor in Open Source Projekte (Red Hat, MySQL, JBoss) einsetzen will. Ich denke ein großer Teil wird mit Sicherheit in die Produktentwicklung gehen. So sollen die Entwicklerkapazitäten in manchen Bereichen verfünffacht werden. Es wird zudem ein dediziertes Enwicklungslabor in Southhampton, UK geben. Ein weitere Entwiclungszentrum wird in Florida, US aufgebaut. Ich denke angesichts dieser Tatsachen kann man zukünftig noch schnellere Release Zyklen erwarten, wobei trotzdem zu sagen bleibt das bereits jetzt die derzeitige Geschwindigkeit und vor allem die Qualität mit Sicherheit als sehr gut zu bezeichnen sind.
Ein weitere Office wird in Sillicon Valley aufgebaut, in diesem wird unter anderem auch Rod Johnson selbst umziehen. Der Umzug von ihm ist Logistisch zu begründen, da die meisten Partner etc. von Interface21 sich dort befinden.
Als weiteres wurden die neuen Mitarbeiter von Interface21 vorgestellt, dies sind zu einem nicht-technische Leute für den Vertrieb und die operative, zum anderen ist dies Mark Pollack welcher in der Spring .NET Entwicklung beteiligt ist.
Mark stellt die (einfache) Entwicklung eines Webservices mit Hilfe von Spring .NET vor. Weitere Vorstellungen waren das Produkt Spring Webflow durch Ben Hale sowie die Spring IDE von Christian Dupuis.
Insgesamt war die Keynote sehr spannend, und konnte auf eine interessante Art den Benutzern einen Blick in die Zukunft von Interface21 und dem Spring Ökosystem geben.

Improving application design with a rich domain model

Im der anschließenden Session von Chris Richardson ging es um das Applikationsdesign mit einem Rich Domain Modell. Dabei zeigt Chris eine typischen Applikation auf welche mit dem Anemic Domain Modell entwickelt wurde. In der Beispiel Applikation ging es um die Durchführung eines Überweisung bei welcher zwei unterschiedliche Konten beteiligt sind. In der Konto Klasse wurd keine fachliche Logik selbst implementiert, diese dienten lediglich als Datencontainer (DTOs). In der Service Klasse waren allein für ein kleines und nicht vollständiges Beispiel bereits über 100 Zeilen Code enthalten, ich denke in der realität können dies durchaus auch tausende sein. Chris erklärte anschließend die Probleme welche mit der Implementierung auftreten (Lesbarkeit, Wartbarkeit, Flexibilität). Den Abschluss der Session stellt das Refactoring des Anemic Domain Modells in ein Rich Domain Modell dar.

Dazu wurden die Methoden zuerst in die Account Klassen selbst verschoben, anschließend wurde eine neue Klasse erstellt welche eine Überweisung selbst darstellt. Durch weitere Refactoring wurden verschiedene IF/ELSE Konstellationen durch Polymorphie ersetzt. Ein weitere Punkt war die Ersetzung von einfach Java Objekten (z.B. Date) durch fachliche Objekte (FachlicherKalender). Dadurch konnte ein erheblicher Teil der Logik welcher sich mit Datumsberechnungen auseinander setzt von den einzelnen Domain Klassen in den Fachlichen Kalender verschoben werden.

Best Practices using Spring Web Flow

In dieser Session stellte Erwin Vervaet, einer der beiden Entwickler neben Keith, verschiedene Themen rund um Spring webflow vor. Ein ganz zentraler Bestandteil ist dabei die Continuation Funktionalität. Da Zeil bei dem Einsatz von Continatuons ist die Ermöglichung eines Back und Refresh Buttons innerhalb von Spring Webflow. Der Benutzer soll dabei in der Anwendung selbst navigieren können.
Spring Webflow stellt dazu bereits eine out-of-the-box Implementierung zur Verfügung. Erwin führte die Vor und Nachteile beim Einsatz der Continations in Spring Webflow vor. Ein Nachteil ist dabei unter anderem der erhöhte Speicherverbrauch auf dem Server, da für jede Seite eine “Snapshot” der Flow Daten im Server gespeichert werden. der Vorteil ist die erhöhte Flexibilität beim Benutzer.
Anschließend stellte Erwin die weitere Repositories von Spring Webflow mit deren Vor und Nachteilen dar. Den Abschluss der Session bildeten die Integrationstest, welche mit Spring Webflow sehr elegantin Junit durchgeführt werden können.

Data Grids: Extreme Transaction Processing Infrastructure for Spring Applications

Brian Oliver stellte in dieser Session die Einsatzmöglichkeiten und Vorteile von Data Grids mit Coherence Data Grid dar. Nach einer kurzen Einführung folgte ein erstes Beispiel in dem mit einem zwei- zeilen Code die Verwendung des Grids vorgestellt wurde. Beindruckend ist hier das mit einer einzigen Zeile Code die Anwendung an einem Grid Teilnehmen kann. Mit einem weiteren call konnte man anschließend Daten in den Grid übergeben oder auch auslesen.
Anschließend wurde die Datenverteilung bei Verwendung von mehreren Memebern dargestellt. Bei einem Datagrid gibt es kein Master/Slave Pattern, das bedeutet das alles Member an einem Datagrid die gleichen Pflichten und Aufgaben wahrnehmen. Innerhalb eines Grids werden dabei die Daten unter allen Membern verteilt, dabei besitzt jeder Memeber einen sogenannten Backup Member.
Den abschluss stellte die weiteren Vorteile einen Data Grids dar. Insgesamt war die Session sehr interessant, man muss dabei auch aber sagen das die Session für dieses Thema schon fast zu kurz war.

Pragmatic SOA – Substance, not hype

In diese Session bin ich mit gemischten Gefühlen reingeganen. In letzter Zeit hatte ich doch einige SOA Vorstellungen von vielen Leuten gesehen, vor allem auch von den Vertrieblern der großen Produkthersteller. Diese konnten mich leider nicht ganz überzeugen. Aber Aufgrund der Tatsache das der Speaker ein gestandener Java Entwickler ist und es sich dabei um Arjen Poutsma handelt, welcher der Vater von Spring Webservices ist, konnte die Session eigentlich nur gut werden. Arjen stellte erstmal Webservices allgemein vor, dabei sprach er auch die derzeit vohandene fehlerhafte Meinung an, das Webservices nur über HTTP realisierbar sind. Webservices lassen sich zum Beispiel auch mit JMS oder per E-Mail übertragen, was in vielen Umständen vorteilhafter ist (asynchrone Übertragung etc.)
Anschließend folgt der Historische Überblick, wie man heute zu einer Server Orientierten Architektur gekommen ist. Dabei ist eine SOA Architektur in dem Sinne nichts neues, da es Services bereits schon immer gab. dies waren zum Beispiel früher die COM Komponenten innerhalb eines Microsoft Betriebssystems. Bei den heutigen Services spricht man häufig von Business Services, welche einen Geschäftsprozess oder zumindest einen Services mit einem Teil eines Geschäftsprozess implementieren. Arjen stellte anschließend mit einem Beispiel (Ausfüllen von Urlaubsformularen) die Implemenentierung eines fachlichen Services dar.
Den Abschluss der Session stellt der Wildwuchs an WS-* Spezifikationen dar. Arjen stellte dabei unterschiedliche Spezifikationen dar. Beindruckend ist hierbei das es die Organisationen geschafft haben z.B. für das WS-Adressing FÜNF! inkompatible Spezifikationen zu schaffen. In allen anderem Bereichen (security, Reliable Messaging) sieht das ganze leider nicht wesentlich besser aus.

Rundum war die Session sehr gelungen, da es Arjen wirklich geschafft hat ohne Technologien in das Thema einzuführen. Somit war die Session eine interessante Einführung in die Webservices und den Technologien mit welcher sich eine SOA aufbauen lässt.