A metà 2011 è stata rilasciata la versione 7 di Java [nickname Dolphin]. Due sono le grandi novità di questo rilascio:
- Java è ora marchiata Oracle (che ha acquisito Sun)
- La reference implementation è ora OpenJDK (l’implementazione open-source di Java), mentre per le passate versioni rimane HotSpot, la versione di Sun Oracle.
Le novità più interessanti, dal punto di vista delle API, sono:
- Una (nuova) versione delle API NIO 2 per la gestione e la navigazione del file-system (come ad esempio:
[Path](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html),[Files](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html)) - Supporto al multiprocessing (
ForkJoinTask/RecursiveTask) - La possibilità di usare instanze di String come argomento di switch: ``` switch (s) { case “foo”: break; case “bar”: break; case “foobar”: System.out.println(“it’s foobar!”); } ```
- Catturare diversi tipi di
Exceptioncon una sola catch [separando leExceptioncon un ‘|’]: ``` try { FileInputStream fi = new FileInputStream(“foo.txt”); } catch(FileNotFoundException | IoException e) { log.error(“error: not found or I/O Exception”); } ``` try-with-resource[Automatic Resource Management]: dentro ai blocchi try/catch/finally si rimanda la chiusura degli stream/connessioni al finally. Grazie atry-with-resourceè la stessa JVM che si occupa di fare ordine con le risorse utilizzate al termine del blocco. ``` try (FileOutputStream fos = new FileOutputStream(f)) { fos.write(buf, 0, len); } catch (Exception e) { log.error(e); } ```- Diamond operator (solo sintassi, evitiamo la ripetizione della classe usando i Generics): ``` List
foobar = new ArrayList<>(); ``` - Leggibilità dei valori numerici (specifichiamo un separatore ‘_’): ``` long accountNumber = 1234_5678_9012L; ```
- JDBC 4.1 (Annotazioni `@Select` e `@Update` per definire le query, `DataSet` sostituisce
ResultSet)