Suche

UIs deklarativ entwickeln: Sapphire 0.6 zaubert Oberflächen

Hartmut Schlosser

Die Entwicklung von Oberflächen folgt oft einem ähnlichen Schema: Widgets auswählen, initialisieren, layouten und mit dem Modell synchronisieren. Nicht selten führt diese Vorgehensweise zu viel Boilerplate-Code, unter dem die eigentliche Absicht vergraben wird. Das Eclipse-Projekt Sapphire will hier Abhilfe schaffen, indem es die deklarative Beschreibung von UIs ermöglicht. Aktuell erschienen ist Version 0.6 des Projektes.

Sapphire wurde im Juni 2010 von Oracle an die Eclipse Foundation übergeben – die Codebasis stammte ursprünglich aus dem Oracle Enterprise Pack for Eclipse. Als Hauptkonzept wird dabei der Property-Editor verwendet, der passend zur darunter liegenden Property gerendert wird. Für das UI-Layout unterstützt Sapphire eine breite Palette an SWT/JFace und Eclipse-spezifischen Komponenten wie das Eclipse Forms API, den grafischen Editor Graphiti, JDT-Funktionen und die TabbedPropertyView. Das Modell besteht aus XML-Dateien, die durch ein annotiertes Interface beschrieben werden.

Im JAXenter-Interview beschreibt Projektleiter Konstantin Komissarchik die Vorteile des Sapphire-Ansatzes:

The benefit of Sapphire’s approach is that the developer tells the system what he wants to accomplish rather than how to do it. Using Sapphire, the developer says „I want to edit LastName property of the person object.“ Using widget toolkit like SWT, the developer says „create label, create text box, lay them out like so, configure their settings, setup data binding and so on.“

With Sapphire, similar data patterns will get surfaced in the UI in a similar manner. Not only that, but the UI definition is inherently more portable. Since Sapphire doesn’t prescribe the exact manner in which a given property is to be edited, the implementer of a renderer can choose an approach that makes the most sense for the platform they are targeting. The same UI definition can produce an SWT application for rich desktop experience and a Web application designed to work in an old browser under bad network conditions.

Das 0.6-Release kommt mit einem verbesserten Support für Versionen und Versionsbeschränkungen daher. Reduziert wurde zudem die Größe des generierten Codes, überarbeitete Entry Points runden das Release ab. Detaillierte Angaben zu den Neuerungen finden sich in der Release-Dokumentation.

Empfehlen können wir für alle Sapphire-Interessierten den Artikel „Deklaratives UI-Design mit Sapphire“ von Nepomuk Seiler, in dem die Grundkonzepte gut vorgestellt werden. Nepomuks Fazit lautet:

Eclipse Sapphire ist ein noch sehr junges Projekt, was sich in größeren API-Änderungen mit jeder neuen Version bemerkbar macht. Dennoch sieht man das vorhandene Potenzial an den noch Sapphire-spezifischen Annotationen. Denkbar wäre die UI-Generierung aus JPA-Annotationen, was die Erstellung von UIs für CRUD-Anwendungen erheblich vereinfachen würde.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.