Annotation Processing zur leichteren Erstellung von Modulen für dWb+

vorhergehende Artikel in: Java dWb+ Komponenten
28.07.2024

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.

Artikel, die hierher verlinken

Motion JPEG Erzeugung aus Java heraus

07.02.2025

Da ich mich in den letzten Wochen wieder einmal mit Javas Sicherheitsmechanismen und dem Erzeugen von Animationen beschäftigt habe, habe ich den Entschluss gefasst, die bisher mittels JMF AVIs in dWb+ zu erstetzen - nur wodurch?

Animationen mit Multi-Scale Truchet Patterns

07.02.2025

Ich hatte neulich hier einen Link zu Multi-Scale Truchet Patterns und habe seitdem den Algorithmus mit java umgesetzt und ihn als Teil meines Projekts zur Testdatengenerierung veröffentlicht.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Ticketsysteme sind lebende Wesen

    29.03.2020

    Hier zunächst wieder eine Triggerwarnung: Dieser Artikel wird meine Meinung abbilden. es kann sein, dass sie dem einen oder anderen nicht gefällt - das ist mir aber egal. Und wenn hier irgendwelche Schneeflocken mitlesen, dann sind die selber schuld.

    Weiterlesen...

Neueste Artikel

  • Weitere Experimente mit dem Clifford-Attractor

    Ich berichtete hier bereits über Experimente mit dem Clifford-Attractor, allerdings war ich noch Experimente unter geringfügig geänderten Parametern schuldig...

    Weiterlesen
  • Neues Feature in meinem Static Site Generator: externe URLs

    Es wurde wieder einmal Zeit für ein neues Feature in meinem Static Site Generator mittels dessen ich ja auch meine Heimatseite im Zwischennetz gestalte und verwalte...

    Weiterlesen
  • Eine Bestandsaufnahme

    Es kamen mehrere Faktoren zusammen: die Tatsache, dass ich nicht mehr ganz so kürzlich die 50 überschritten habe hatte ebenso darauf Einfluss wie das heutige trübe Wetter und auch der Fakt, dass ich bereits beinahe alle Wochenendpflichten erledigt habe. Der letzte Stein des Anstoßes war dann aber, dass sich heute zum 125. Mal der Geburtstag von Erich Fromm jährt.

    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.