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.
Vorhaben 2020
03.01.2020
Genau wie letztes Jahr habe ich auch dieses Jahr wieder ein "Listche" verfasst, um mir all die interessanten Vorhaben zu notieren, die ich mit mittlerem zeitlichen Horizont anzugehen gedenke.
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...Nach dem ersten Teil von mir als interessant eingestufter Vorträge des Chaos Communication Congress 2024 hier nun die Nachlese
Weiterlesen...Nach dem So - wie auch im letzten Jahr: Meine Empfehlungen für Vorträge vom Chaos Communication Congress 2024 - vulgo: 38c3:
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.