Archiv für März 2009

XML to the XStream

Donnerstag, 26. März 2009

Wer stand noch nicht vor dem Problem das “Allheilmittel”-Format XML parsen zu müssen?

Allein das Implementieren des DOM-Parsers war immer schon ein Aufwand, der zumindest mich immer davon abgeschreckt hatte. Wenn das alleine aber schon nicht genug gewesen wäre, wollen die Werte ja auch weiterverarbeitet werden. D.h. es muss noch ein Mapper geschrieben werden. Aufwand über Aufwand…

Doch wie so oft, ist ein “Retter in weißer Rüstung” zur Hilfe geeilt. Nachdem mehrere “Prinzen”, wie JAXB auf den Plan getreten sind, erschien letztens noch einer: XStream. Eine Bibliothek mit der XML-Mapping in beide Richtungen mit wenigen Zeilen möglich ist. Insbesondere das Einlesen ist extrem einfach.

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>
Person newJoe = (Person)xstream.fromXML(xml);

Und schon hat man sein Objekt. Hierbei sollte man jedoch Vorsicht walten lassen. Xstream ruft standardmäßig keinen Konstruktor auf. Das bedeutet, eigene Variablen, die nicht in der XML-Datei stehen werden gegebenenfalls nicht initialisiert. Wer darauf angewiesen ist, muss einen eigenen Converter registrieren.

Das Schreiben mit XStream ist ebenso einfach, wenngleich nicht so elegant. Vor allem bei Klassen, die viele Hilfsfelder haben, müssen diese mittels omitField von der Serialisierung ausgeklammert werden. Ein transient vor dem Attribut hilft da glücklicherweise. Es sei hier angemerkt, dass auf Feldebene gearbeitet wird. Man kann also keine Felder “verstecken”, da auch vor private nicht Halt gemacht wird.
Hier wäre die Möglichkeit schön, alternativ alle Felder auszuschalten und nur explizit Felder freigeben zu können. Alternativ wäre interessant eher über die öffentlichen Zugriffsmethoden zu gehen.
Ebenfalls ist noch keine Vererbungsprüfung möglich. D.h. wenn ich gleiche Felder in verschiedenen Subklassen existieren, muss jede Subklasse einzeln behandelt werden, was es insbesondere bei Plugin-Architekturen schwierig macht, da dort die Subklassen nicht immer bekannt sind.

Zusammenfassend würde ich sagen, dass XStream ein netter Anfang ist, aber noch einiges an Optimierungspotenzial enthält.

if (Web 3.0 == Social Semantic Web)

Sonntag, 22. März 2009

Seit dem Erfolg von Web 2.0 und der damit verbundenen Sozialisierung des Webs steht die Frage nach dem nächsten Schritt im Raum. Wenn man sich die Blogs so durchliest wird meistens auf die technische Linie geschaut. Das semantische Netz -  ein Wunsch(-traum?), der schon einige Jahre anhält und immer noch nicht unmittelbar greifbare Nähe gerückt ist. Auf http://www.foerderland.de findet man zumindest einige staatliche Forschungsprojekte, aber dabei ist es auch bis jetzt mehr oder minder geblieben.

Die Frage ist also: “Was bringt Web 3.0?” – wenn es so etwas überhaupt noch geben wird. Eine Konferenz, die aktuell stattfindet befasst sich genau mit dieser Frage. Wird das Web 3.0 das Social Semantic Web?

Nehmen wir mal an, das es so kommen wird. Welche Geschäftsmodelle bringt Web 3.0? Nachdem bereits im Web 2.0-Sumpf die eine oder andere Million versackt ist, frage ich mich, was soll etwas so “schwammiges” wie die Kombination aus Social Communities und Semantic Web an planungssicheren und vor allem nachhaltigen Modellen oder Ideen liefern?
Wird es abseits aller “technischen Spielereien” durch die Einführung semantik-basierender Algorithmen überhaupt eine Neuerung geben?  Stehen wir schon im Web 3.0 und hat es die Marketingabteilung noch nicht gemerkt?

Es bleiben also 3 große Fragen, abseits der Technik:

  1. Welche inhaltliche Entwicklung bringt uns die nächste Stufe des Webs?
  2. Welche Geschäftsmodelle sind für ein Social Semantic Web sinnvoll?
  3. Wie gewährleistet man freien Zugang zu verwertbaren Inhalten?

Eine Entwicklung, die sich bereits abzeichnet ist die Entstehung von “gemeinnützigen” Seiten. D.h. neben dem “wir sind alle freunde”-Prinzip von Plattformen wie Facebook, Lokalisten oder MeinVZ steht soziales Engagement à la http://www.betterplace.org im Vordergrund.
Doch können sich solche Plattformen selbst tragen, ohne sich “zu verkaufen”, wie es so schön heisst. Welche Möglichkeiten stehen zur Verfügung, wenn Werbe-, Abonnement- und Premiummodelle nicht mehr greifen? Will ich mein eigenes Engagement teuer erkaufen?

Ein anderer Aspekt, der Grundlage der Entwicklung von Web 3.0 ist, ist die wachsende Datenflut. Insbesondere durch Web 2.0 hat sich der Datenumfang drastisch erhöht. Dadurch ist die zentrale Verwaltung von Daten nicht mehr sinnvoll umsetzbar. Es wird nötig dezentrale Daten über ein ausgeklügeltes Mapping von Metadaten zu Orten im Netz auffindbar zu machen.

Doch hier bleibt die Frage nach der Verfügbarkeit eines solchen Dienstes, wobei vor allem zwei verschiedene Ansätze ins Spiel kommen. Einerseits werden spezifische Inhalte hinter digitale Panzertüren gelegt, so dass nur noch zahlende Kunden an diese Informationen herankommen. Andererseits werden die Dienste, die auf eigentlich freie Daten zugreifen können ebenfalls kostenpflichtig angeboten (Premiumdienste) um verwertbare Ergebnisse zu erhalten.
Hier muss, meiner Meinung nach, ein gewisses Umdenken bei bestimmten Stellen einsetzen. Qualität hat seinen Preis, aber qualitatives Wissen sollte nicht einer Elite vorbehalten sein.

Craptecs: ICQ 4 MINA

Donnerstag, 12. März 2009

Apache MINA ist ein Framework für die Erstellung performanter und skalierbarer Netzwerkapplikationen. Eine Besonderheit dieses Frameworks ist, dass die API asynchron ist und weitestgehend unabhängig von spezifischen Protokollen.

Im Rahmen eines Craptecs-Projektes soll im Laufe der nächsten Wochen eine Implementierung für das ICQ-Protokoll erstellt werden (siehe http://craptecs.blogspot.com/2009/03/proof-of-concept-icq-via-mina.html).

Wer Interesse daran hat, kann sich gern bei mir persönlich melden oder das craptecs-Team per IRC auf irc.freenode.org Kanal #craptecs aufsuchen. Wir würden uns freuen.