Optionale Argumente in Java

Es ist schon viele Jahre her, dass ich in einer internen Schulung meine Kollegen auf die Annehmlichkeiten einer Closure hingewiesen habe. Viele Dinge können eleganter und effizienter formuliert und auch die nebenläufige Programmierung kann strukturierter werden. Leider hat es aber sehr lange gedauert, bis mit den Lambdas dieses Feature auf der Java Plattform angekommen ist. Und es gibt noch mehr Sprachfeatures aktueller dynamischer Sprachen, die wünschenswert sind.

mehr ...

Ant Lifecycle

Im ersten Artikel der geplanten Ant Serie habe ich beschrieben, wie meiner Meinung nach ein wiederverwendbares Buildsystem aussehen sollte. Dort wurde ein projektspezifisches build.xml postuliert, in dem grundsätzliche Einstellungen des Projekts vorgenommen wurden. Die eigentliche Logik des Builds findet sich dann einer wiederverwendbaren Datei names build-root.xml, die in den Projektbuild importiert wird. Der weitere Aufbau eben dieser Datei soll in diesem Blogeintrag betrachtet werden.

mehr ...

Ant

Einige Jahre lang habe ich Ant genutzt, um die Übersetzung und Installation meiner Software-Projekte zu automatisieren. Doch nach und nach wurden diese Projekte auf andere Buildverfahren migriert, erst auf Maven und jetzt wird für die aktuellen Projekte in der Regel Gradle verwendet. Nachdem ich nach einer Abstinenz von etwa sechs Jahren wieder einmal mit Ant arbeiten zu musste zeigte sich, dass Ant immer noch in der Lage ist, in Funktionsumfang und Leistungsfähigkeit den Konkurrenten Parole zu bieten.

mehr ...

Charting mit D3.js

In meinem aktuellen Projekt bin ich von einem Kollegen auf eine der neuen JavaScript basierten Charting Bibliotheken hingewiesen worden: D3.js.

mehr ...

Objekt mit Statusübergang

Vor einiger Zeit habe ich für eie in Java entwickelte Web-Anwendung ein Objekt erstellen müssen, das erst über einen Genehmigungsprozess nach “Vier Augen Prinzip” tatsächlich Gültigkeit erlangt. Dabei wird durch einen ansonsten nicht weiter autorisierten Benutzer “0” eine Instanz des Objekts angelegt und erst nach der vollständigen Erfassung für eine Entscheidung freigegeben. Danach müssen zwei Entscheider, “1” und “2”, diesen Vorgang zur Überarbeitung zurückweisen, ablehnen oder genehmigen. Diese Prozess wird durch die nachfolgende Skizze vielleicht ein wenig deutlicher:

mehr ...

Relationen implementieren mit Hibernate

Mit hibernate verwende ich schon seit vielen Jahren ein verlässliches Framework, um Objektnetze in relationalen Datenbanken persistieren zu können. Auch wenn sich dieses Framework viel Mühe gibt, diese semantische Lüscke auszufüllen, gibt es doch immer wieder Momente, in denen die Unterschiede zwischen Objektnetzen einerseits sowie Datentupeln und Relationen andererseits aufblitzen. Dann kann es schon manchmal passieren, dass man aufgrund einer Wartungsaktivität eine geringfügige Änderung am Programmcode vornimmt und plötzlich treten Fehler in der Produktion (immer nur dort, nie in den Testumgebungen auf), die zu dauerhaftem Ärger führen können.

mehr ...

NullPointerException

Ich erinnere mich… Als vor einigen Jahren (1995) die erste Version der Programmiersprache Java veröffentlicht wurde, waren die in die Sprachdefinition integrierten Exceptions eines der Themen, die in unserer Firma heiss diskutiert wurden.

mehr ...