Dieses Jahr habe ich nur einen Tag auf der Jax verbracht. Gleich zwei Vorträge hatte ich mitgebracht, ein Soft-Skill Thema („Not invented here“) und einen zum Thema soziale Netzwerke („Web 2.0 für Freunde“). Es gab interessante Sessions, leider lagen sie parallel zu meinem eigenen Vortrag, sonst hätte ich sie auf jeden Fall besucht. Einen sehenswerten Vortrag über das Semantic Web zum Anfassen habe ich mitnehmen können. Und kurz vor’m nach Hause gehen kam noch was, das mich wirklich vom Stuhl riss…

Not invented here

ist ein Bug im Teamprozess, der im Projekt sehr teuer werden kann. Jemand entscheidet sich, etwas noch einmal zu entwickeln, was es bereits gibt, z.B. Persistenzframeworks, Logging, Caching, usw. nur weil er glaubt, das Fertigprodukt nicht nehmen zu können. Der tiefere Grund liegt darin, dass er den Kick sucht, den die Neuentwicklung einer nicht-trivialen Komponente in seinem Kopf auslöst.

Web 2.0 für Freunde – Googles OpenSocial API

In diesem Vortrag beschäftigte ich mich mit einer neuen Schnittstelle, die Google definiert hat und die nun von mehreren sozialen Netzwerken wie LinkedIn, Hi5, MySpace u.a. implementiert wird. Die Schnittstelle ermöglicht es Anwendungsanbietern, kleine so genannte „Gadgets“ zu schreiben, die in einem IFrame auf der Webseite des sozialen Netzwerks ablaufen können. Ich habe als Sample eine in Grails realisierte Schokoladen-Datenbank über das OpenSocial API an ein soziales Netzwerk (Orkut) angebunden. Dadurch wurde es den Mitgliedern des Netzes möglich, ihre jeweilige Lieblingsschokolade zu bewerten und die Bewertungen Ihrer Freunde ebenfalls auf der eigenen Profilseite zu veröffentlichen. Natürlich ist das nur eine Demo, die keinen geschäftlichen Hintergrund hat.

LinkedIn hat eine andere OpenSocial Anwendung veröffentlicht: Man kann als Mitglied des Netzes sehen, welche Events (Konferenzen, Seminare, etc.) anstehen und darstellen, an welchem Event man selbst teilnimmt. Danach ermittelt die Anwendung, welche Freunde am selben Event teilnehmen, so dass man sie treffen kann. Recht sinnvolles Beispiel.

Semantic Web zum Anfassen

Heiko Haller vom Forschungszentrum Informatik (FZI) in Karlsruhe und Felix Kugel von Orientation in Objects in Weinheim stellten das Semantic Web vor. Dabei geht es darum, die im Web vorliegenden, unstrukturierten Informationen mit Semantik zu hinterlegen. Im Vortrag wurden Beispiele vorgestellt sowie Startpunkte für die Suche nach Ontologien gegeben, die sich für EAI via SOA und Web anbieten. Danach wurden Tools gezeigt, die die einschlägigen Standards (RDF, OWL, SPARQL) auf Java-Ebene transportieren.

Beispiel für die Anwendbarkeit von Semantic-Web: Sie suchen in Flickr nach „Jaguar“ und bekommen Bilder von Raubkatzen und von Sportwagen. Was wollten Sie wirklich sehen? Nur weil Flickr nicht weiß, was für eine Semantik hinter dem Wort „Jaguar“ steckt, stellt es zu viele Suchergebnisse dar. Mit dem Semantic Web könnte man das ändern.

Interessant auch ein weiteres Beispiel: Gegeben eine Datenmenge, in der die Konzepte „Student“, „Institut“, „Universität“ und „Stadt“ vorkommen. Das Semantic Web könnte die Frage „Wo ist Peter?“ beantworten, wenn es weiß, dass Peter ein Student ist, der an einem bestimmten Institut studiert, das zu einer bestimmten Universität gehört, die sich in einer Stadt befindet. Es würde diese Kette „durchdenken“ und antworten mit „Peter ist in Karlsruhe“. Man nennt diese Systeme Reasoning Engines, also etwa „Nachdenkmaschinen“. Es gibt sie, ja sie sind sogar schon viele Jahre alt – und kommen erst jetzt so richtig zum Einsatz.

Felix Kugel von OiO zeigte eine Erweiterung für Wikipedia, das semantic wiki. Aus der Grundstruktur von Wikipedia, nämlich „Thema->Link->Thema“,  lässt sich mit etwas Semantik etwas anderes machen, nämlich „Subjekt->Prädikat->Objekt“. Damit kommt man zu wesentlich besserer Wartbarkeit der Wikiseiten, es lässt sich Redundanz entfernen, es muss nicht mehr so vieles von Hand an allen möglichen Stellen nachgetragen werden.

Schließlich gaben die Referenten noch einen Hinweis auf einen vor Kurzem online gegangenen, neuen Semantic Web Service: openCalais, powered by Reuters. Die Nachrichtenagentur hat einen Service online gestellt, dessen Anwendung denkbar einfach ist: Man schickt per Webservice Aufruf einen englischen Text an den Service und erhält als Ergebnis ein semantisches Netz mit Subjekten, Prädikaten, Objekten zurück, aus dem man dann selbst per Software weitere Schlüsse ziehen kann. Man darf max. 40000 Calls pro Tag an diesen Service richten.

Organic Programming oder: Wie entwickle ich ohne Entwickler?

Das war zum Abschluss der Jax einer der schärfsten Vorträge, die ich gehört habe. Er hieß „Software ist härter als Hardware“. Dr. Falk Langhammer von der Firma Living Pages Research GmbH bemühte sich redlich, seinen Zuhörern ein neues Konzept klar zu machen. Software muss komplex sein können, ohne kompliziert zu werden, gut OK, das versteht noch jeder. Der Ansatz jedoch, eine Demo zu zeigen, wie das denn umgesetzt werden sollen, scheiterte kläglich. Man schreibt nach dem neuen Vorschlag heute keine Klassen mehr, sondern Ercatons. Ercatons sind Kombinationen aus XML-Dateien für Daten und Java-Dateien für Methoden. Damit soll der Unterschied zwischen Objekten und Dokumenten aufgehoben werden – warum nur? Warum wird Komplexität dadurch leichter handhabbar? Keine Ahnung.

Die Demo zeigte eine Anwendung für die amerikanischen Wahlen. Als Beispiel ein Wahlzettel (Dokument und Objekt gleichzeitig). Als Daten waren drei Integers enthalten, die Stimmenzahlen für Clinton, Obama und McCain, etwa so:

<vote>
<clinton>0</clinton>
<obama>0</obama>
<mccain>0</mccain>
</vote>

Als Methoden gab es jeweils eine, die einen der drei Zähler hochzählt, also drei Stück insgesamt. Aus den Daten wurden gleichzeitig Felder auf einer Webseite, aus den Methoden wurden Buttons, auf die man klicken konnte. Etwa so: Man klicke auf den Button für die Methode voteForObama, dieser Button löst dann eine Action aus, die sieht so aus (die genaue Syntax ist mir entfallen):

<erc:action name=“voteForObama“>
/bin/increment xpath=“//vote/obama“
</erc:action>

Dr. Langhammer versuchte, darzustellen, dass diese Syntax so einfach sei, dass man nicht einmal mehr Software-Entwickler dazu bräuchte. Speziell ausgebildete Leute beim Kunden würden dafür völlig ausreichen. Warum man nun manchmal eine Mischung zwischen XML und Linux-Commandline-Syntax und ein anderes Mal Java-Methoden braucht, blieb unklar.

Besonders trickreich dann die Verwendung von XPath-Expressions im Java-Code: Die Methoden in Java setzen die Daten, die im XML-Dokument definiert sind, per XPath-Expression:

document.setX(„//vote/mccain“, 0);

Na dann, viel Spaß bei der Wartung dieser Kombination – man ändere die Struktur der Daten, und die XPath-Expressions müssen in einer ganz anderen Datei mit angepasst werden. Dafür gibt es leider noch kein Refactoring-Tool, was das macht, doch es entstehen schon große Projekte auf Basis von Ercatons. Mir ein Rätsel, wie man so ein Konglomerat von Sprachkonstrukten jemals stabil bekommen will.

Letztendlich wurde argumentiert, man bräuchte keine Klassen, sondern man schreibt in Ercatons die Instanzen(!) hin. Instanzen kann man klonen und erweitern mit Daten und Methoden. Sicher, das ähnelt z.B. dem Prototype-Konzept in JavaScript, das ja selbst auch keine Klassen kennt. Doch rein syntaktisch finde ich Ercatons zehnmal so kompliziert wie JavaScript, und ich dachte, man wolle komplizierte Sachen vermeiden? Außerdem, wie geht das denn, wenn ich zehn Millionen Adressen verwalten will, schreibe ich die dann alle in Ercaton-Instanzen? Nein, sie kommen in eine relationale Datenbank, hieß es. Naja, wie denn nun, Dokumente, Objekte oder relationale Daten – wir nehmen das, was uns grad passt, rühren kräftig um und heraus kommt eine Anwendung?

Liebe Leute, ich rege mich sonst nicht gleich so auf, aber das war wirklich abenteuerlich, was Ihr da gezeigt habt! Auf jeden Fall, ein echt heißer Abschluss dieser Jax, ich komme im nächsten Jahr gerne wieder.