Abstracts


Java API for KML (JAK)

Referent:Florian Bachmann
Termin:Do. 01. Okt. 2009
Themengruppe:WebTechnologien
Abstract Die Java API for KML (JAK) bietet eine einfache und komfortable Möglichkeit, KML-Daten (Keyhole Markup Language) in Java zu bearbeiten. JAK ist eine objektorientierte API, die eine bequeme und einfache Nutzung von KML in bestehenden Java-Umgebungen ermöglicht. Die API wurde als Open-Source-Projekt unter der New BSD-License veröffentlicht und ist bei Google Code gehostet [http://code.google.com/p/javaapiforkml/].

KML ist eine XML-basierte Auszeichnungssprache (Markup Language), um Geodaten darzustellen. Bekannte Anwendungsfälle sind webbasierte Karten (2d - Google Maps) oder so genannte 'Earth Browser' (3d - Google Earth). Ursprünglich nur als proprietäres Datenaustauschformat für Google Earth entwickelt, wurde es im April 2008 dem Open Geospatial Consortium (OGC) übergeben und als offizieller Standard verabschiedet. Dies begünstigte die Verbreitung von KML, so dass mittlerweile die gängigen Earth Browser, wie z.B. NASAs Earth Wind und Microsofts Virtual Earth, KML unterstützen.

JAK deckt die Referenzimplementierung des von der OGC verabschiedeten KML Standards, ebenso wie Googles GX-Erweiterung für KML, komplett ab.
Die Besonderheit von JAK ist, dass die API automatisch aus dem von der OGC definierten Schema vollständig erzeugt wird. Dies bietet den Vorteil, dass JAK das zugrunde liegende Schema komplett widerspiegelt und somit Änderungen am Schema (infolge einer Schema-Weiterentwicklung) sofort in die API einfließen, dass manuelle Anpassungsarbeiten vermieden werden. Mit anderen Worten: Es entfallen aufwendige und fehleranfällige Anpassungsarbeiten per Hand eines jeden Elements, das im KML-Standard definiert ist. [http://code.google.com/p/xjcpluginjavaapiforkml/]

APIs für XML-Dialekte werden üblicherweise in Zwei-Schichten implementiert. Die erste Schicht besteht aus den automatisch generierten Klassen. Darüber wird eine zweite (meist) von Hand programmierte Schicht gelegt, die auf die untere Schicht zugreift und das semantische Modell sowie deren Zugriffsmethoden nach außen definiert.

JAK profitiert dabei von JAXB (Java Architecture for XML Binding). JAXB bietet die Möglichkeit, Java-Klassen aus dem von der OGC definierten KML-Schema heraus zu generieren. JAXB bietet einen Plugin-Mechanismus, der es ermöglicht, auf das semantische Modell des Schemas zuzugreifen der zu generierende Code kann beeinflußt werden. JAK macht sich diese Eigenschaft zunutze, um die semantische Schicht der API auch komplett automatisch zu generieren. Die künstliche Trennung der beiden Schichten hebt sich auf, der von Martin Fowler oftmals angeprangerte Generation Gap verschwindet.

Um die API zu nutzen, ist es nicht relevant den automatischen Generierungsprozess JAKs zu verstehen. Es reicht völlig aus, das Resultat des Generierungsprozess zu verwenden.