Java 14 Có Gì Mới?
Java là ngôn ngữ lập trình cấp cao, được phát triển bởi Sun microsystems, do James Gosling khởi xướng và phát hành năm 1995 như là một thành phần cốt lõi của nền tảng Java của Sun microsystems (Java 1.0 [J2SE]). Java chạy trên nhiều nền tảng khác nhau, như Windows, Mac và các phiên bản UNIX khác nhau.
Java được coi là một loại ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên lớp. Không giống như các ngôn ngữ lập trình thông thường, Java được thiết kế để biên dịch mã nguồn thành mã byte thay vì biên dịch mã nguồn thành mã máy hoặc dịch trực tiếp mã nguồn khi chạy. Sau đó, mã byte sẽ được thực hiện bởi môi trường thời gian chạy.
Đặc điểm của Java:
- Hướng đối tượng: Trong Java, mọi thứ đều là Object. Java có thể được mở rộng vì nó dựa trên mô hình Object.
- Nền tảng độc lập: Không giống như nhiều ngôn ngữ lập trình khác (C, C ++), khi Java được biên dịch, nó không biên dịch sang một máy tính cụ thể trên bất kỳ nền tảng nào, thay vì các byte mã độc lập với nền tảng. Mã Byte này được phân phối trên web và được dịch bởi Máy ảo (JVM) trên bất kỳ nền tảng nào nó đang chạy.
- Đơn giản: Java được thiết kế để dễ học. Nếu về cơ bản bạn hiểu khái niệm lập trình hướng đối tượng Java, có thể học ngôn ngữ này rất nhanh.
- Bảo mật: Với các tính năng bảo mật của Java, nó cho phép phát triển các hệ thống không có vi-rút và giả mạo. Kỹ thuật xác thực dựa trên mã hóa công cộng.
- Kiến trúc trung lập: Trình biên dịch Java tạo định dạng tệp đối tượng có kiến trúc trung tính, làm cho mã được biên dịch có thể chạy trên nhiều bộ xử lý, với sự hiện diện của hệ thống thời gian chạy Java.
- Portable: Là một kiến trúc trung lập và độc lập là tính năng quan trọng nhất khi nói về khía cạnh Portable của Java. Trình biên dịch Java được viết bằng ANSI C với một ranh giới di động gọn gàng, đó là một tập hợp con POSIX (giao diện hệ điều hành linh hoạt). Bạn có thể mang byte mã Java đến bất kỳ nền tảng nào.
- Mạnh mẽ: Java cố gắng loại bỏ các tình huống dễ xảy ra lỗi bằng cách nhấn mạnh chủ yếu là kiểm tra lỗi thời gian biên dịch và kiểm tra thời gian chạy.
- Đa luồng: Với tính năng đa luồng của Java, bạn có thể viết các chương trình có thể thực hiện đồng thời nhiều tác vụ. Tính năng này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru.
- Giải thích: Mã Byte của Java được dịch trực tiếp sang nền tảng ban đầu và nó không được lưu trữ ở bất cứ đâu.
- Hiệu suất cao: Sử dụng trình biên dịch Just-In-Time, Java cho phép thực thi với hiệu suất cao, phát hiện và gỡ lỗi nhanh.
- Phân phối: Java được thiết kế cho môi trường phân tán của Internet.
- Tính linh hoạt: Java được coi là năng động hơn C hoặc C ++ vì nó được thiết kế để thích ứng với môi trường đang phát triển. Các chương trình Java có thể mang một lượng lớn thông tin thời gian chạy, được sử dụng để xác minh và giải quyết quyền truy cập vào các đối tượng khi chạy.
Ứng dụng JAVA.
Java Development Kit - JDK
1. Khái niệm Java Development Kit.
Java Development Kit (JDK) - Bộ công cụ cho người phát triển ứng dụng bằng ngôn ngữ lập trình java) là một tập hợp những công cụ phần mềm được phát triển bởi Sun Microsystems dành cho các nhà phát triển phần mềm, dùng để viết những applet Java hay những ứng dụng Java - bộ công cụ này được phát hành miễn phí gồm có trình biên dịch, trình thông dịch, trình giúp sửa lỗi (debugger, trình chạy applet và tài liệu nghiên cứu.
Với 3 tỷ thiết bị chạy bằng Java, Java được sử dụng viết các ứng dụng trên hệ điều hành Android, các ứng dụng Destop, ứng dụng Web ...
Ngày 17 tháng 3 2020, Oracle đã phát hành bộ Kit Java Development 14. Với rất nhiều tính năng hỗ trợ cho người dùng.
2. Cách tải và cài đặt JDK 14.
Một số tính năng trong Java 14.
1. JEP 305: Kết hợp mẫu cho ví dụ (Preview).
Trước khi Java 14 ra mắt, chúng ta sử dụng để kiểm tra loại của đối tượng và chuyển sang một biến. instanceof-and-cast.
if (obj instanceof String)
{ // instanceof
String s = (String)obj; // cast
if ("jdk14".equalsIgnoreCase(s))
{
//...
}
}
else
{
System.out.println("not a string");
}
Bây giờ Java 14, chúng ta có thể Refactor trên mã như thế này:
if (obj instanceof String s)
{ // instanceof, cast and bind variable in one line.
if ("jdk4".equalsIgnoreCase(s))
{
//...
}
}
else
{
System.out.println("not a string");
}
Nếu là một thể hiện của, thì nó được truyền tới và được gán cho biến trung gian objStringStrings.
2. JEP 343 Công cụ đóng gói(Incubator)
Công cụ mới để gói một ứng dụng Java vào một gói nền tảng cụ thể. jpackage:
- Linux: .deb và .rpm
- MacOS: .pkg và .dmg
- Windows: .msi và .exe
3. JEP 345: NUMA-Aware bộ nhớ phân bổ cho G1
- Chế độ cấp phát NUMA-aware memory mới, cải thiện hiệu suất G1 trên các máy lớn.
- Thêm tùy chọn để kích hoạt nó.
+XX:+UseNUMA
4. JEP 349: Truyền phát sự kiện JFR
- Cải thiện JFR hiện tại để hỗ trợ truyền phát sự kiện, điều đó có nghĩa là bây giờ chúng ta có thể truyền phát các sự kiện JFR theo thời gian thực mà không cần phải chuyển các sự kiện đã ghi vào đĩa và phân tích thủ công.
- Trình ghi chuyến bay JDK (JFR) là một công cụ để thu thập dữ liệu chẩn đoán và định hình về một ứng dụng Java đang chạy. Thông thường, chúng tôi bắt đầu ghi âm, dừng nó, kết xuất các sự kiện đã ghi vào đĩa để phân tích cú pháp, nó hoạt động tốt để định hình, phân tích hoặc gỡ lỗi.
5. JEP 352: Bộ đệm Byte Điện tĩnh
FileChannel được cải tiến API để tạo MappedByteBuffer truy cập vào bộ nhớ non-volatile memory (NVM) – bộ nhớ có thể truy xuất dữ liệu được lưu trữ ngay cả khi đã được cấp nguồn. Ví dụ: tính năng này đảm bảo rằng mọi thay đổi có thể vẫn còn trong bộ đệm được ghi lại vào bộ nhớ.
6. JEP 358: Ngoại lệ NullPulum hữu ích
Cải thiện mô tả bằng cho biết biến là NULL. Thêm tùy chọn để bật tính năng này. NullPointerExceptions-XX:+ShowCodeDetailsInExceptionMessages
Một tệp Java đơn giản cho ra
.NullPointerException
import java.util.Locale;
public class Test
{
public static void main(String[] args)
{
String input = null;
String result = showUpperCase(input); // NullPointerException
System.out.println(result);
}
public static String showUpperCase(String str)
{
return str.toUpperCase(Locale.US);
}
}
JDK cũ sẽ kiểm tra theo cách và đưa ra:
$ /usr/lib/jvm/jdk-14/bin/java Test
Exception in thread "main" java.lang.NullPointerException
at Test.showUpperCase(Test.java:15)
at Test.main(Test.java:9)
JKD 14 kiểm tra theo -XX:+ShowCodeDetailsInExceptionMessages
$ /usr/lib/jvm/jdk-14/bin/java -XX:+ShowCodeDetailsInExceptionMessages Test
Exception in thread "main" java.lang.NullPointerException:
Cannot invoke "String.toUpperCase(java.util.Locale)" because "<parameter1>" is null
at Test.showUpperCase(Test.java:15)
at Test.main(Test.java:9)
7. JEP 363: Loại bỏ Trình thu gom rác quét đồng thời (CMS)
Java 9 - JEP 291 không chấp nhận Trình thu gom rác quét đồng thời (CMS) này và bây giờ nó đã chính thức bị xóa:
/usr/lib/jvm/jdk-14/bin/java -XX:+UseConcMarkSweepGC Test
OpenJDK 64-Bit Server VM warning: Ignoring option UseConcMarkSweepGC; support was removed in 14.0
8. JEP 362: Khấu hao các cổng Solaris và SPARC
Bỏ hỗ trợ cho các cổng Solaris / SPARC, Solaris / x64 và Linux / SPARC, hỗ trợ ít nền tảng hơn có nghĩa là phân phối nhanh hơn cho các tính năng mới.
9.JEP 366: Không sử dụng kết hợp ParallelScavenge & serialOld GC
Do ít sử dụng và nỗ lực bảo trì cao, Java 14 không chấp nhận sự kết hợp giữa các thuật toán GC thế hệ trẻ song song và thế hệ cũ.
/usr/lib/jvm/jdk-14/bin/java -XX:-UseParallelOldGC Test
OpenJDK 64-Bit Server VM warning: Option UseParallelOldGC was deprecated in version 14.0 and will likely be removed in a future release.
10. JEP 367: Xóa Công cụ và API Pack200
Java 11 - JEP 336 không dùng nữa và các công cụ và API trong gói và bây giờ nó đã chính thức bị xóa.
pack200unpack200Pack200java.util.jar
Kết.
Cảm ơn các bạn đã theo dõi bài viết, còn rất nhiều tính năng mới thú vị cho bản cập nhật JDK 14.
Nếu bạn biết tính năng mới hay mà bài viết mình chưa chia sẻ. Vui lòng comment bên dưới .