Antworten:
Dies ist die Zusammenfassung der neuen Java 7-Funktionen auf der OpenJDK 7-Funktionsseite :
vm JSR 292: Unterstützung für dynamisch typisierte Sprachen (InvokeDynamic) Strikte Überprüfung von Klassendateien lang JSR 334: Kleine Sprachverbesserungen (Project Coin) Kern Upgrade der Class-Loader-Architektur Methode zum Schließen eines URLClassLoader Aktualisierungen von Parallelität und Sammlungen (jsr166y) i18n Unicode 6.0 Gebietsschemaverbesserung Trennen Sie das Gebietsschema des Benutzers und das Gebietsschema der Benutzeroberfläche ionet JSR 203: Weitere neue E / A-APIs für die Java-Plattform (NIO.2) NIO.2-Dateisystemanbieter für Zip / JAR-Archive SCTP (Stream Control Transmission Protocol) SDP (Sockets Direct Protocol) Verwenden Sie den Windows Vista IPv6-Stack TLS 1.2 sec Kryptographie mit elliptischen Kurven (ECC) jdbc JDBC 4.1 Client XRender-Pipeline für Java 2D Erstellen Sie neue Plattform-APIs für 6u10-Grafikfunktionen Nimbus Look-and-Feel für Swing Swing JLayer-Komponente Gervill Sound Synthesizer [NEU] web Aktualisieren Sie den XML-Stack mgmt Enhanced MBeans [AKTUALISIERT]
Dies:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
wird:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Sie können mehr als eine Ressource zum Schließen deklarieren:
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>>();
wird:
Map<String, List<String>> anagrams = new HashMap<>();
Dies:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
wird:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
Dies:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
wird:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
Klasse mit statischen Methoden, um zu vermeiden, dass nach Nullreferenzen gesucht werden muss. Beispiel: if (obj != null && obj.equals(anotherObj))
wirdif (Objects.equals(obj, anotherObj))
Dekorieren Sie Komponenten mit der JLayer-Klasse:
Die JLayer-Klasse ist ein flexibler und leistungsstarker Dekorateur für Swing-Komponenten. Die JLayer-Klasse in Java SE 7 ähnelt im Geist dem JxLayer-Projektprojekt auf java.net. Die JLayer-Klasse basierte ursprünglich auf dem JXLayer-Projekt, die API wurde jedoch separat entwickelt.
Strings in switch Anweisung :
Im JDK 7 können wir ein String-Objekt im Ausdruck einer switch-Anweisung verwenden. Der Java-Compiler generiert im Allgemeinen effizienteren Bytecode aus switch-Anweisungen, die String-Objekte verwenden, als aus verketteten if-then-else-Anweisungen.
Typinferenz für generische Instanz:
Wir können die zum Aufrufen des Konstruktors einer generischen Klasse erforderlichen Typargumente durch einen leeren Satz von Typparametern (<>) ersetzen, solange der Compiler die Typargumente aus dem Kontext ableiten kann. Dieses Paar spitzer Klammern wird informell als Diamant bezeichnet. Java SE 7 unterstützt eine begrenzte Typinferenz für die Erstellung generischer Instanzen. Sie können die Typinferenz nur verwenden, wenn der parametrisierte Typ des Konstruktors aus dem Kontext ersichtlich ist. Das folgende Beispiel wird beispielsweise nicht kompiliert:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Im Vergleich dazu wird folgendes Beispiel kompiliert:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Abfangen mehrerer Ausnahmetypen und erneutes Auslösen von Ausnahmen mit verbesserter Typprüfung:
In Java SE 7 und höher kann ein einzelner Catch-Block mehr als einen Ausnahmetyp verarbeiten. Diese Funktion kann die Codeduplizierung reduzieren. Betrachten Sie den folgenden Code, der in jedem der catch-Blöcke doppelten Code enthält:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
In Releases vor Java SE 7 ist es schwierig, eine gemeinsame Methode zum Entfernen des duplizierten Codes zu erstellen, da die Variable e unterschiedliche Typen hat. Das folgende Beispiel, das in Java SE 7 und höher gültig ist, entfernt den duplizierten Code:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
Die catch-Klausel gibt die Arten von Ausnahmen an, die der Block verarbeiten kann, und jeder Ausnahmetyp wird durch einen vertikalen Balken (|) getrennt.
Das Paket java.nio.file
Das java.nio.file
Paket und das zugehörige Paket java.nio.file.attribute bieten umfassende Unterstützung für Datei-E / A und für den Zugriff auf das Dateisystem. Ein Zip-Dateisystemanbieter ist auch in JDK 7 verfügbar.
Verbesserungen der Java-Programmiersprache @ Java7
Offizielle Referenz
Offizielle Referenz mit Java8-
Wiki-Referenz
Simple, Object-Oriented, Portable, Platform independent, Secured...
Zusätzlich zu den Aussagen von John Skeet finden Sie hier eine Übersicht über das Java 7-Projekt . Es enthält eine Liste und eine Beschreibung der Funktionen.
Hinweis: JDK 7 wurde am 28. Juli 2011 veröffentlicht. Sie sollten daher jetzt zur offiziellen Java SE-Website gehen .
Sprachänderungen :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Bibliotheksänderungen :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Plattformänderungen :
-support for dynamic languages
Unten finden Sie den Link, der die neu hinzugefügten Funktionen von JAVA 7 erklärt. Die Erklärung ist kristallklar mit den möglichen kleinen Beispielen für jede Funktion:
Verwenden des Diamond (<>) -Operators für die generische Instanzerstellung
Map<String, List<Trade>> trades = new TreeMap <> ();
Verwenden von Zeichenfolgen in switch-Anweisungen
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Unterstrich in numerischen Literalen
int val 12_15; long phoneNo = 01917_999_720L;
Verwenden einer einzelnen catch-Anweisung zum Auslösen mehrerer Ausnahmen mithilfe von "|" Operator
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Ressourcen müssen nicht geschlossen werden (), da Java 7 eine Try-with-Resources-Anweisung bereitstellt
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
binäre Literale mit dem Präfix "0b" oder "0B"
Die folgende Liste enthält Links zu den Erweiterungsseiten 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