Risposte:
Questo è il riepilogo delle nuove funzionalità di Java 7 dalla pagina delle funzionalità di OpenJDK 7 :
vm JSR 292: supporto per linguaggi tipizzati dinamicamente (InvokeDynamic) Controllo rigoroso dei file di classe lang JSR 334: Miglioramenti in piccole lingue (Project Coin) core Aggiorna l'architettura class-loader Metodo per chiudere un URLClassLoader Aggiornamenti di concorrenza e raccolte (jsr166y) i18n Unicode 6.0 Miglioramento delle impostazioni locali Impostazioni internazionali dell'utente e dell'interfaccia utente separate ionet JSR 203: più nuove API I / O per la piattaforma Java (NIO.2) Provider di file system NIO.2 per archivi zip / jar SCTP (Stream Control Transmission Protocol) SDP (Sockets Direct Protocol) Usa lo stack IPv6 di Windows Vista TLS 1.2 sec Crittografia a curva ellittica (ECC) jdbc JDBC 4.1 pipeline XRender client per Java 2D Crea nuove API della piattaforma per le funzionalità grafiche 6u10 Aspetto di Nimbus per Swing Componente Swing JLayer Sintetizzatore di suoni Gervill [NUOVO] web Aggiorna lo stack XML MBean avanzati mgmt [AGGIORNATO]
Questo:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
diventa:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Puoi dichiarare la chiusura di più di una risorsa:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
int one_million = 1_000_000;
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
int binary = 0b1001_1001;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
diventa:
Map<String, List<String>> anagrams = new HashMap<>();
Questo:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
diventa:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
Questo:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
diventa:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
classe, con metodi statici per evitare di dover controllare i riferimenti nulli. Esempio: if (obj != null && obj.equals(anotherObj))
diventaif (Objects.equals(obj, anotherObj))
Decora i componenti con la classe JLayer:
La classe JLayer è un decoratore flessibile e potente per componenti Swing. La classe JLayer in Java SE 7 è simile nello spirito al progetto del progetto JxLayer su java.net. La classe JLayer era inizialmente basata sul progetto JXLayer, ma la sua API si è evoluta separatamente.
Stringhe nell'istruzione switch :
In JDK 7, possiamo usare un oggetto String nell'espressione di un'istruzione switch. Il compilatore Java genera un bytecode generalmente più efficiente dalle istruzioni switch che utilizzano oggetti String rispetto alle istruzioni concatenate if-then-else.
Inferenza del tipo per istanza generica:
Possiamo sostituire gli argomenti di tipo richiesti per richiamare il costruttore di una classe generica con un set vuoto di parametri di tipo (<>) purché il compilatore possa dedurre gli argomenti di tipo dal contesto. Questa coppia di parentesi angolari è chiamata informalmente il diamante. Java SE 7 supporta l'inferenza di tipo limitata per la creazione di istanze generiche; è possibile utilizzare l'inferenza del tipo solo se il tipo parametrizzato del costruttore è ovvio dal contesto. Ad esempio, il seguente esempio non viene compilato:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
In confronto, il seguente esempio viene compilato:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Cattura di più tipi di eccezioni e rilancio delle eccezioni con il controllo del tipo migliorato:
In Java SE 7 e versioni successive, un singolo blocco catch può gestire più di un tipo di eccezione. Questa funzione può ridurre la duplicazione del codice. Considera il seguente codice, che contiene codice duplicato in ciascuno dei blocchi catch:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
Nelle versioni precedenti a Java SE 7, è difficile creare un metodo comune per eliminare il codice duplicato perché la variabile e ha tipi diversi. Il seguente esempio, valido in Java SE 7 e versioni successive, elimina il codice duplicato:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
La clausola catch specifica i tipi di eccezioni che il blocco può gestire e ogni tipo di eccezione è separato da una barra verticale (|).
Il pacchetto java.nio.file
Il java.nio.file
pacchetto e il relativo pacchetto, java.nio.file.attribute, forniscono un supporto completo per l'I / O dei file e per l'accesso al file system. Un provider di file system zip è disponibile anche in JDK 7.
Miglioramenti del linguaggio di programmazione Java @ Java7
Riferimento ufficiale Riferimento
ufficiale con riferimento wiki java8
Simple, Object-Oriented, Portable, Platform independent, Secured...
Oltre a ciò che ha detto John Skeet, ecco una panoramica del progetto Java 7 . Include un elenco e una descrizione delle funzionalità.
Nota: JDK 7 è stato rilasciato il 28 luglio 2011, quindi ora dovresti andare al sito ufficiale di java SE .
Cambiamenti di lingua :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Modifiche alla libreria :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Modifiche alla piattaforma :
-support for dynamic languages
Di seguito è riportato il collegamento che spiega le nuove funzionalità aggiunte di JAVA 7, la spiegazione è chiarissima con i possibili piccoli esempi per ciascuna funzionalità:
Utilizzo dell'operatore Diamante (<>) per la creazione di istanze generiche
Map<String, List<Trade>> trades = new TreeMap <> ();
Utilizzo di stringhe nelle istruzioni switch
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Sottolineatura in letterali numerici
int val 12_15; long phoneNo = 01917_999_720L;
Utilizzo di una singola istruzione catch per generare più eccezioni utilizzando "|" operatore
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Non è necessario chiudere le risorse perché Java 7 fornisce l'istruzione try-with-resources
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
letterali binari con prefisso "0b" o "0B"
Il seguente elenco contiene collegamenti alle pagine dei miglioramenti in Java SE 7.
Swing
IO and New IO
Networking
Security
Concurrency Utilities
Rich Internet Applications (RIA)/Deployment
Requesting and Customizing Applet Decoration in Dragg able Applets
Embedding JNLP File in Applet Tag
Deploying without Codebase
Handling Applet Initialization Status with Event Handlers
Java 2D
Java XML – JAXP, JAXB, and JAX-WS
Internationalization
java.lang Package
Multithreaded Custom Class Loaders in Java SE 7
Java Programming Language
Binary Literals
Strings in switch Statements
The try-with-resources Statement
Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
Underscores in Numeric Literals
Type Inference for Generic Instance Creation
Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
Java Virtual Machine (JVM)
Java Virtual Machine Support for Non-Java Languages
Garbage-First Collector
Java HotSpot Virtual Machine Performance Enhancements
JDBC