Polyglotte Desktop-Entwicklung

Happy Birthday Griffon!

Alexander Klein
©S&SMedia

Im September 2008 erblickte Griffon mit Version 0.0 das Licht der Welt und wurde vor gut einem Jahr mit der Version 1.0 ‚erwachsen‘. Von einem Grails-Clone mauserte es sich zu einem eigenständigen Projekt mit eigener Codebasis und ‚zog aus‘, um eigene Wege zu gehen und hat mittlerweile auch Code an den Bruder zurück contributed.

Griffon ist wirklich groß geworden – mittlerweile wird es in 87 Ländern genutzt, besitzt zur Zeit 219 Plug-ins, unterstützt sechs UI-Toolkits (Swing, JavaFX, SWT, Qt, Pivot and Lanterna) und acht Sprachen (Java, Groovy, Scala, Clojure, Kotlin und andere).

Nachdem die Version 1.0 einige grundlegende Änderungen mit sich brachte, wurde die Entwicklung bewusst ruhiger, doch einige interessante Features kamen hinzu, die im Folgenden vorgestellt werden sollen.

Mit Release 1.1 wurde Internationalisierung zu einem Core-Feature, indem das i18n-Plug-in in den Kern übernommen wurde. Damit ist jede Griffon-Anwendung durch die Verwendung von griffon.core.i18n.MessageSource internationalisierbar. Neben den üblichen .properties Dateien werden Groovy-Skripte im Format von groovy.util.ConfigSlurper unterstützt, was bedingte oder auch generierte Texte ermöglicht. Weitere Informationen dazu können im Griffon Guide gefunden werden.

Doch eine Übersetzung von Texten ist nicht immer ausreichend. Bilder, Farben oder andere Resourcen müssen häufig ebenso abhänging vom java.util.Locale gewählt werden. Deshalb wurde ein Resourcenmanagement eingeführt. Ähnlich der Internationalisierung von Texten können die Ressourcen in einer .properties oder ConfigSlurper Datei je Sprache definiert werden und mit Hilfe von java.beans.PropertyEditor verwendet werden. Details hierzu stehen auch im Griffon Guide.

Sowohl Texte als auch Ressourcen können auch über Annotations im Stile von CDI injiziert werden. Mit @griffon.core.resources.InjectedResource annotierte Properties oder Felder bekommen die konvertieren Ressourcen automatisch zugewiesen. Hierzu existiert ein Blogartikel von Andres Almiray.

Mit dem Actions-Plug-in hatte Griffon schon von 1.0 eine komfortable Möglichkeit, Actions für z.B. Menüeinträge oder Buttons zu definieren und internationalisieren, doch war dies Swing-spezifisch. Mit Release 1.1 wanderte dieses Feature ebenso in den Kern und konnte somit Toolkit-agnostisch implementiert werden. Näheres hierzu im Griffon Guide im Kapitel über Controller.

Seit dem Release 1.2 wird Groovy in der Version 2.x verwendet, was an sich schon viele wichtige Features bietet. Zusätzlich besitzen nun Services ebenso einen Lifecycle wie schon vorher die anderen Griffon Artefakte wie Model, Views und Controller. Zudem können Properties von Services in Form einer DSL in Konfigurationsdateien ausgelagert werden um eine einfache Konfigurierbarkeit von Services zu gewährleisten. Näheres im Griffon Guide unter Services.

Mit Release 1.3 wurde die Liste der mitgelieferten java.beans.PropertyEditor erweitert und Referenzen innerhalb von Ressourcen- und Übersetzungsdateien eingeführt. Auch besteht nun ein Mechanismus um Code vor oder nach Controlleractions auszuführen (action interceptors). Dies ist vor allem für Plug-in-Entwickler interessant um die Laufzeitumgebung zu konfigurieren oder Querschnittsfunktionen zu implementieren.

Neben Verfeinerungen bestehender Features bietet nun Release 1.4 die Möglichkeit eigene Eventtypen, abgeleitet von griffon.core.Event zu definieren und somit das Event und die dazugehörigen Argumente zu bündeln. Erwähnenswert ist auch die Erweiterung der Konfigurations-DSL um den Zugriff auf Bintray-Resourcen zu vereinfachen.

Als im Mai 2008 die Idee zu Griffon von Danno Ferrin, James Williams, Guillaume Laforge und Andres Almiray geboren wurde, wusste keiner, wohin die Reise gehen würde. Heute, fünf Jahre später, stehen wir vor einem leistungsstarken und stabilen Framework zur polyglotten Entwicklung von Desktop-Applikationen mit einer großen und fantastischen internationalen Community, ohne die Griffon heute nicht existieren würde oder zumindest nicht das wäre was es ist.

Im Hinblick auf die Evolution von Swing zu JavaFX kann Griffon bestehenden und zu migrierenden Applikationen viel Arbeit abnehmen und wir sind voller Zuversicht, dass die Entwicklung ungebremst weiter geht.

Geschrieben von
Alexander Klein
Alexander Klein
Alexander Klein ist Advisory Consultant bei der BeOne Stuttgart GmbH und seit mehr als 15 Jahren im Java-Umfeld als Entwickler, Architekt und Trainer, hauptsächlich im Rich Application Umfeld, tätig. Er ist bekennender Groovy-Jünger und Commiter bei Griffon.
Kommentare

Schreibe einen Kommentar

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