Advanced Java Services | Übersicht über die Sprach- und Syntaxerweiterungen durch Java 7 |
In Java 7 gibt es eine ganze Reihe nützlicher Neuerungen. Die allgemeine Meinung ist aber, daß es kein Major Release ist. Die ursprüngliche Planung konnte nicht eingehalten werden und einige der geplanten Neuerungen werden erst in Java 8 Wirklichkeit werden.
Java SE 7 Features and Enhancements (Oracle Release Notes)
Nachfolgende eine Übersicht
Quelle: http://donaldojdk.files.wordpress.com/2011/11/55j7.pdf
try-with-resources wird ausführlicher hier behandelt.
Suppressed Exceptions werden ausführlicher hier behandelt.
Neu sind die folgenden 3 Packages
Die neuen Klassen Files, FileSystem, Paths, Path ermöglichen ein vereinfachtes und präziseres Dateihandling. So können etwa kleine Dateien "in einem Rutsch" eingelesen werden.
Eine ausführliche Übersicht über die neuen Klassen und Möglichkeiten findet man hier.
Mit Hilfe der Klasse Filesystem kann man einen WatchService erhalten, mit dem auf Veränderungen in einem Dateisystem reagieren kann. Etwas ganz ähnliches gibt es in C# mit der Klasse FileSystemWatcher.
Ein ausführliches Beispiel zum WatchService findet man hier.
Dieses Feature wurde erst mit dem Update 4 Ende April 2012 von Java7 realisiert!
Die Pläne für einen verbesserten Garbage-Collector gehen bis ins Jahr 2004 zurück. Damals veröffentlichte Sun ein
Papier (04-g1-paper-ismm.pdf)
in dem ein neuer Algorithmus G1 (garbage first) vorgeschlagen wurde, der den CMS-Algorithmus (Concurrent Mark-Sweep) ablösen soll.
CMs arbeitet grob gesagt nach folgendem Schema:
Die Objekte im Speicher werden nach ihrer Lebensdauer in verschiedenen Bereichen abgelegt.Jeder Bereich deckt ein bestimmtes
Zeitintervall ab. Der Garbage Collector durchläuft diese Bereiche und löscht alle nicht mehr referenzierten Objekte.
Dies führt mit der Zeit zu einer Fragmentierung des Speichers. Beim dadurch notwendigen Defragmentieren müssen Objekte umkopiert
werden. Dazu muß aber die VM immer wieder mal kurz angehalten werden, was Performance kostet.
G1 setzt Wahrscheinlichkeitstheorie ein. In vielen Fällen kann man davon ausgehen, daß, je länger ein Objekt existiert
es wahrscheinlicher wird, daß es nicht mehr gebraucht wird. G1 teilt deswegen den Speicher in 1MB Bereiche ein und versucht
vorauszusagen, wann die Objekte in diesen Bereichen ihre Lebenszeit überschritten haben.