An Oliver, Andreas und Torsten (c’t und Closures)

Die c’t, an sich ein starkes Magazin, kommt dieses Mal mit einem peinlichen Artikel über Closures (Lambda-Ausdrücke) in Java 8 daher: Closures in aktuellen Programmiersprachen – c’t-Archiv, 17-2013, Seite 168, c’t – Inhalt 17-2013 – Seite 168. Obwohl die Syntax sehr lange bekannt und festgeklopft ist, basiert der Artikel auf Aufsätzen und Publikationen, die vor Jahren veröffentlicht wurden, namentlich auf http://www.javac.info/closures-v05.html. Der Aufsatz stammt von 2007, ist also fast sieben Jahre alt. Wenn der c’t-Artikel 2007 erschienen wäre, super! Jetzt nur peinlich. Schon September 2011, immerhin fast 2 Jahre her, machte Brian Goetz die C#-Syntax bekannt, was ein Wechsel der Symbole (jetzt -> statt vor Jahren =>) bedeutete. Auch Implementierungsdetails sind völlig anders und inkorrekt sagt der Beitrag:

Intern erzeugt der Compiler draus eine Interface und eine anonyme Klasse mit einer einzigen Funktion […]

Nein, das macht der Compiler natürlich nicht. Erst einmal gibt es in Java keine “Funktionen”, sondern nur Methoden, und dann nutzt der Compiler das in Java 7 eingeführte Invoke-Dynamic.

Der nächste Fehler im Artikel betrifft try-mit- Ressourcen, was in Java 7 schon längst implementiert wurde.

Java 8 – Alle Features komplett

Nach vielen Verzögerungen ist Java 8 nun Feature-komplett und befindet sich auf der (ziemlich langen) Zielgeraden. Voraussichtlich im März 2014 wird die neue Version mit der Unterstützung von Lambda-Ausdrücken in die Java-Geschichte eingehen. Lambda-Ausdrücke versprechen nicht nur klareren Code, sondern auch besser parallelisierbare Algorithmen. Daneben überzeugt Java 8 durch viele Detailverbesserungen und neue Bibliotheken.

Quelle: http://www.heise.de/developer/artikel/Was-Entwickler-mit-Java-8-erwartet-1932997.html

Java-Foren kommen und gehen

Erinnert sich noch jemand an http://www.javacore.de/ — bis es dann 2011 geschlossen wurde?

nach nunmehr 9 Jahren mit javaCore.de habe ich für mich den Entschluss getroffen die Plattform nicht mehr weiter zu führen. Ich habe schlicht und ergreifend zu wenig Zeit um mich diesem Thema noch weiter zu widmen. Allen, die dabei geholfen haben javaCore.de die ganze Zeit aufrecht zu erhalten, gilt mein Dank.

Das kann passieren, wenn es eine Privatperson betreibt.

Heute ist auf der Homepage zum Glück keine bebilderte Fortpflanzungserklärung oder sonstige Werbung, sondern einfach nur:

Seit dem 01/04/2011 ist die Community geschlossen!

javaCore.de bedankt sich bei allen Moderatoren und Community-Mitgliedern für die Zusammenarbeit, das rege Interesse und ihre langjährige Treue.

Mein erster Java-Blog-Eintrag….

… ist heute nicht mehr zu rekonstruieren. Am Anfang habe http://javainsel.blogg.de/ genutzt, heute schon lange tot, aber blogg.de gibt es immer noch. Im Archiv http://web.archive.org/web/20040321205354/http://javainsel.blogg.de/ geht der erste Eintrag auf den 17.03.2004 zurück, was heißt, dass ich schon über 10 Jahre blogge. Nach blogg.de folgte blogger.com von Google und seit einigen Jahren ist es eine eigene WordPress-Installation.

Q&A: JDBC ResultSet aus Text-Datei oder Excel füllen

Frage: Ich möchte ein ResultSet mit Daten aus einem Excel oder einem Textfile laden.

Antwort: Die Möglichkeit besteht. Dazu nutzt man einen JDBC-Treiber, der auf Textdateien arbeitet. http://csvjdbc.sourceforge.net/ (CsvJdbc Home) bietet das für Textdateien (CSV), für Excel gibt es so was auch, http://sourceforge.net/projects/xlsql/ (Excel JDBC Driver | Free Development software downloads at SourceForge.net).

Q&A: Optimiert der Java-Compiler die Multiplikation konstanter Faktoren?

Wenn ich in mein Quellcode schreibe:

int i = 60 * 1000;

Wie kompiliert javac das? Wird die Rechenoperation schon zur Compile-Zeit ausgeführt, oder erst zur Laufzeit?

Antwort: Diese "compile-time constant expression" optimiert der Compiler. Im Bytecode steht dann nur 60000. Siehe dazu auch http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28.