STT | Tên phiên bản | Ngày phát hành |
---|---|---|
1 | Java SE 8 | 2014-03-18 |
2 | Java SE 8 Update 5 | 2014-04-15 |
3 | Java SE 8 Update 11 | 2014-07-15 |
4 | Java SE 8 Update 20 | 2014-08-19 |
5 | Java SE 8 Update 25 | 2014-10-14 |
Trong năm 2014, Oracle đã cho phát hành Java phiên bản 8 trong đó bổ sung thêm rất nhiều tính năng mới . Chúng ta sẽ đi vào phân tích một số tính năng quan trọng trong phiên bản này ^^.
1.Lamda Expressions
(argtype arg...) -> { return some expression.. probably using these arguments }
Áp dụng Lambda, một thread có thể được thay đổi như sau:
Runnable oldRunner = new Runnable(){
public void run(){
System.out.println("I am running");
}
};
Runnable java8Runner = () ->{
System.out.println("I am running");
};
Cú pháp Lambda trong Java cho phép tự suy luận kiểu dữ liệu. Hãy xem xét các ví dụ có sẵn sau đây:
Comparator c = (a, b) -> Integer.compare(a.length(), b.length());
Ở đây, các kiểu của a, b được suy luận thành kiểu String khi phương pháp so sánh Integer.compare được thực hiện.
2. Kiểu dữ liệu chung Generic
SomeClass.method();
Có thể được gọi mà không cần quan tâm đến kiểu dữ liệu:
Kiểu dữ liệu được tự động suy luận giúp việc gọi các phương thức lồng nhau một cách tiện lợi hơn:
myCollection.sort().removeUseless().beautify();
3. Kiểu Stream Collection (java.util.stream)
List guys = list.getStream.collect(Collectors.toList())
cũng có thể được thực hiện song song như sau:
List guys = list.getStream.parallel().collect(Collectors.toList()
Một ví dụ khác rất tốt để thực hiện reduce một colletion thành một giá trị bằng cách gọi giải thuật reduce.
int sum = numberList.stream().reduce(0, (x, y) -> x+y);
hoặc,
int sum = numberList.stream().reduce(0, Integer::sum);
4. Giao diện chức năng (java.util.function)
5. Nashorn – Node.js trên JVM
6. Thay đổi Date/Time (java.time)
7. Kiểu Annotations
List<@Nullable String>
Cách khai báo này là hữu ích trong một số trường hợp. Ngoài mô tả các kiểu dữ liệu chung, nó còn được sử dụng trong các hàm khởi tạo và ép kiểu chuyển đổi.
new @NonEmpty @Readonly List(myNonEmptyStringSet)
new @Interned MyObject()
myString = (@NonNull String) myObject;
Ngay cả trong các khai báo mảng dữ liệu:
@NotNull String[] arr;
Các thuộc tính RuntimeVisibleTypeAnnotations và RuntimeInvisibleTypeAnnotations được sử dụng để quyết định việc file .class lưu các thông tin annotations.
8. Những thay đổi tích cực khác
String abc= String.join(" ", "Java", "8");
Trong gói Collections, các giao diện Comparator được cải tiến và bổ sung phương thức ví dụ như reversed (đảo ngược), giúp việc so sánh trở nên tuỳ biến dễ dàng trên nhiều lĩnh vực. Các thư viện khác như truy cập đồng thời và NIO cũng đã được cập nhật nhưng không có gì đáng chú ý để theo dõi và phù hợp với những thay đổi trong api.
/* Đỗ Minh Hiền */
Bình luận