Nach meinem letzten Artikel zum Thema dWb+ habe ich dieses Jahr wieder einmal die Dokumentation kritisch gelesen und festgestellt, dass ein in den letzten Jahren immer mehr ausgebautes Feature dort noch nicht auftauchte.
Prinzipiell ist es ja so, dass es dWb+ erlaubt, beliebige bereits bestehende JavaBeans als Module benutzen zu können, ohne an ihnen Änderungen durchführen zu müssen - das ist einer der großen Vorteile der Lösung. Allerdings sind diese Module dann nicht für Parallelität oder Nebenläufigkeit optimiert - sie laufen alle im selben Thread und das kann zu Performanceengpässen führen.
Nun könnte man diese Module alle mühsam in ein Korsett wie das in diesem Kapitel beschriebene zwängen und immer den gleichen Boilerplate Code schreiben, um aus einer vorliegenden Implementierung eine threaded Variante zu erstellen. Genau vor dieser Art von fehleranfälliger, langwieriger Arbeit möchte aber dWb+ den Anwender schützen - was also ist zu tun?
Man kann feststellen, dass sich manche Funktionalitäten als semantische Kategorien begreifen lassen - so existieren etwa Generatormodule - Module, die auf ein beliebiges Eingangssignal hin ein Datum eines festgelegten Datentyp entsprechend ihrer internen Konfiguration als Ausgabe erzeugen. Eine weitere Kategorie sind Filter: Diese verfügen über einen Eingang, der Daten eines bestimmten Typs empfängt und diese einer - der inneren Konfiguration folgenden - Verarbeitung unterzieht und das Reultat (vom selben Fatentyp wie der Input) am Ausgang zur Verfügung stellt. Eine weitere solche Kategorie sind eindimensionale Funktionen - Diese Kategorie bildet klassische mathematische Funktionen ab und ist somit ein Spezialfall der Filtermodule. Und schließlich sei hier noch die aktell letzte solche Kategorie erwähnt: Validatoren nehmen einen oder mehrere Inputs spezifischer Datentypen und führt darauf eine - der inneren Parametrierung folgende - Validierung der Eingangsdaten aus - Ergebnis ist ein boolescher Wert abhängig davon, ob die Validierung erfolgreich war.
Für solche Kategorien existieren Annotations und entsprechende AnnotationProcessor-Klassen. Der Anwender muss lediglich die Java-Klassen, für die er threaded Module wünscht mit einer entsprechenden Annotation versehen und diese noch mit einigen wenigen Argumenten parametrisieren. Alles weitere übernimmt der AnnotationProcessor: Er erstellt automatisch eine entsprechende Wrapper-Klasse, die dann als Modul in dWb+ genutzt werden kann.
Die ausführliche Dokumentation mit Beispielen findet man wie immer im Dokumentationsprojekt als PDF oder EPUB.
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.