java-forum.org ist wieder online

Das kam heute per E-Mail rein:

[…] das Java-Forum.org ist wieder online. Aufgrund einer heftigen DDoS-Attacke war das Forum für mehrere Tage offline. Der Angriff war so intensiv, dass die Netzwerkinfrastruktur von Profihost (alter Server von Vladimir) hierdurch massiv beeinträchtigt wurde. Aus diesem Grund wollte der Hoster Profihost die Seite nicht mehr online stellen. Entsprechende Daten auf der Festplatte von Profihost wurden leider auch nicht mehr gefunden. Alle Bemühungen schlugen fehl und uns waren leider die Hände gebunden.
Die zweite schlechte Nachricht ist, dass die Datenbank während der DDoS-Attacke gehackt wurde. Dabei wurde die Tabelle mit den Beiträgen des Forums geleert. Die Leute des Managed Servers von Vladimir haben leider keine tägliche Backups erstellt und Vladimir hatte selber nur ein Backup vom 11. Februar 2013, heißt also: Uns fehlen ca. 6000 erstellte Themen inklusive Beiträge die von Februar bis jetzt geschrieben wurden. 🙁
Mittlerweile befindet sich die Seite auf unserem Server. Absofort werden täglich jede Nacht automatisch Backups erstellt und extern gespeichert. Außerdem ist der neue Server um einiges leistungsfähiger als der alte und kann auch größere DDoS-Attacken standhalten.
Bei Störungen am Server wird umgehend ein Servicetechniker per SMS informiert.
Ich bitte die lange Ausfallzeit zu entschuldigen.

Ob man das Forum nutzen und erweitern möchte muss jeder für sich selbst entscheiden, eine Empfehlung ist stattdessen das http://forum.byte-welt.net/forums/6-Java-Forum.

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.

Google Guava: EvictingQueue in Version 15

Google Guava hat Folgendes ursprünglich geteilt:

EvictingQueue: a non-blocking, bounded queue
In Guava 15, we are introducing EvictingQueue [1], which is a non-blocking, bounded queue that automatically evicts (removes) elements from the head of the queue when attempting to add elements to a full queue. This is different from conventional bounded queues, which either block or reject new elements when full.
Java provides several Queue implementations, depending on what features you need. For example:
Unbounded, non-blocking: ArrayDeque, LinkedList, PriorityQueue
Unbounded, blocking: LinkedBlockingDeque, LinkedBlockingQueue, SynchronousQueue
Bounded, blocking: ArrayBlockingQueue, LinkedBlockingDeque, LinkedBlockingQueue
However, a bounded, non-blocking implementation is noticeably missing from the JDK. Like many of the JDK implementations, EvictingQueue is not thread-safe and does not permit null elements. If you need thread safety, you must wrap it in a synchronized wrapper (Queues#synchronizedQueue). If you need null elements, please give this wiki page [2] a read.
An EvictingQueue can be used to keep track of recent items in a bounded buffer, or even as a simple FIFO cache. Hopefully you’ll find it useful!
Cheers,
-+Kurt Alfred Kluever, Guavian
[1] http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/EvictingQueue.html
[2] https://code.google.com/p/guava-libraries/wiki/LivingWithNullHostileCollections