Secondo il calendario pubblicato,la versione finale di Java7 sarà rilasciata il 28 luglio 2011.
Sono già disponibili delle early build con le nuove features ma ovviamente non sono stable build.
Le migliorie del linguaggio:
- Invoke dynamic:estensione della JVM per rendere più facile e performante l’esecuzione dei linguaggi dinamici che girano con la JVM (es. Python). Permetterà ancora più ampia diffusione della JVM,ottimo!
- Modularizzazione:razionalizzazione delle librerie per ridurre le dipendenze fra le classi della JVM. Scopo:migliorare bootstrap della JVM (avvio) e diminuire il memory footprint
- Annotazioni sui tipi. Lo dice il nome.
Vediamo quali sono le principali novità a livello di codice (con degli esempi!):
- Null checking
- Automatic Resource Management (ARM)
- Language support for collections
- Improved exception handling
- Strings in switch
- Improved type inference
Null Checking:
before:
- return null;
after:
- return o?.getSomethingh()?.getSomethingElse();
Automatic Resource Management (ARM)
before:
- try {
- return br.readLine();
- } finally {
- br.close();
- }
after:
- return br.readLine();
- }
Chiamata implicita al close() alla fine del blocco try,valido per molti tipi di risorse,un file,una connessione al db,qualsiasi oggetto che attualmente deve chiamare esplicitamente la close()
Language support for collections
- List<String>list = ["item"];
- Set<String>set = {"item"};
- Map<String,Integer>map = {"key":1};
- int value = map["key"];
Improved exception handling
before:
- } catch (FirstException ex) {
- logger.error(ex);
- throw ex;
- } catch (SecondException ex) {
- logger.error(ex);
- throw ex;
- }
after:
- } catch (FirstException | SecondException ex) {
- logger.error(ex);
- throw ex;
- }
Strings in switch
- switch(s) {
- case "true":
- return true;
- case "false":
- return false;
- }
Improved type inference
- Map<String,List<String>>anagrams = new HashMap<>();
non è necessario riscrivere “<String,List<String>>” nella new

