Was ist neu in Java 7, Teil 4: Integration
Seite 2: Datenbank und weitere Updates
Datenbank & Sicherheit
Die in Java 7 enthaltene JDBC-Spezifikation wurden auf die Version 4.1 gehoben. Ziel war hier die Integration des ARM (Automatic Resource Management, vgl. Teil 1 dieser Artikelserie). Auch verschiedene, rein funktionale Änderungen sind enthalten. Die RowSer-1.1-Spezifikation führt RowSetFactory und RowSetProvider ein. RowSetFactory erstellt die Instanzen:
myRowSetFactory = RowSetProvider.newFactory();
jdbcRs = myRowSetFactory.createJdbcRowSet();
Nunmehr können verschiedene RowSet-Implementierungen erzeugt werden, die die Möglichkeiten des jeweiligen JDBC-Treibers optimal ausnutzen. Auch die Java-eigene Datenbank JavaDB (Derby) ist in der Version 10.8.1.2 mit im Paket. Gegenüber der letzten Version haben sich deutliche Geschwindigkeitssteigerungen durch diverse Anpassungen ergeben.
Im Bereich Sicherheit hat sich funktional etwas getan. Die größte Neuerung ist hier die Integration des ECC (Elliptic Curve Cryptography) genannten Verfahrens in das JDK 7. Ein nativer Provider übernimmt hier die Implementierung der neuen ECC-Algorithmen (ECDSA/ECDH), und auch die JSSE (Java Secure Sockets Extension) kann jetzt ECC-Algorithmen nutzen. Das Verfahren bringt verschiedene Vorteile wie kleinere Schlüsselgrößen und schnellere Berechnung. Bisher war man auf zusätzliche Bibliotheken angewiesen, wenn diese Art von Schlüsseln verwendet werden sollte. Die Sun-JSSE-Erweiterung unterstützt die Transport Layer Security (TLS) in den Versionen 1.1 und 1.2 und ist konform zum RFC 5246. Darüber hinaus sind die unterschiedlichen internen Hash-Algorithmen, neue Verschlüsselungs-Suiten und Funktionen zur Unterstützung der Flexibilität, insbesondere bei der Aushandlung kryptografischer Algorithmen, hinzugekommen.
Weitere Updates und mehr JVM
Den XML-Stack hat man für Java 7 an seiner Basis überarbeitet und die entsprechenden Spezifikationen erneuert. JAXP ist in Version 1.4.5, JAX-WS in 2.2.4 und JAXB nun mit der Version 2.2.3 vertreten. Bei allen dreien ergänzen die Updates hauptsächlich Fehlerbehebungen und Verbesserungen bei der Geschwindigkeit.
Der Garbage Collector G1 ist schon seit einiger Zeit ein experimenteller Bestandteil der JVM. Java SE 7 bringt auch hier Neuerungen und Optimierungen – obwohl sich am experimentellen Status nichts geändert hat. Für die Produktion ist er daher noch keinesfalls zu empfehlen.
Anders die überarbeitete "geschichtete Kompilierung". Dabei nutzt die JVM die Tatsache, dass sie zwei verschiedene Just-In-Time (JIT) Compiler enthält. Während die "Client"-Version schnell startet und weniger Laufzeitoptimierungen durchführt, braucht die "Server"-Variante länger beim Starten, führt aber bessere Optimierungen durch. Mit dem JVM-Flag -server -XX:+TieredCompilation
lässt sich eine Kombination der beidem aktivieren. Gestartet wird mit dem "Client"-JIT, erst bei entsprechenden HotSpots kommt auch der "Server"-JIT hinzu und übernimmt die Optimierungen zur Laufzeit. Eine Implementierung dieses Ansatzes gab es schon vor einer Weile, brauchbar ist sie jedoch erst jetzt mit Java 7.