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
CI/CD mit shellcheck
13.10.2019
Ich habe mich entschlossen, in meinen diversen Shell-Projekten shellcheck als Mittel zur Qualitätssicherung einzusetzen.
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Git(lab|hub) Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In meinem $dayjob kam neulich die Frage auf, ob es möglich wäre, die aktuelle Softwareinstallation eines Linux-Systems als Software Bill of Materials (SBOM) zu exportieren.
Weiterlesen...Ich habe - motiviert durch meine Experimente zur Visualisierung von Paketabhängigkeiten in Linux-Installationen als interaktive Graphen - versucht, relationale Datenmodelle in ähnlicher Form zu visualisieren und dazu zwei Plugins für die sQLshell geschrieben.
Weiterlesen...Die Royal Institution hat in ihren Schätzen gegraben und die Christmas Lectures von Carl Sagan auf Youtube nochmals veröffentlicht. Meiner Ansicht nach unbedingt lohnenswert für alle, die Englisch verstehen!
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, muß 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 GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.