Archiv für Juli 2008

buschmais unterwegs:
mit drei Architekturvorträgen zur berlin.jar

Am 13. und 14. September findet die erste Java Konferenz in Berlin auf dem Campus der Fachhochschule für Technik und Wirtschaft Berlin statt. Mehr als 15 namhafte Referenten bieten über zwei Tage mit über 20 Fachvorträgen rund um das Thema Java ein attraktives Programm. Wir freuen uns, dass wir mit drei Fachvorträgen an der Premiere in Berlin mitwirken dürfen.
Im Einzelnen werden wir am Sonntag, den 14. September zu folgenden Themen referieren:

  • Integrationsmuster am Beispiel von Apache Camel
    (Tobias Israel)
  • Paradigmenhochzeit: Felix und ServiceMix in trauter Zweisamkeit vereint
    (Dirk Mahler)
  • Modellierung statischer Domänenmodelle mit Xtext
    (Frank Schwarz)

Wir freuen uns auf interessante Gespräche mit den Teilnehmern, Ausstellern und Referenten.

‘buschmais unterwegs:
mit drei Architekturvorträgen zur berlin.jar’ weiterlesen

Inszenierte Transparenz

Werden heute Java-Enterprise-Anwendungen entworfen, so muss als eine der ersten Entscheidungen die Art der Persistenz geklärt werden. Diese Frage bezieht sich dabei weniger auf den Datenspeicher – ein relationales Datenbanksystem kann stillschweigend vorausgesetzt werden – sondern auf den Umgang mit den Daten. Für den Architekten ergeben sich zwei grundlegende Marschrichtungen: Fasst er die Daten der Anwendung als grobgranulare, wenig vernetzte Dateneinheiten auf, so wird er zu einem tabellengetriebenen Ansatz tendieren und vorrangig Entwurfsmuster einsetzen, die dem relationalen Aggregatzustand der Daten geschuldet sind, so beispielsweise Row/Record Sets, Page Iterators oder Data Access Objects. Sieht der Architekt hingegen die Daten der Anwendung als feingranulare, stark vernetzte Entitäten an, so ist er mit einem objektorientierten Ansatz besser beraten. Da die Daten trotz objektorientierter Sichtweise in einer relationalen Datenbank landen, gilt es hier eine Brücke zwischen beiden Welten zu schlagen. Der Unterschied, oft verharmlosend als Impedanz-Unterschied bezeichnet, ist jedoch wohl bekannt und technisch beherrschbar [1].

Als Vermittler zwischen beiden Welten existieren Frameworks, die ein objekt-relationales Mapping realisieren, ohne dass der Anwendungscode davon berührt wird. Aus Sicht des Anwendungsentwicklers handelt es sich bei dem Datenbestand der Anwendung also um einfache Objekte, die Attribute besitzen, zueinander Assoziationen eingehen oder Eigenschaften vererben. Auch das Laden, Speichern, Aktualisieren oder Sperren von Objekten geschieht ohne gesonderte Mitwirkung des Anwendungsentwicklers. Objektorientiert sind ebenso Operationen auf den persistenten Objekten oder das Suchen nach persistenten Objekten in der Datenbank. Obwohl seitens der Datenbank weiterhin alles so aussieht, als ob es nach bester ERM-Manier modelliert worden wäre.

Diese enorme Abstraktion von der Speicherform der Daten bekommt man allerdings nicht zum Nulltarif. Neben architektonischen Regeln, die eingehalten werden müssen, damit sich der Zauber der Speicher-Transparenz tatsächlich einstellt, ist ein aufwändiges, explizites Mapping von Klassen auf Relationen vorzunehmen. Der hingegen oft kolportierte Performance-Verlust bei der Verwendung besagter Mapping-Frameworks, das sei nebenbei bemerkt, ist oft mehr gefühlt als real vorhanden. Aus Sicht der Gesamtanwendung ist er fast nie nachweisbar.

Sowohl hinsichtlich des Mapping-Verfahrens als auch hinsichtlich der architektonischen Spielregeln lässt sich festhalten, dass diese gut verstanden sind. Es ist sogar möglich, diese zu katalogisieren, um so einen Kanon des O/R-Mappings aufzustellen. Zu den allgemeinen Mustern lässt sich für jedes verfügbare O/R-Mapping-Framework dann präzise die konkrete Anwendung demonstrieren. Genau diese Absicht verfolgen wir mit dem Projekt OOPEX.

‘Inszenierte Transparenz’ weiterlesen

Transmission Impossible? Java5 Enumerationen und IIOP

Im September 2006 wird in der Java-to-IDL Revision Task Force Mailing List der Erweiterungsvorschlag für das Mapping von Java5-Enumerationstypen eingereicht [1]. Diesem Vorschlag wird ein Jahr später stattgegeben [2]. Die Java Language Specification für Java5 erscheint jedoch bereits 2005 - und das fast ein Jahr nach der ersten offiziellen Version von Java5 [3][4]. Erste Prototypen von Java5 standen der Allgemeinheit wahrscheinlich noch viel früher zur Verfügung. Damit vergingen mindestens drei Jahre seit der Verfügbarkeit der nativen Enumerationstypen in Java5 und deren Mapping auf CORBAs Interface Definition Language. Diese Verzögerung wirkt noch heute für all diejenigen nach, die den Versuch wagen, Java5 Enumerationsliterale über IIOP zu übertragen. Wie dies dennoch mit Java5-Bordmitteln möglich ist, beschreibt der Artikel im Folgenden.

‘Transmission Impossible? Java5 Enumerationen und IIOP’ weiterlesen