SR-JRC | ein Framework für Java-Richclient-Anwendungen |
| SRJRCFrames ÜbersichtDies Framework entstand aus dem Projekt VdrAssistant, und als die Anzahl der Anwendungen, die SR-JRC-Framework einsetzten, zunahm, wurde es höchste Zeit, aus dem Framework ein eigenständiges Hauptprojekt zu machen. VdrAssistant entstand aus dem Wunsch, einen graphischen Gestalter für DVD-Menüseiten zu haben und natürlich wollte ich dazu Java einsetzen. Damals habe ich mehrere JRC-Frameworks ausprobiert, aber keines war so erweiterbar und einfach zu benutzen, wie ich mir das vorgestellt hatte. Das führte zu dem Entschluss, die Anwendung komplett selbst zu entwickeln. Viele fragten mich, warum nimmst Du nicht ... Zuerstmal bin ich kein Anhänger des Chinesen-Prinzips - ich frage nicht danach, wem oder wie vielen meine Ideen gefallen. Zum anderen wollte ich schauen, ob es nicht möglich ist, DB-gestützte Anwendungen zu entwickeln, ohne sich mit SQL in der Anwendung herum schlagen zu müssen ... Die restlichen Fragen sind nicht ganz so einfach zu beantworten, deshalb will ich die Punkte aufführen, die mir bei der Entwicklung wichtig waren:
Es gibt sicher viele ähnliche Frameworks. Der Unterschied zu meinem ist der, dass ich eine Anwendung zu entwickeln hatte und mir deshalb immer zuerst überlegt habe, wie ich eine Klasse benutzen will. Erst dann ging ich daran, die Klasse mit Leben zu füllen. Dies Framework wurde nicht von einem Theoretiker am Reissbrett entworfen, sondern von einem Praktiker und das Konzept wird täglich auf die Probe gestellt. Aus diesem Grund kann ich von SRJRCFrames sagen: es ist benutzbar. Wer sich für die Internas des Frameworks interessiert, empfehle ich einen Blick ins Benutzerhandbuch zu werfen. So entstand eine Dienst-orientierte Architektur mit einem zentralen Dienste-Verwalter, bei dem jederzeit Dienste angemeldet oder verändert werden können. So kann z.B. eine dynamisch geladene Anwendung einen Dienst zur Verfügung stellen und eine andere dynamisch geladenen Anwendung den Dienst verwenden, ohne wissen zu müssen, woher er stammt. Die Datenzugriffsschicht arbeitet transaktionsorientiert, d.h. es gibt Schreib- und Leseaktionen, die einer Transaktion zugefügt werden können. Wenn alle Aktionen zugefügt sind, wird die Transaktion ausgeführt. Die Anwendung weiß nicht, wer letztlich für die Ausführung einer bestimmten Aktion zuständig ist. Auch das erhöht die Unabhängigkeit der Komponenten. Bei den Hilfsbibliotheken entschied ich mich für das Springframework, weil mir deren Pamphlet zusagte. Habe aber rasch den verwendeten Anteil auf ein Minimum zurück gefahren, denn die Implementierung kann leider nicht mit dem tollen Konzept aus dem Handbuch mithalten. Sprich, meiner Ansicht nach behindert Springframework mehr, als das es hilft (von Ausnahmen abgesehen). JGoodies hat mich dagegen sehr überzeugt und so wurden diese Bibliotheken zum Fundament meines Frameworks. Am meisten aber hat mich glazedlists begeistert! Mit Abstand das Beste, was ich im Java-Bereich bisher kennen lernte. Inzwischen wird auch der Datenbank-Treiber anhand der Konfigurationsdaten zur Laufzeit geladen und die Integration von postgreSQL steht kurz vor der Fertigstellung. Unter dem Punkt Einstieg werden die Grundlagen und eine einfache Beispielanwendung erklärt. Wer weitergehende Beispiele sucht, der sei auf das Projekt VdrAssistant verwiesen. Dort gibt es mehrere ladbare Anwendungen, Anwendungen die sich gegenseitig synchronisieren, Beispiele für Master-Detail-Dialoge und diverse Systemdienste, die exzessiv mit dem Betriebssystem und anderen (nicht-Java-)Anwendungen zusammen arbeiten. Die meisten Entwurfskriterien sind realisiert oder zumindest vorgesehen und z.B. VdrAssistant ist bereits produktiv im Einsatz. Trotzdem ist das Framework noch in der Entwicklungsphase, d.h. noch lange nicht fertig. Mittlerweile funktioniert auch der JDBC-Treiber von postgresql, sodass inzwischen mysql und postgresql zu den unterstützten Datenbanken zählen. Weitere werden dazu kommen, so wie es meine Zeit erlaubt. |