Java 7 Änderungen in der neuen Version Thomas Nagel 17. Juni 2012 Übersicht Syntax und Sprachelemente JDK Framework und UI JRE und VM Java Web-Start Juni 2012 Java 7 2 Syntax und Sprachelemente Binäre Literale, Unterstriche in Zahlen Strings in Switch-Labels Diamond-Operator Ressourcen in try-catch (u.a. mit JDBC) mehrere Exceptions in catch-Klauseln Juni 2012 Java 7 3 Binäre Literale, Unterstriche Binäre Literale: int x = 0b1001101; Unterstriche in Literalen: int summe = 1_345_998; Juni 2012 Java 7 4 Strings in Switch-Labels Vermeidet If-Else-Ketten alt: if(dto.getStatus().equals('beauftragt')) { } else if(dto.getStatus().equals('erledigt')) { } else if(dto.getStatus().equals('storniert')) { } neu: switch(dto.getStatus()) { case 'beauftragt': doA(); break; case 'erledigt': doB(); break; case 'storniert': doC(); break; } Juni 2012 Java 7 5 Diamond-Operator Vermeidet Wiederholungen alt: Map<String, List<Trade>> trades = new TreeMap<String, List<Trade>> (); neu: Map<String, List<Trade>> trades = new TreeMap <> (); Juni 2012 Java 7 6 Ressourcen in try-catch Sicheres Freigeben von Ressourcen auch im Fehlerfall. alt: public void oldTry() { try { fos = new FileOutputStream("movies.txt"); dos = new DataOutputStream(fos); dos.writeUTF("Java 7 Block Buster"); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); dos.close(); } catch (IOException e) { /*ignore*/} } } Juni 2012 Java 7 7 Ressourcen in try-catch /2 neu: public void newTry() { try ( fos = new FileOutputStream("movies.txt"); dos = new DataOutputStream(fos); ) { dos.writeUTF("Java 7 Block Buster"); } catch (IOException e) { e.printStackTrace(); } } Resourcen müssen das Interface java.lang.AutoCloseable implementieren durch die Methode close(). Juni 2012 Java 7 8 Multi-catch neue kürzere Form: public void multiCatch() { try { methodeDie3AusnahmenWirft(); } catch (ExceptionOne | ExceptionTwo | ExceptionThree e) { // log and deal with all Exceptions } } Juni 2012 Java 7 9 JDK Framework NIO2: Dateien kopieren und verschieben, Dateiänderungen beobachten Fork-Join-Framework, PhaserSynchronisation JDBC 4.1 Unicode 6.0 Juni 2012 Java 7 10 NIO2 Verbesserungen bei Dateisystemen, Verzeichnissen, Pfaden, Links Kopieren und Verschieben enthalten Änderungsüberwachung Juni 2012 Java 7 11 Fork-Join-Framework Parallelisierung aufwendiger Vorgänge Steuerung durch ForkJoinPool Ausführung durch n ForkJoinTasks Arten: RecursiveAction ohne Ergebnis, RecursiveTask mit Ergebnis Automatische Verteilung und Synchronisation durch den ForkJoinPool Juni 2012 Java 7 12 UI verbesserte Font-API neue Swing-Klasse JLayer Transparenz Fenster die nicht rechteckig sind JavaFX als Swing-Ersatz und -Update Juni 2012 Java 7 13 JRE und VM G1 Garbage Collector Large heap (64 bit konform) improved JMX Agent Juni 2012 Java 7 14 Java Web-Start und Plugin Windows-Version in os-Selektor Installation per JWS JNLP-File im Applet-Tag in HTML Kommunikation Java <-> JavaScript Juni 2012 Java 7 15 Nützlich für uns String in Switch-Labels Catch mit Ressourcen NIO Datei-Operationen Fork-Join-Tasks G1 Heap Font-API, Transparenz, JavaFX JMX-Improvements Juni 2012 Java 7 16 Weitere Informationen Oracle OTN Oracle Tutorials Java7 Doku auf dem Server Juni 2012 Java 7 17