OpenJDK mit Java FX

Heute versuchten wir ein JavaFX-Projekt zu erstellen. Die letzte Zeit hatten wir Adopt OpenJDK für die Java-Entwicklung verwendet. Aber wie wir heute feststellen mussten, hat Adopt OprnJDK kein OpenJFX dabei. Die Anleitungen um OpenJFX rein zu frickeln, ist sehr lang. Viel zu umständlich. Lösung? Einfach das OpenJDK von Amazon Corretto verwenden, dort ist Java FX gleich dabei.

Java – for-each rettet einen

Heute sollte ich einen Fehler im fremden Code heraus finden. Das Java-Programm warf folgende Exception aus:

java.util.ConcurrentModificationException

Tja, es wurde auf jeden Fall von einer ArrayList-Collection geworfen. Meine erste Vermutung war, das zwei Threads auf dieser ArrayList schreiben. Also auf den thread-sicheren Vector umsteigen? Hat aber nichts geholfen.

Weiterlesen

Java – Achtung Falle: Boolean parsen

Heute musste ich aus einem XML-File eine Boolean-Konfiguration laden. Das habe ich nicht das erst mal gemacht, aber es ist auch nichts, was ich täglich mache:

Element node = element.getChild("Editor");
String str = node.getAttributeValue("Overwrite"); 
// str hat "true"
m_settings = new EditorSettings(Boolean.getBoolean(str));

Bitte einfach mal den Code auf sich wirken lassen… Weiterlesen

Java – immutable Objects

Wenn wir Software entwickeln, ist eines unserer Ziele unvorhersehbare Seiteneffekte zu vermeiden. Ich war mal vor knapp zehn Jahren in einem Projekt, in dem ein Kollege bei aufgetauchten Fehlern im System zum Auftraggeber sagte „Oh! Das ist leider ein Seiteneffekt.“. Irgendwann meinte der Auftraggeber genervt „Ich will das Wort Seiteneffekt nicht mehr hören!“.

Wie kann man solche Fälle minimieren? Ein Punkt ist die richtige Datenkapselung, wie ich hier bereits zeigte. Ein weiterer Punkt ist, Daten einfach unveränderlich zu machen. Denn wodurch entstehen mysteriöse Seiteneffekte? Wenn sich Objekte im Wert ändern, ohne das man es selbst veranlasst oder mitbekommen hat! Weiterlesen