Ich habe bereits über einen Bug in Java9 berichtet, der mich ziemlich überrascht hat. Wer aber beschreibt meine Überraschung, dass der Bug, der mich beim Umstieg von Java7 auf Java8 bereits angespuckt hat, wieder Speichel gesammelt hat?
Zunächst: ja, ich hätte drauf gefasst sein müssen, schließlich ging es mir beim Umstieg auf Java8 genauso.
Ich erstelle ja die Inhalte meiner Heimatseite im Zwischennetz mittels eines von mir selbst entwickelten und gepflegten statischen CMS. Als ich begann, Java9 zu testen, stellte ich komplett um - damit lief das statische CMS dann auch damit. Ich fand einen Bug in Java9 und wollte eine neue Version der Webseite online stellen.
Wer beschreibt mein Erstaunen als mein CMS - wie beim Umstieg von Java7 auf Java8 - alle Seiten mit neuen Erzeugungsdaten versah obwohl deutlich das originale bereits drin stand. Das Programm konnte das alte Datumsformat nicht mehr parsen und schuld daran war die Umstellung auf Java9. Das Testprogramm, das ich beim Umstieg auf Java8 benutzte, demonstriert das:
public class DateBug extends java.lang.Object
{
public static void main(java.lang.String[] args) throws java.text.ParseException
{
java.lang.String pattern="EEE, dd MMM yyyy H:m:s";
java.text.DateFormat rssf = new java.text.SimpleDateFormat(
pattern, java.util.Locale.GERMAN);
System.out.println("Java Version "+System.getProperty("java.version"));
System.out.println("SimpleDateFormat pattern; "+pattern);
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(cal.MONTH, 2);
System.out.println("Formatted Date: "+rssf.format(cal.getTime()));
}
}
Dieses Programm mit unterschiedlichen Java-Versionen ausgeführt lieferte folgende Ergebnisse:
Java Version 1.7.0_25
SimpleDateFormat pattern; EEE, dd MMM yyyy H:m:s
Formatted Date: Di., 14 Mrz 2017 19:4:14
für Java7,
Java Version 1.8.0_144
SimpleDateFormat pattern; EEE, dd MMM yyyy H:m:s
Formatted Date: Di, 14 März 2017 19:13:14
für Java8 und
Java Version 9.0.4
SimpleDateFormat pattern; EEE, dd MMM yyyy H:m:s
Formatted Date: Do., 15 März 2018 19:37:33
für Java9.
Man bemerke den Unterschied im Monat. Der Punkt hinter dem abgekürzten Wochentag taucht bei den ungeraden Java-Versionen auf und in den geraden nicht (Bevor mich jemand auf die nicht ausreichende Größe meiner Stichprobe aufmerksam macht - ich verlinke hier gerne meinen liebsten Mathematikerwitz).
Außerdem interessant, dass der Monat in Java9 mit identischem Formatstring plötzlich ausgeschrieben wird. Als ob man in einer funktionierenden Anwendung die GUI ohne jede Notwendigkeit auf JavaFX umstellt - wie ein geschätzter Kollege sagen würde: "Weil ers kann!". Oder - gerade gestern auf GitHub gefunden: Meine neue liebste Commit-Meldung - "Broke the program, but will lead to improvements."
Hat man nun ein Datum mit Java7 erstellt, kann Java8 dieses nicht mehr parsen - erstellte man eines mit Java8, kann man es mit Java9 nicht parsen.
Ich bin mir durchaus bewusst, dass ich wahrscheinlich der einzige bin, der das deutsche Datumsformat benutzt, Daten formatiert und später wieder parst und dazu für die Formatierung des Monats "MMM" nimmt - trotzdem ist das für mich ein Bug und kein Feature!
Und nachdem das zweimal hintereinander passiert ist frage ich mich, ob mich hier jemand verscheißern will!
Diese Mal wollte ich das nicht auf sich beruhen lassen und habe einen Bug dafür eingestellt. Der ist momentan "under Review" - internal review ID: 9052724.
In JDK 9, the default locale data uses data derived from the Unicode Consortium's Common Locale Data Repository (CLDR). So there are changes with respect to some locales and hence this exception. To use the JRE locale with JDK 9 set java.locale.providers to a value with COMPAT ahead of CLDR. :
-Djava.locale.providers=COMPAT, CLDR
16.04.2018
Die Umstellung auf Java9 in meinen eigenen Projekten ist abgeschlossen
25.02.2018
Nachdem ich bereits über den einen oder anderen Bug in Verbindung mit Java 9 berichtet habe, habe ich bereits wieder einen gefunden - und wieder verbunden mit der ach so tollen Erfindung des Java-Modulsystems
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
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.