FreshMarker, eine frische Template Engine für Java

Dieser und weitere Beiträge werden sich mit der Template-Engine FreshMarker beschäftigen. Das Besondere an dieser Template-Engine ist, dass sie noch nicht existiert. Die Beiträge werden, parallel zur Entwicklung der Template-Engine, technische Entscheidungen und verwendete Konzepte beleuchten.

Eigene FreeMarker Direktiven in Java implementieren

Die FreeMarker Template Engine ist eine hervorragende Bibliothek um eigene Inhalte Template-basiert zu erzeugen. Es existiert eine reichhaltige Anzahl von Funktionen um auch exotische Anforderungen erfüllen zu können. Manches Mal wünscht man sich jedoch zusätzliche Funktionalitäten um die eigenen Anforderungen besser umsetzen zu können. Wie erstaunt ist man dann jedoch, wenn diese Wünsche schon längst erfüllt wurden.

Eigene Parser mit JavaCC 21 erstellen

Der Java Compiler Compiler (kurz JavaCC) ist ein Parser Generator für die Java Entwicklung. Aus einer bestehenden Grammatik erstellt dieses Programm Java Code, mit dem Eingaben gegen diese Grammatik geprüft und verarbeitet werden können. Bei JavaCC handelt es sich um einen alten Bekannten, schon 2002 nutzte ich das Tool für die CSS2 Verarbeitung in einem embedded HTML Browser.

“Play it again, Sam” – Spring Retry

Bei der Arbeit mit verteilten Systemen geschieht es immer wieder, dass manche Services nicht erreichbar sind. Dies kann an einem ungeplanten Wartungsfenster, einer unterbrochenen Verbindung oder einer Fehlfunktion liegen. In solchen Fällen wünscht man sich als Entwickler eine einfache Möglichkeit die fehlgeschlagene Aktion zu wiederholen. Im Spring Boot Umfeld wird diese Möglichkeit durch Spring Retry bereitgestellt.

Suchen mit Spring Data JPA Specification

Durch den Einsatz von Spring Data JPA in eigenen Projekten können Datenbankaktionen sehr einfach mit Hilfe von Repository Interfaces umgesetzt werden. Alle Zugriffe auf die Entitäten erfolgen über Methoden dieser Schnittstellen. Mit diesen vordefinierten Zugriffsmethoden und der Möglichkeit eigene Zugriffsmethoden zu deklarieren ist ein Großteil der üblichen Anwendungen abgedeckt. Einziger Nachteil dieser Methoden ist ihre feste Definition. Ein alternativer Ansatz, um die Suchen dynamisch zu generieren, verwendet die Schnittstelle Specification.

Das vergessene Erbe

Dieses Beitrag handelt nicht von dem bekannten Code Smell Refused Bequest (dem ausgeschlagenen Erbe), sondern von den vielen Featuren bekannter und unbekannter Bibliotheken, die in Vergessenheit geraten. Bei manchen dieser Bibliotheken wird man irgendwann auf die unangenehme Art auf die vergessenen Möglichkeiten hingewiesen. So wie jüngst die Bibliothek Log4j2 mit den Security Vulnerabilities CVE-2021-44228, CVE-2021-45046 und CVE-2021-45105.

Finger weg von Apache Commons

Wenn es eine beliebte Sammlung von Bibliotheken für Java Entwickler gibt, dann ist dies wohl Apache Commons. Für jede Art von Problem eines Java Entwickler gibt es dort eine Methode, die eine einfache Lösung verspricht.

Build Automatisierung mit eigenen Mojos verbessern

Das automatisierte Erstellen von Software hat eine lange Tradition. GNU Make erblickte 1976 das Licht der Welt, Apache Ant im Jahr 2000, Apache Maven 2002 und Gradle 2007. Dies sind nur die bekanntesten Tools zur Build Automatisierung, viele weitere sind bis heute entstanden und es werden wohl noch einige erfunden werden. Alle diese Tools haben ihre Vorzüge und Nachteile und je nach Projekt und Technologie bietet sich eine Tool besonders an. Häufig kommt ein Entwicklungsteam mit den Maven Standard Plugins aus. Hin und wieder gibt es aber den Moment, wo ein zusätzliches Plugin wünschenswert wäre.

Camunda und JUnit 5

Schon im Beitrag Stammbaumprüfung mit BPMN wurde der Einsatz von BPMN Workflows in einer Workflow-Engine vorgestellt. Im damaligen Beitrag wurde die Workflow-Engine Flowable verwendet. In diesem Beitrag dreht es sich um die Workflow-Engine Camunda. Wer eine neuen Workflow erstellt hat, möchte diesen natürlich auch gerne im Vorfeld testen. Dafür stellt auch Camunda eine JUnit 5 Unterstützung bereit.

PDF Formulare mit LaTeX und OpenPDF

Für manche Kollegen ist das Textsatzsystem TeX mit seinem Aufsatz LaTeX ein Dinosaurier. Dieser Dino ist aber quicklebendig und bietet immer wieder preisgünstige Lösungen für unerwartete Anforderungen.