Java Getriebe

Java und NetBeans

Eigenes „Custom Runtime Image“ für eine NetBeans Plattform Anwendung

Die neuen Releasezyklen von Java ab der Version 9 bringen auch das Problem, dass beim Kunden immer neue Versionen der Java Laufzeitumgebung vorhanden sein werden. Es ist nicht mehr vorauszusetzen, dass der Kunde immer die neueste Java Version installiert haben wird. Der Releasezyklus unserer eigenen Anwendung ist im Normalfall ein Jahr. In diesem Zeitraum werden also schon mal mindestens 2 neue Versionen der JDK/JRE veröffentlicht. Unsere Desktop-Anwendung auf ein anderes Modell zu stellen ist aus verschiedenen Gründen schwierig.
Read More

Extension Points in Ant

Ant ist das Buildsystem für die NetBeans Platform. Es ist zwar möglich eine Anwendung auf Basis der NetBeans Rich Client Platform (RCP) mit Hilfe von Maven oder Ant zu erstellen, aber für diese Basis selbst ist Ant notwendig. Es finden aktuell zwar auch einige Diskussionen dazu statt das Buildsystem von NetBeans zu wechseln, aber selbst mit dem aktuellen System wären einige Optimierungen möglich. Insbesondere eine Feature von Ant ist derzeit noch komplett ungenutzt: Extension Points. Read More

Ant: Manifest Dateien korrekt als Properties einlesen

Der Ant Task <property> ist nicht nur in der Lage Java Properties Dateien einzulesen und somit die einzelnen Variablen verfügbar zu machen, sondern auch manifest.mf Dateien, die für Jar-Archivdateien benötigt werden. Das liegt aber nicht unbedingt am Task selbst, sondern viel mehr an der Klasse java.util.Properties und dessen Fähigkeit neben dem Gleichheitszeiche = auch den Doppelpunkt und ein Leerzeichen als Trenner zwischen Schlüssel und Wert erkennt :

The key contains all of the characters in the line starting with the first non-white space character and up to, but not including, the first unescaped ‚=‘, ‚:‘, or white space character other than a line terminator. All of these key termination characters may be included in the key by escaping them with a preceding backslash character;

Leider gibt es in der Spezifikation der Manifestdatei einen kleinen Passus:

Line length: No line may be longer than 72 bytes (not characters), in its UTF8-encoded form. If a value would make the initial line longer than this, it should be continued on extra lines (each starting with a single SPACE).

Diese Einschränkung steht im Gegensatz zur Properties Spezifikation in der Folgezeilen durch einen Backslash \ am Ende der vorherigen Zeile gekennzeichnet werden. Der <property> kann also nicht einfach so jede Manifestdatei einlesen, ohne dass es zu Problemen führen würde. Read More

Ant-basierte Suite Projekte mit Jenkins erstellen

Auf dem letzten NetBeans Training wurde ich von Geertjan gefragt wie wir bei uns den Continuous Integration Server Jenkins dazu nutzen um unsere WZL Gear Toolbox automatisch generieren zu lassen. Das großen Problem ist, dass Jenkins zwar sehr einfach Maven Builds einbinden kann und zusammen mit Maven auch Suiteprojekte sehr einfach einzufügen ist aber für Ant-basierte Projekten funktioniert das so einfach nicht. Das Buildskript benötigt einige Informationen wo zum Beispiel die NetBeans Platform selber sich befindet. Ein so genannter „headless build“ wird von NetBeans selbst nicht unterstützt. Read More

8.3 Namen in Ant unter Windows ermitteln

Ich brauchte in einem Ant Skript unbedingt einen Pfad, der keine Leerzeichen enthält. Leider konnte ich nicht vorher definieren, welcher Pfad das zur Laufzeit des Skriptes sein wird. Da hatte ich keinen Einfluss drauf. Da ich aber wusste, das das Skript auf jeden Fall auf einem Windows Rechner laufen wird, bestand die einzige Möglichkeit darin die von Windows immer noch unterstützen alten DOS 8.3 Namen zu verwenden. Das Problem ist, „Ant“ selber kennt dafür keinen Befehl oder Attribute bei einem Task (oder ich habe ihn nicht gefunden!) Read More