Câu trả lời:
Đây là bản tóm tắt các tính năng mới của Java 7 từ trang tính năng của OpenJDK 7 :
vm JSR 292: Hỗ trợ cho các ngôn ngữ được nhập động (InvokeDynamic) Kiểm tra tệp lớp nghiêm ngặt lang JSR 334: Cải tiến nhỏ về ngôn ngữ (Dự án Coin) Nâng cấp lõi kiến trúc trình nạp lớp Phương pháp đóng URLClassLoader Cập nhật đồng thời và bộ sưu tập (jsr166y) i18n Unicode 6.0 Nâng cao ngôn ngữ Riêng biệt ngôn ngữ người dùng và ngôn ngữ giao diện người dùng ionet JSR 203: Thêm các API I / O mới cho nền tảng Java (NIO.2) Nhà cung cấp hệ thống tệp NIO.2 cho các kho lưu trữ zip / jar SCTP (Giao thức truyền điều khiển luồng) SDP (Giao thức trực tiếp ổ cắm) Sử dụng ngăn xếp IPv6 của Windows Vista TLS 1.2 giây Mật mã đường cong Elliptic (ECC) jdbc JDBC 4.1 đường dẫn khách hàng XRender cho Java 2D Tạo các API nền tảng mới cho các tính năng đồ họa 6u10 Giao diện Nimbus cho Swing Thành phần Swing JLayer Bộ tổng hợp âm thanh Gervill [MỚI] web Cập nhật ngăn xếp XML mgmt MBeans nâng cao [CẬP NHẬT]
điều này:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
trở thành:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Bạn có thể khai báo nhiều tài nguyên để đóng:
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>>();
trở thành:
Map<String, List<String>> anagrams = new HashMap<>();
điều này:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
trở thành:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
điều này:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
trở thành:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
lớp mới , với các phương thức tĩnh để tránh phải kiểm tra các tham chiếu rỗng. Ví dụ: if (obj != null && obj.equals(anotherObj))
trở thànhif (Objects.equals(obj, anotherObj))
Trang trí các thành phần với Lớp JLayer:
Lớp JLayer là một trình trang trí linh hoạt và mạnh mẽ cho các thành phần Swing. Lớp JLayer trong Java SE 7 có tinh thần tương tự như lớp dự án JxLayer tại java.net. Lớp JLayer ban đầu dựa trên dự án JXLayer, nhưng API của nó phát triển riêng biệt.
Các chuỗi trong câu lệnh switch :
Trong JDK 7, chúng ta có thể sử dụng một đối tượng String trong biểu thức của một câu lệnh switch. Trình biên dịch Java thường tạo ra bytecode hiệu quả hơn từ các câu lệnh switch sử dụng các đối tượng Chuỗi so với các câu lệnh if-then-else được xâu chuỗi.
Nhập Suy luận cho Trường hợp Chung:
Chúng ta có thể thay thế các đối số kiểu cần thiết để gọi phương thức khởi tạo của một lớp chung bằng một tập hợp rỗng các tham số kiểu (<>) miễn là trình biên dịch có thể suy ra các đối số kiểu từ ngữ cảnh. Cặp dấu ngoặc nhọn này được gọi chính thức là hình thoi. Java SE 7 hỗ trợ kiểu suy luận hạn chế để tạo phiên bản chung; bạn chỉ có thể sử dụng kiểu suy luận nếu kiểu tham số hóa của phương thức khởi tạo là rõ ràng trong ngữ cảnh. Ví dụ, ví dụ sau không biên dịch:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Để so sánh, ví dụ sau sẽ biên dịch:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Bắt Nhiều Loại Ngoại lệ và Đánh lại các Ngoại lệ với Kiểm tra Loại Cải tiến:
Trong Java SE 7 trở lên, một khối bắt duy nhất có thể xử lý nhiều loại ngoại lệ. Tính năng này có thể làm giảm sự trùng lặp mã. Hãy xem xét đoạn mã sau, mã này chứa mã trùng lặp trong mỗi khối bắt:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
Trong các bản phát hành trước Java SE 7, rất khó để tạo một phương pháp chung để loại bỏ mã trùng lặp vì biến e có nhiều kiểu khác nhau. Ví dụ sau, hợp lệ trong Java SE 7 trở lên, loại bỏ mã trùng lặp:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
Mệnh đề catch chỉ định các loại ngoại lệ mà khối có thể xử lý và mỗi loại ngoại lệ được phân tách bằng một thanh dọc (|).
Gói java.nio.file
Các java.nio.file
gói và gói liên quan, java.nio.file.attribute của nó, cung cấp hỗ trợ toàn diện cho tập tin I / O và để truy cập vào hệ thống tập tin. Một nhà cung cấp hệ thống tệp zip cũng có sẵn trong JDK 7.
Cải tiến ngôn ngữ lập trình Java @ Java7
Tài liệu tham khảo chính thức Tham khảo
chính thức với tài liệu tham khảo wiki java8
Simple, Object-Oriented, Portable, Platform independent, Secured...
Ngoài những gì John Skeet đã nói, đây là tổng quan về dự án Java 7 . Nó bao gồm một danh sách và mô tả các tính năng.
Lưu ý: JDK 7 được phát hành vào ngày 28 tháng 7 năm 2011, vì vậy bây giờ bạn nên truy cập trang web java SE chính thức .
Thay đổi ngôn ngữ :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Thư viện thay đổi :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Thay đổi nền tảng :
-support for dynamic languages
Dưới đây là liên kết giải thích các tính năng mới được thêm vào của JAVA 7, giải thích rất rõ ràng với các ví dụ nhỏ có thể có cho từng tính năng:
Sử dụng toán tử Diamond (<>) để tạo phiên bản chung
Map<String, List<Trade>> trades = new TreeMap <> ();
Sử dụng chuỗi trong câu lệnh switch
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Dấu gạch dưới trong các ký tự số
int val 12_15; long phoneNo = 01917_999_720L;
Sử dụng câu lệnh bắt duy nhất để ném nhiều ngoại lệ bằng cách sử dụng “|” nhà điều hành
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Không cần đóng () tài nguyên vì Java 7 cung cấp câu lệnh 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
}
các ký tự nhị phân có tiền tố “0b” hoặc “0B”
Danh sách sau đây chứa các liên kết đến các trang cải tiến trong 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