Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Principali novità di Java 7 con codici di esempio

Digital Innovation Partner

Principali novità di Java 7 con codici di esempio

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:

if(o!=null) { Object o2=o.getSomething() if(o2!=null) return o2.getSomethingElse() };
return null;

after:

return o?.getSomethingh()?.getSomethingElse();

Automatic Resource Management (ARM)

before:

 BufferedReader br = new BufferedReader(new FileReader(path));
 try {
   return br.readLine();
 } finally {
   br.close();
 }

after:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {
  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 list = ["item"];
String item = list[0];
Set set = {"item"};
Map 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

static boolean booleanFromString(String s) {
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

Tags: , , , , , , , , , ,

Lascia un commento