How many months until june 2nd 2023

Ngôn ngữ Java đã trải qua một số thay đổi kể từ JDK 1. 0 cũng như bổ sung nhiều lớp và gói vào thư viện chuẩn. Kể từ J2SE 1. 4, sự phát triển của ngôn ngữ Java đã được quản lý bởi Quy trình Cộng đồng Java [JCP], quy trình này sử dụng Yêu cầu Đặc tả Java [JSR] để đề xuất và chỉ định các bổ sung và thay đổi đối với nền tảng Java. Ngôn ngữ được chỉ định bởi Đặc tả ngôn ngữ Java [JLS]; . Vào tháng 9 năm 2017, Mark Reinhold, Kiến trúc sư trưởng của Nền tảng Java, đã đề xuất thay đổi lộ trình phát hành thành "6 tháng phát hành một tính năng" thay vì lịch trình hai năm như hiện tại. [1][2] Đề xuất này có hiệu lực cho tất cả các phiên bản sau và vẫn là lịch phát hành hiện tại

Ngoài các thay đổi về ngôn ngữ, các thay đổi khác đã được thực hiện đối với Thư viện lớp Java trong những năm qua, thư viện này đã phát triển từ vài trăm lớp trong JDK 1. 0 đến hơn ba nghìn trong J2SE 5. Toàn bộ API mới, chẳng hạn như Swing và Java2D, đã được giới thiệu và nhiều JDK ban đầu 1. 0 lớp và phương thức không được dùng nữa. Một số chương trình cho phép chuyển đổi chương trình Java từ một phiên bản của nền tảng Java sang phiên bản cũ hơn [ví dụ: Java 5. 0 nhập vào 1. 4] [xem các công cụ nhập ngược Java]

Về Lộ trình hỗ trợ Oracle Java SE,[3] phiên bản 19 là phiên bản mới nhất và các phiên bản 17, 11 và 8 là các phiên bản hỗ trợ dài hạn [LTS] hiện được hỗ trợ, trong đó Khách hàng của Oracle sẽ nhận được Hỗ trợ cao cấp của Oracle. Java 8 LTS, bản cập nhật công khai phần mềm miễn phí cuối cùng cho mục đích thương mại đã được Oracle phát hành vào tháng 3 năm 2022, trong khi Oracle tiếp tục phát hành vô thời hạn các bản cập nhật công khai Java 8 miễn phí để phát triển[3] và sử dụng cá nhân. [4] Java 7 không còn được hỗ trợ công khai. Đối với Java 11, Oracle sẽ không cung cấp hỗ trợ dài hạn cho công chúng; . [5]

Java 17 LTS [thứ 3] mới nhất được phát hành vào ngày 14 tháng 9 năm 2021. [6]

Tính khả dụng chung của Java 19 bắt đầu vào ngày 20 tháng 9 năm 2022. [7]

Bảng phát hành[sửa]

Tệp loại phiên bản
phiên bản định dạng[8]Phát hành
ngày Hết miễn phí
Cập nhật công khai[9][10][11][12][13][ . JDK Beta?1995??Phiên bản cũ, không còn được bảo trì. JDK 1. 0?Tháng 1 năm 1996??Phiên bản cũ, không còn được bảo trì. JDK 1. 145Tháng 2 năm 1997??Phiên bản cũ, không còn được bảo trì. J2SE 1. 2464th December 1998Tháng 9 2003?Phiên bản cũ, không còn được bảo trì. J2SE 1. 3478th May 2000??Phiên bản cũ, không còn được duy trì. J2SE 1. 44813th February 2002Tháng 10 2008Tháng 2 2013Phiên bản cũ, không còn được bảo trì. Java SE 54929th Tháng 9 năm 2004 Tháng 11 năm 2009 Tháng 4 năm 2015Phiên bản cũ, không còn được bảo trì. Java SE 65011 Tháng 12 năm 2006 Tháng 4 năm 2013 Tháng 12 năm 2018 cho Oracle[9]
Support UntilOld version, no longer maintained: JDK Beta?1995??Old version, no longer maintained: JDK 1.0?January 1996??Old version, no longer maintained: JDK 1.145February 1997??Old version, no longer maintained: J2SE 1.2464th December 1998September 2003?Old version, no longer maintained: J2SE 1.3478th May 2000??Old version, no longer maintained: J2SE 1.44813th February 2002October 2008February 2013Old version, no longer maintained: Java SE 54929th September 2004November 2009April 2015Old version, no longer maintained: Java SE 65011th December 2006April 2013December 2018 for Oracle[9]
Tháng 12 năm 2026 cho Azul[12]Phiên bản cũ, không còn được duy trì. Java SE 75128 ngày tháng 7 năm 2011 tháng 9 năm 2022 cho OpenJDK
Được Oracle duy trì cho đến tháng 5 năm 2015[16],
Red Hat cho đến tháng 8 năm 2020[17] và
Azul until September 2022[18]July 2022 for Oracle[9]
June 2020 for Red Hat[13]
December 2027 for Azul[12]Older version, yet still maintained: Java SE 8 [LTS]5218th March 2014OpenJDK currently maintained by Red Hat[19]
Tháng 3 năm 2022 cho Oracle [thương mại]
Tháng 12 năm 2030 cho Oracle [phi thương mại . Java SE 95321th Tháng 9 năm 2017Tháng 3 năm 2018 cho OpenJDK—Phiên bản cũ, không còn được duy trì. Java SE 105420th Tháng 3 năm 2018Tháng 9 năm 2018 cho OpenJDK—Phiên bản cũ hơn nhưng vẫn được duy trì. Java SE 11 [LTS]5525 ngày tháng 9 năm 2018OpenJDK hiện do Red Hat duy trì[20]
December 2030 for Azul[12]
May 2026 for IBM Semeru[14]
At least May 2026 for Eclipse Adoptium[10]
At least May 2026 for Amazon Corretto[11]December 2030 for Oracle[9]
November 2026 for Red Hat[13]Old version, no longer maintained: Java SE 95321th September 2017March 2018 for OpenJDK—Old version, no longer maintained: Java SE 105420th March 2018September 2018 for OpenJDK—Older version, yet still maintained: Java SE 11 [LTS]5525th September 2018OpenJDK currently maintained by Red Hat[20]
Tháng 9 năm 2026 cho Azul[12]
Tháng 10 năm 2024 cho IBM Semeru[14] . Java SE 125619th Tháng 3 năm 2019 Tháng 9 năm 2019 cho OpenJDK—Phiên bản cũ, không còn được duy trì. Java SE 135717th Tháng 9 năm 2019OpenJDK hiện do Azul duy trì[22]
At least October 2024 for Eclipse Adoptium[10]
At least September 2027 for Amazon Corretto[11]
At least October 2024 for Microsoft[21][15]September 2026 for Oracle[9]
September 2026 for Azul[12]
October 2024 for Red Hat[13]Old version, no longer maintained: Java SE 125619th March 2019September 2019 for OpenJDK—Old version, no longer maintained: Java SE 135717th September 2019OpenJDK currently maintained by Azul[22]
Tháng 3 năm 2023 cho Azul[12]—Phiên bản cũ, không còn được duy trì. Java SE 145817th Tháng 3 năm 2020Tháng 9 năm 2020 cho OpenJDK—Phiên bản cũ, không còn được duy trì. Java SE 155916th Tháng 9 năm 2020OpenJDK hiện do Azul duy trì[23]
Tháng 3 năm 2023 cho Azul[12]—Phiên bản cũ, không còn được duy trì. Java SE 166016th Tháng 3 năm 2021Tháng 9 năm 2021 cho OpenJDK—Phiên bản cũ hơn nhưng vẫn được duy trì. Java SE 17 [LTS]6114 ngày tháng 9 năm 2021OpenJDK hiện do SAP duy trì[24]
Tháng 9 năm 2029 cho Azul[12]
Tháng 10 năm 2027 cho IBM Semeru[14]< . Java SE 186222th Tháng 3 năm 2022Tháng 9 năm 2022 cho OpenJDK và Adoptium—Phiên bản ổn định hiện tại. Java SE 196320th Tháng 9 năm 2022Tháng 3 năm 2023 cho OpenJDK—Bản phát hành trong tương lai. Java SE 20—Tháng 3 năm 2023 Tháng 9 năm 2023 cho OpenJDK—Bản phát hành trong tương lai. Java SE 21 [LTS]—Tháng 9 năm 2023 Tháng 9 năm 2028 Tháng 9 năm 2031 cho Oracle[9]
At least September 2027 for Microsoft[15]
At least September 2027 for Eclipse Adoptium [10]September 2029 or later for Oracle[9]
September 2029 for Azul[12]
October 2027 for Red Hat[13]Old version, no longer maintained: Java SE 186222th March 2022September 2022 for OpenJDK and Adoptium—Current stable version: Java SE 196320th September 2022March 2023 for OpenJDK—Future release: Java SE 20—March 2023September 2023 for OpenJDK—Future release: Java SE 21 [LTS]—September 2023September 2028September 2031 for Oracle[9]

Phiên bản cũ hơn, vẫn được duy trì

JDK 1. 0[sửa]

Phiên bản đầu tiên được phát hành vào ngày 23 tháng 1 năm 1996. [25][26] Phiên bản ổn định đầu tiên, JDK 1. 0. 2, được gọi là Java 1. [26]

JDK 1. 1[sửa]

Những bổ sung chính trong bản phát hành vào ngày 19 tháng 2 năm 1997 bao gồm. [27]

J2SE 1. 2[sửa]

Bản phát hành vào ngày 8 tháng 12 năm 1998 và các bản phát hành tiếp theo thông qua J2SE 5. 0 đã được đổi tên thành Java 2 trước đây và tên phiên bản "J2SE" [Nền tảng Java 2, Phiên bản tiêu chuẩn] đã thay thế JDK để phân biệt nền tảng cơ sở với J2EE [Nền tảng Java 2, Phiên bản doanh nghiệp] và J2ME [Nền tảng Java 2, Phiên bản Micro]. Đây là một bản phát hành Java rất quan trọng vì nó đã tăng gấp ba lần kích thước của nền tảng Java lên 1520 lớp trong 59 gói. bổ sung chính bao gồm. [29]

J2SE 1. 3[sửa]

Những thay đổi đáng chú ý nhất trong bản phát hành ngày 8 tháng 5 năm 2000 là. [30][31]

java1. 3 là bản phát hành Java cuối cùng hỗ trợ chính thức cho Microsoft Windows 95. [32]

J2SE 1. 4[sửa]

J2SE 1. 4CodenameMerlinPhát hànhCông khaiTháng 10 năm 2008 [2008-10]Trả tiềnTháng 2 năm 2013 [2013-02]

Bản phát hành ngày 6 tháng 2 năm 2002 là bản phát hành đầu tiên của nền tảng Java được phát triển theo Quy trình Cộng đồng Java với tên gọi JSR 59. Những thay đổi lớn bao gồm. [33][34]

  • thay đổi ngôn ngữ
  • cải tiến thư viện

Hỗ trợ công cộng và cập nhật bảo mật cho Java 1. 4 kết thúc vào tháng 10 năm 2008. Các bản cập nhật bảo mật trả phí dành cho khách hàng của Oracle đã kết thúc vào tháng 2 năm 2013. [35]

Java SE 5[sửa mã nguồn]

Java SE 5CodenameTigerPhát hành Công khaiTháng 11 năm 2009 [2009-11]Trả tiềnTháng 4 năm 2015 [2015-04]

Bản phát hành vào ngày 30 tháng 9 năm 2004 ban đầu được đánh số 1. 5, vẫn được sử dụng làm số phiên bản nội bộ. Con số đã được thay đổi thành "phản ánh tốt hơn mức độ trưởng thành, ổn định, khả năng mở rộng và bảo mật của J2SE". [36] Phiên bản này được phát triển theo JSR 176

Java SE 5 bước vào giai đoạn kết thúc cập nhật công khai vào ngày 8 tháng 4 năm 2008; . Các bản cập nhật có sẵn cho khách hàng trả phí của Oracle cho đến tháng 5 năm 2015. [3]

Tiger đã thêm một số tính năng ngôn ngữ mới quan trọng. [37][38]

  • thuốc gốc. cung cấp sự an toàn kiểu thời gian biên dịch [tĩnh] cho các bộ sưu tập và loại bỏ nhu cầu đối với hầu hết các kiểu chữ [chuyển đổi kiểu] [được chỉ định bởi JSR 14]
  • Metadata. còn gọi là chú thích;
  • Tự động mở/mở hộp. chuyển đổi tự động giữa các loại nguyên thủy [chẳng hạn như
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    3] và các lớp trình bao bọc nguyên thủy [chẳng hạn như
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    4] [được chỉ định bởi JSR 201]
  • phép liệt kê. từ khóa
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    0 tạo một danh sách các giá trị được sắp xếp theo thứ tự an toàn [chẳng hạn như
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    1,
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    2, v.v. ];
  • biến thể. tham số cuối cùng của một phương thức giờ đây có thể được khai báo bằng cách sử dụng tên loại theo sau là dấu ba chấm [e. g.
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    3];
  • Tăng cường vòng lặp
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    4. cú pháp vòng lặp
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    5 được mở rộng với cú pháp đặc biệt để lặp qua từng thành viên của một mảng hoặc bất kỳ
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    6 nào, chẳng hạn như các lớp
    int ndays = switch[month] {
        case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
        case APR, JUN, SEP, NOV -> 30;
        case FEB -> {
            if [year % 400 == 0] yield 29;
            else if [year % 100 == 0] yield 28;
            else if [year % 4 == 0] yield 29;
            else yield 28; }
    };
    
    7 tiêu chuẩn [được chỉ định bởi JSR 201]
  • Cải thiện ngữ nghĩa thực thi cho các chương trình Java đa luồng;
  • Nhập tĩnh

Ngoài ra còn có những cải tiến sau đối với các thư viện tiêu chuẩn

Java 5 là phiên bản cuối cùng của Java hỗ trợ chính thức cho Microsoft Windows 98 và Windows ME,[41] trong khi Windows Vista là phiên bản Windows mới nhất mà Java SE 5 được hỗ trợ trước khi Java 5 ngừng hoạt động vào tháng 10 năm . [35]

Bản cập nhật Java 5 5 [1. 5. 0_05] là bản phát hành Java cuối cùng hoạt động trên Windows 95 [với Internet Explorer 5. 5 đã cài đặt] và Windows NT 4. 0. [42]

Java 5 lần đầu tiên có trên Apple Mac OS X 10. 4 [Tiger][43] và là phiên bản mặc định của Java được cài đặt trên Apple Mac OS X 10. 5 [Báo]

Hỗ trợ công cộng và cập nhật bảo mật cho Java 1. 5 kết thúc vào tháng 11 năm 2009. Các bản cập nhật bảo mật trả phí dành cho khách hàng của Oracle đã kết thúc vào tháng 4 năm 2015

Thay đổi phiên bản[sửa]

Phiên bản này đã giới thiệu một hệ thống tạo phiên bản mới cho ngôn ngữ Java, mặc dù hệ thống tạo phiên bản cũ vẫn tiếp tục được sử dụng cho các thư viện dành cho nhà phát triển

Cả hai số phiên bản "1. 5. 0" và "5. 0" được sử dụng để xác định bản phát hành này của Phiên bản tiêu chuẩn nền tảng Java 2. Phiên bản "5. 0" là phiên bản sản phẩm, trong khi "1. 5. 0" là phiên bản dành cho nhà phát triển. Con số "5. 0" được sử dụng để phản ánh tốt hơn mức độ trưởng thành, ổn định, khả năng mở rộng và bảo mật của J2SE

- "Phiên bản 1. 5. 0 hoặc 5. 0?", ghi chú phát hành Java[44]

Sự tương ứng này tiếp tục thông qua các bản phát hành sau này [Java 6 = JDK 1. 6, Java 7 = JDK 1. 7, v.v.]

Bảng các bản cập nhật Java 5Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 52004-10-04Siêu dữ liệu, kiểu chung, hộp thư tự động và hộp thư tự động của kiểu nguyên thủy, vòng lặp
int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
5 nâng cao, kiểu liệt kê, nhập tĩnh, I/O được định dạng, varargs và các tiện ích tương tranh. Cải thiện thời gian khởi động và dung lượng bộ nhớ. Chia sẻ dữ liệu chỉ đọc giữa nhiều JVM đang chạy. Giám sát và quản lý từ xa. API lược tả JVM mới. Lập trình tạo dấu vết ngăn xếp. Hỗ trợ cho XML1. 1 với Không gian tên, Lược đồ XML, SAX 2. 0. 2, DOM Cấp 3 và XSLT với trình biên dịch XSLTC nhanh. bảng chữ cái 4. 0 hỗ trợ. Các lỗi Java SE 5 Update 12004-12-2550 đã được sửa. Bản cập nhật Java SE 5 22005-03-16Một vài sự cố đã được khắc phục. Chương trình hiện được biên dịch với sự tối ưu hóa tốt hơn. Các bản sửa lỗi lịch và các bản sửa lỗi khác đã được thực hiện. Bản cập nhật Java SE 5 32005-05-03Bản phát hành này sửa một số lỗi, bao gồm cả sự cố của plugin Linux Mozilla. Bản cập nhật Java SE 5 42005-07-04Với bản phát hành, hỗ trợ J2SE cho Windows 64-bit đã phát triển từ bản phát hành thử nghiệm sang bản phát hành cuối cùng. Phiên bản này chạy trên các máy chế độ 64-bit AMD64/EM64T với Windows Server 2003 x64 Editions. Bản cập nhật Java SE 5 52005-09-18Một số lỗi đã được sửa và cải tiến hiệu suất đã được thực hiện. Bản phát hành cuối cùng cho Windows 95 và Windows NT 4. 0. Bản cập nhật Java SE 5 62005-12-07Trước bản cập nhật này, một applet hoặc ứng dụng có thể chỉ định phiên bản JRE mà nó sẽ chạy trên đó. Điều này đã thay đổi. Tất cả các applet được thực thi với phiên bản JRE mới nhất. Bản cập nhật Java SE 5 72006-05-29Một số lỗi đã được sửa và cải tiến hiệu suất đã được thực hiện. Bản cập nhật Java SE 5 82006-08-13Một số lỗi đã được sửa và cải tiến hiệu suất đã được thực hiện. Bản cập nhật Java SE 5 92006-11-12Bản phát hành này sửa một số hồi quy nhỏ. Bản cập nhật Java SE 5 102006-12-22Một triển khai của cơ sở thông báo sự kiện epoll I/O, được hỗ trợ bởi Linux 2. 6, đã được thêm vào. Nhiều lỗi đã được sửa. Bản cập nhật Java SE 5 112007-03-08Một số lỗi đã được sửa và cải tiến hiệu suất đã được thực hiện. Bản cập nhật Java SE 5 122007-06-11Bản cập nhật Java SE 5 132007-10-05Nhiều lỗ hổng bảo mật trong Java Web Start liên quan đến truy cập tệp cục bộ đã được sửa. Một lỗ hổng bảo mật trong JRE cho phép vượt qua các hạn chế truy cập mạng đã được khắc phục. Một số vấn đề bảo mật khác và các lỗi nhỏ đã được sửa. Bản cập nhật Java SE 5 14Bản cập nhật Java SE 5 152008-03-06Một số sự cố do bộ đệm heap vượt quá giới hạn đã được khắc phục, cùng với một số lỗi khác. Chứng chỉ gốc mới từ AOL, DigiCert và TrustCenter hiện được bao gồm. Bản cập nhật Java SE 5 162008-07-23Bản phát hành này sửa một số lỗi bảo mật, chẳng hạn như lỗ hổng DoS, lỗi tràn bộ đệm và các lỗi khác có thể dẫn đến sự cố hoặc sẽ cấp cho các applet quyền truy cập vào một số tài nguyên hệ thống. Các lỗ hổng này nằm trong Java Web Start, trong Tác nhân quản lý Tiện ích mở rộng quản lý Java [JMX] và trong các chức năng xử lý dữ liệu XML. Bản cập nhật Java SE 5 172008-12-03Việc triển khai bộ ký tự UTF-8 đã được cập nhật để xử lý dạng chuỗi byte UTF-8 không ngắn nhất, gây ra sự không tương thích từ các bản phát hành trước. Chứng chỉ gốc mới đã được thêm vào. Nhiều lỗi đã được sửa. Bản cập nhật Java SE 5 182009-03-25Một số vấn đề bảo mật đã được giải quyết. Hành vi của tính năng JNDI để lưu trữ và truy xuất các đối tượng Java trong thư mục LDAP đã được sửa đổi một chút. Năm chứng chỉ gốc mới đã được thêm vào. Nhiều lỗi đã được sửa. Bản cập nhật Java SE 5 192009-05-29Hỗ trợ đã được thêm cho một số cấu hình hệ thống. Hỗ trợ thẻ dịch vụ đã được thêm vào. Nhiều lỗi đã được sửa, bao gồm một số sự cố và rò rỉ bộ nhớ. Bản cập nhật Java SE 5 202009-08-06Một số lỗ hổng bảo mật đã được giải quyết, chẳng hạn như khả năng truy cập hệ thống bởi các applet không đáng tin cậy và tràn số nguyên trong quá trình xử lý hình ảnh và trong Unpack200. Một số chứng chỉ gốc mới đã được thêm vào. Nhiều lỗi nhỏ khác đã được sửa. Bản cập nhật Java SE 5 212009-09-09Nhiều lỗi nhỏ đã được sửa. Bản cập nhật Java SE 5 222009-11-04Bản phát hành này đánh dấu Thời hạn kết thúc dịch vụ [EOSL] cho Java 5 và là phiên bản công khai cuối cùng của nó. Một số lỗ hổng bảo mật, được báo cáo là Sun Alerts 269868, 270474, 270475 và 270476, đã được sửa. Một số lỗi khác đã được sửa. Hơn nữa, hai chứng chỉ gốc mới đã được thêm vào. Bản cập nhật Java SE 5 232010-01-13Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 242010-04-15Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 252010-07-07Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 262010-10-12Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 272010-12-08Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 282011-02-15Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 302011-06-07Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 312011-08-16Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 322011-10-18Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 342012-02-14Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . Bản cập nhật Java SE 5 362012-06-12Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10;

Java SE 6[sửa mã nguồn]

Java SE 6CodenameMustangReleasedPublicTháng 2 năm 2013 [2013-02]

Kể từ phiên bản được phát hành vào ngày 11 tháng 12 năm 2006, Sun đã thay thế tên "J2SE" bằng Java SE và bỏ phần ". 0" từ số phiên bản. [62] Đánh số nội bộ cho nhà phát triển vẫn là 1. 6. 0. [63]

Phiên bản này được phát triển theo JSR 270

Trong giai đoạn phát triển, các bản dựng mới bao gồm cải tiến và sửa lỗi đã được phát hành khoảng hàng tuần. Các phiên bản beta được phát hành vào tháng 2 và tháng 6 năm 2006, dẫn đến bản phát hành cuối cùng diễn ra vào ngày 11 tháng 12 năm 2006

Những thay đổi lớn bao gồm trong phiên bản này. [64][65]

  • Hỗ trợ cho các phiên bản Win9x cũ hơn đã bị loại bỏ; . [cần dẫn nguồn] Điều này được cho là [bởi ai?] là do những thay đổi lớn trong Bản cập nhật 10
  • Hỗ trợ ngôn ngữ kịch bản [JSR 223]. API chung để tích hợp chặt chẽ với các ngôn ngữ kịch bản và tích hợp Mozilla JavaScript Rhino tích hợp
  • Cải thiện hiệu suất đáng kể cho nền tảng cốt lõi,[66][67] và Swing
  • Cải thiện hỗ trợ Dịch vụ Web thông qua JAX-WS [JSR 224]
  • JDBC 4. 0 hỗ trợ [JSR 221]
  • API trình biên dịch Java [JSR 199]. một API cho phép chương trình Java chọn và gọi Trình biên dịch Java theo chương trình
  • Nâng cấp JAXB lên phiên bản 2. 0. Bao gồm tích hợp trình phân tích cú pháp StAX
  • Hỗ trợ cho các chú thích có thể cắm [JSR 269]. [68]
  • Nhiều cải tiến về GUI, chẳng hạn như tích hợp SwingWorker trong API, sắp xếp và lọc bảng cũng như bộ đệm đôi Swing thực [loại bỏ hiệu ứng vùng xám]
  • Các cải tiến JVM bao gồm. đồng bộ hóa và tối ưu hóa hiệu suất trình biên dịch, thuật toán mới và nâng cấp lên thuật toán thu gom rác hiện có và hiệu suất khởi động ứng dụng

Java 6 có thể được cài đặt cho Mac OS X 10. 5 [Leopard] chạy trên máy có bộ xử lý 64-bit [Core 2 Duo trở lên]. [69] Java 6 cũng được hỗ trợ bởi cả máy 32-bit và 64-bit chạy Mac OS X 10. 6 [Báo tuyết]

Java 6 đã hết tuổi thọ được hỗ trợ vào tháng 2 năm 2013, vào thời điểm đó, tất cả các bản cập nhật công khai, bao gồm cả bản cập nhật bảo mật, đã được lên lịch ngừng hoạt động. [70][71] Oracle đã phát hành thêm hai bản cập nhật cho Java 6 vào tháng 3 và tháng 4 năm 2013, bản vá này đã vá một số lỗ hổng bảo mật. [72][73]

Sau khi phát hành Java 6, Sun và sau đó là Oracle đã phát hành một số bản cập nhật, trong khi không thay đổi bất kỳ API công khai nào, nâng cao khả năng sử dụng của người dùng cuối hoặc sửa lỗi. [74]

Bảng cập nhật Java 6 Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 62006-12-23Bản phát hành này bổ sung nhiều cải tiến trong các lĩnh vực dịch vụ Web, tập lệnh, cơ sở dữ liệu, chú thích có thể cắm và bảo mật, cũng như chất lượng, tính tương thích và tính ổn định. JConsole hiện được hỗ trợ chính thức. Hỗ trợ Java DB đã được thêm vào. Bản cập nhật Java SE 6 1[i]2007-05-07Bản cập nhật Java SE 6 2[ii]2007-07-03Bản cập nhật Java SE 6 3[iii]2007-10-03Bản cập nhật Java SE 6 4[iv]2008-01-14HotSpot VM . Chứng chỉ gốc mới từ AOL, DigiCert và TrustCenter hiện được bao gồm. Bản cập nhật Java SE 6 6[vi]2008-04-16Một giải pháp thay thế cho sự cố xác nhận khóa Xlib/XCB khét tiếng đã được giới thiệu. Đã sửa lỗi rò rỉ bộ nhớ khi sử dụng xác thực Kerberos với LoginContext. Một số lỗi khác đã được sửa. Bản cập nhật Java SE 6 7[vii]Không chính thức, Bản cập nhật Java SE 6 7 [1. 6. 0. 7] là phiên bản Java cuối cùng được chứng minh là đang hoạt động trên dòng hệ điều hành Win9x[cần dẫn nguồn]Bản cập nhật Java SE 6 10[viii]2008-10-15HotSpot VM 11. Những thay đổi chính cho bản cập nhật này bao gồm
  • Bộ công cụ triển khai Java, một tập hợp các chức năng JavaScript để dễ dàng triển khai các applet và ứng dụng Java Web Start. [75]
  • Java Kernel, một trình cài đặt nhỏ chỉ bao gồm các lớp JRE được sử dụng phổ biến nhất. Các gói khác được tải xuống khi cần
  • Trình cập nhật nâng cao
  • Phiên bản nâng cao và hỗ trợ pack200. hỗ trợ phía máy chủ không còn cần thiết. [75]
  • Java Quick Starter, để cải thiện thời gian khởi động nguội
  • Cải thiện hiệu suất của đồ họa nguyên thủy Java2D trên Windows, sử dụng Direct3D và tăng tốc phần cứng
  • Giao diện Swing mới được gọi là Nimbus và dựa trên synth. [76]
  • Plug-in Java thế hệ tiếp theo. các applet hiện chạy trong một quy trình riêng biệt và hỗ trợ nhiều tính năng của ứng dụng Web Start. [75]
Bản cập nhật Java SE 6 11[77] [ix]2008-12-0313 sửa lỗi bảo mật[x]Bản cập nhật Java SE 6 12[xi]2008-12-12Không có bản sửa lỗi bảo mật nào; . Bản phát hành này bao gồm các bản cập nhật hiệu suất mở rộng cho trình biên dịch JIT, các con trỏ được nén cho các máy 64 bit, cũng như hỗ trợ cho trình thu gom rác tạm dừng thấp G1 [Garbage First]. [78][79]

Tùy chọn

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
9 chỉ đạo trình biên dịch HotSpot JIT sử dụng phân tích thoát để xác định xem các đối tượng cục bộ có thể được phân bổ trên ngăn xếp thay vì đống hay không. [xiv]

Một số nhà phát triển đã nhận thấy một sự cố được đưa ra trong bản phát hành này khiến trình gỡ lỗi bỏ lỡ các điểm dừng dường như là ngẫu nhiên. [80] Sun có một lỗi tương ứng, đang theo dõi vấn đề. Giải pháp thay thế áp dụng cho Máy khách và Máy ảo Máy chủ. [81] Sử dụng tùy chọn

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
00 sẽ tránh được lỗi. Một cách giải quyết khác là quay lại bản cập nhật 13 hoặc nâng cấp lên bản cập nhật 16

Bản cập nhật Java SE 6 15[xv]2009-08-04Giới thiệu chức năng vá lỗi tại chỗ Bản cập nhật Java SE 6 16[xvi]2009-08-11Đã khắc phục sự cố được giới thiệu trong bản cập nhật 14 khiến trình gỡ lỗi bỏ lỡ các điểm dừng Bản cập nhật Java SE 6 17[xvii] . 04 LTS Phiên bản dành cho máy tính để bàn, SLES 11, Windows 7, Red Hat Enterprise Linux 5. 3, firefox 3. 6, Trực quanVM 1. 2; . bảy cái mới, ba cái bị loại bỏ, năm cái được thay thế bằng thuật toán chữ ký mạnh hơn; . 4 và 5. 5, Oracle Enterprise Linux 4. 8, 5. 4, 5. 5; . 2. 2Các bản sửa lỗi bảo mật của Bản cập nhật 2Java SE 6 22[xxii]2010-10-1229; . [87]Bản cập nhật Java SE 6 512013-06-18Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Bản cập nhật của Apple cho OS X Snow Leopard, Lion & Mountain Lion; . #54; . [93] Các phiên bản khác chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10; . 6. 0_101Bản cập nhật Java SE 6 1052015-10-20Không có sẵn công khai, chỉ có sẵn thông qua chương trình Hỗ trợ Java SE và trong Cụm bản vá được đề xuất của Solaris 10;

Java SE 7[sửa mã nguồn]

Java SE 7CodenameDolphin[111]Phát hành Công khaiTháng 4 năm 2015 [2015-04]Trả tiềnTháng 6 năm 2022 [2022-06]

Java 7 là một bản cập nhật lớn được tung ra vào ngày 7 tháng 7 năm 2011[112] và được cung cấp cho các nhà phát triển vào ngày 28 tháng 7 năm 2011. [113] Thời kỳ phát triển được tổ chức thành mười ba mốc quan trọng; . [113][114] Trung bình, 8 bản dựng [thường bao gồm các cải tiến và sửa lỗi] được phát hành cho mỗi mốc. Danh sách tính năng tại dự án OpenJDK 7 liệt kê nhiều thay đổi

Các bổ sung trong Java 7 bao gồm. [115]

  • Các chuỗi trong công tắc[120]
  • Quản lý tài nguyên tự động trong câu lệnh thử hay còn gọi là câu lệnh thử với tài nguyên[121]
  • Cải thiện suy luận kiểu để tạo phiên bản chung, hay còn gọi là toán tử kim cương [122]
  • Khai báo phương thức varargs đơn giản hóa[123]
  • Số nguyên nhị phân[124]
  • Cho phép gạch dưới bằng chữ số[125]
  • Nắm bắt nhiều loại ngoại lệ và tính toán lại các ngoại lệ với tính năng kiểm tra loại được cải thiện[126]
  • Tiện ích đồng thời theo JSR 166[127]
  • Thư viện tệp I/O mới [do JSR 203 xác định] thêm hỗ trợ cho nhiều hệ thống tệp, siêu dữ liệu tệp và liên kết tượng trưng. Các gói mới là ________ 103, ________ 104 và _____ 105[128][129]
  • Timsort được sử dụng để sắp xếp các bộ sưu tập và mảng các đối tượng thay vì sắp xếp hợp nhất
  • Hỗ trợ cấp thư viện cho các thuật toán mã hóa đường cong elip
  • Đường dẫn XRender cho Java 2D, giúp cải thiện khả năng xử lý các tính năng dành riêng cho GPU hiện đại
  • API nền tảng mới dành cho các tính năng đồ họa ban đầu được triển khai trong phiên bản 6u10 dưới dạng API không được hỗ trợ[130]
  • Tăng cường hỗ trợ cấp thư viện cho các giao thức mạng mới, bao gồm SCTP và Sockets Direct Protocol
  • Cập nhật ngược dòng cho XML và Unicode
  • Bộ quy tắc triển khai Java[131]

Lambda [việc triển khai các hàm lambda của Java], Jigsaw [việc triển khai các mô-đun của Java] và một phần của Coin đã bị loại bỏ khỏi Java 7 và được phát hành như một phần của Java 8 [ngoại trừ Jigsaw, được phát hành trong Java 9]. [132][133]

Java 7 là phiên bản mặc định để tải xuống trên java. com từ tháng 4 năm 2012 cho đến khi Java 8 được phát hành

Oracle đã phát hành các bản cập nhật công khai cho dòng Java 7 hàng quý[135] cho đến tháng 4 năm 2015 khi sản phẩm kết thúc giai đoạn phát hành công khai. [136] Các bản cập nhật tiếp theo cho JDK 7, dự kiến ​​sẽ tiếp tục cho đến tháng 7 năm 2022, chỉ được cung cấp cho những khách hàng có hợp đồng hỗ trợ. [137]

Bảng cập nhật Java 7Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 7[138]2011-07-28Phát hành lần đầu; . 2 và hỗ trợ Màn hình Retina[147]Bản cập nhật Java SE 7 45[lix]2013-10-1551 sửa lỗi bảo mật;[89] bảo vệ chống phân phối lại trái phép các ứng dụng Java; . setDefault changeJava SE 7 Bản cập nhật 51[lx]2014-01-1436 sửa lỗi bảo mật; . 3,[151] 130 sửa lỗi[152]Bản cập nhật Java SE 7 65[lxiii]2014-07-1518 sửa lỗi[lxiv]Bản cập nhật Java SE 7 67[lxv]2014-08-041 sửa lỗi Bản cập nhật Java SE 7 71[lxvi

Java SE 8[sửa mã nguồn]

Java SE 8Đã phát hành # trong số JEPs8

Java 8 được phát hành vào ngày 18 tháng 3 năm 2014,[173][174] và bao gồm một số tính năng đã được lên kế hoạch cho Java 7 nhưng sau đó bị trì hoãn. [175]

Công việc về các tính năng được tổ chức theo Đề xuất nâng cao JDK [JEP]. [176]

  • JSR 335, JEP 126. Hỗ trợ cấp độ ngôn ngữ cho biểu thức lambda [chính thức, biểu thức lambda; không chính thức, bao đóng] trong Dự án Lambda[177] và các phương thức mặc định [phương thức mở rộng ảo][178][179][180] có thể được sử dụng để thêm phương thức vào giao diện mà không cần . Đã có một cuộc tranh luận đang diễn ra trong cộng đồng Java về việc có nên thêm hỗ trợ cho các biểu thức lambda hay không. [181][182] Sun sau đó đã tuyên bố rằng các biểu thức lambda sẽ được đưa vào Java và yêu cầu ý kiến ​​đóng góp của cộng đồng để tinh chỉnh tính năng này. [183] ​​Việc hỗ trợ các biểu thức lambda cũng cho phép các thao tác kiểu chức năng trên các luồng phần tử, chẳng hạn như các phép biến đổi lấy cảm hứng từ MapReduce trên các bộ sưu tập. Tác giả của API có thể sử dụng các phương thức mặc định để thêm các phương thức mới vào giao diện mà không vi phạm mã cũ khi sử dụng nó. Mặc dù đó không phải là mục đích chính của chúng,[178] các phương thức mặc định cũng có thể được sử dụng cho nhiều kế thừa hành vi [nhưng không phải trạng thái]

Java 8 không được hỗ trợ trên Windows XP[185] nhưng kể từ bản cập nhật 25 của JDK 8, Java 8 vẫn có thể được cài đặt và chạy trong Windows XP. [186] Các bản cập nhật trước đây của JDK 8 có thể chạy trên XP bằng cách tải xuống tệp định dạng zip đã lưu trữ và giải nén tệp đó để thực thi. Phiên bản cuối cùng của Java 8 có thể chạy trên XP là bản cập nhật 251. Nhưng khả năng tương thích các thành phần của nó bắt đầu bị hỏng trên hệ điều hành không được hỗ trợ trong quá trình xây dựng ban đầu trong quá trình phát triển các bản cập nhật Java 8. [cần dẫn nguồn]

Từ tháng 10 năm 2014, Java 8 là phiên bản mặc định để tải xuống [và sau đó là bản tải xuống thay thế Java 9] từ trang web chính thức. [187] "Oracle sẽ tiếp tục cung cấp Bản cập nhật công khai và bản cập nhật tự động của Java SE 8, Vô thời hạn cho Người dùng cá nhân". [4]

Bảng cập nhật Java 8Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 82014-03-18Bản phát hành lần đầuBản cập nhật Java SE 8 5[188]2014-04-15Sử dụng "
int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
06" trong thuộc tính
int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
07; . 4, Chống trùng lặp chuỗi [được tắt theo mặc định]Bản cập nhật Java SE 8 25[193]2014-10-1410 sửa lỗi Bản cập nhật Java SE 8 31[194]2015-01-1926 sửa lỗi; . Bản cập nhật Java SE 8 131[215]2017-04-184 thay đổi và 42 sửa lỗi [2 đáng chú ý]. Bản cập nhật Java SE 8 141[216]2017-07-18Tính năng bổ sung, 3 thay đổi và 12 bản sửa lỗi. Bản cập nhật Java SE 8 144[217]2017-07-2632 Các bản sửa lỗi và sửa lỗi bảo mật từ 8u141. Bản cập nhật Java SE 8 151[218]2017-10-1722 Sửa lỗi bảo mật, 2 lưu ý, 1 thu hồi chứng chỉ, 1 tính năng mới, 6 thay đổi và 24 bản sửa lỗi từ 8u144. Bản cập nhật Java SE 8 152[219]2017-10-17Sửa lỗi bảo mật, 1 tính năng mới, 1 thay đổi và 238 sửa lỗi từ 8u151 [1 đáng chú ý]. Bản cập nhật Java SE 8 161[220]2018-01-1621 Bản sửa lỗi bảo mật, 3 tính năng mới, 9 thay đổi và 1 bản sửa lỗi từ 8u152. Bản cập nhật Java SE 8 162[221]2018-01-16Sửa lỗi bảo mật, sửa 63 lỗi. Bản cập nhật Java SE 8 171[222]2018-04-17Sửa lỗi bảo mật, sửa lỗi. Bản cập nhật Java SE 8 172[223]2018-04-17Sửa lỗi bảo mật, sửa lỗi. Bản cập nhật Java SE 8 181[224]2018-07-17Sửa lỗi bảo mật, sửa lỗi. Bản cập nhật Java SE 8 191[225]2018-10-16Tính năng mới, thay đổi, sửa lỗi, sửa lỗi bảo mật. Bản cập nhật Java SE 8 192[226]2018-10-16Tính năng mới, thay đổi, sửa lỗi. Bản cập nhật Java SE 8 201[227]2019-01-15Tính năng mới, thay đổi, sửa lỗi. Bản cập nhật Java SE 8 202[228]2019-01-15Tính năng mới, thay đổi, sửa lỗi. Bản cập nhật Java SE 8 211[229]2019-04-16Tính năng mới, thay đổi, sửa lỗi. Cập nhật giấy phép. Bản cập nhật Java SE 8 212[230]2019-04-16Tính năng mới [e. g. 5 ký hiệu tiền tệ, bao gồm Bitcoin và "Tên thời đại mới của Nhật Bản Reiwa"[230]], thay đổi, sửa lỗi. Cập nhật giấy phép. Bản cập nhật Java SE 8 221[231]2019-07-16Tính năng mới, thay đổi, sửa lỗi. Bản cập nhật Java SE 8 231[232]2019-10-15Tính năng mới, thay đổi, sửa lỗi và 18 bản sửa lỗi bảo mật. Bản cập nhật Java SE 8 241[233]2020-01-14Tính năng mới, thay đổi, sửa lỗi. Bản cập nhật Java SE 8 251[234]2020-04-14Tính năng mới, thay đổi, sửa lỗi. Phiên bản cuối cùng được chứng minh là hoạt động không chính thức trên Windows XP. Bản cập nhật Java SE 8 261[235]2020-07-14Tính năng mới, thay đổi, sửa 133 lỗi. [236]Bản cập nhật Java SE 8 271[237]2020-10-20Tính năng mới, thay đổi, sửa 65 lỗi. [238]Bản cập nhật Java SE 8 281[239]2021-01-19Tính năng mới, thay đổi, 33 bản sửa lỗi. [240]Bản cập nhật Java SE 8 291[241]2021-04-20Tính năng mới, thay đổi, sửa 28 lỗi. [242]Bản cập nhật Java SE 8 301[243]2021-07-20Tính năng mới, thay đổi, sửa 90 lỗi. [244]Bản cập nhật Java SE 8 311[245]2021-10-19Tính năng mới, thay đổi, sửa 52 lỗi. [246]Bản cập nhật Java SE 8 321[247]2022-01-18Tính năng mới, thay đổi, sửa 62 lỗi. [248]Bản cập nhật Java SE 8 331[249]2022-04-19Tính năng mới, thay đổi, 37 bản sửa lỗi. [250]Bản cập nhật Java SE 8 333[251]Bản vá 2022-05-02 với 1 thay đổi và 2 bản sửa lỗi. [252]Bản cập nhật Java SE 8 341[253]2022-07-19Tính năng mới, thay đổi, 42 bản sửa lỗi. [254]Bản cập nhật Java SE 8 351[255]2022-10-18Các tính năng mới, thay đổi, 95 bản sửa lỗi. [256]

Java SE 9[sửa mã nguồn]

Java SE 9Đã phát hành # trong số JEPs9

Java SE 9 đã được cung cấp vào ngày 21 tháng 9 năm 2017,[257] do sự chấp nhận gây tranh cãi đối với việc triển khai Project Jigsaw hiện tại của Ủy ban điều hành Java,[258] khiến Oracle phải khắc phục một số vấn đề và mối lo ngại còn tồn tại, đồng thời tinh chỉnh một số vấn đề quan trọng. . Vào những ngày cuối tháng 6 năm 2017, Quy trình Cộng đồng Java đã bày tỏ sự đồng thuận gần như nhất trí đối với sơ đồ Hệ thống Mô-đun được đề xuất. [259]

Ứng cử viên phát hành Java 9 đầu tiên được phát hành vào ngày 9 tháng 8 năm 2017. [265] Bản phát hành ổn định đầu tiên của Java 9 là vào ngày 21 tháng 9 năm 2017. [266]

Lịch sử[sửa]

Tại JavaOne 2011, Oracle đã thảo luận về các tính năng mà họ hy vọng sẽ phát hành cho Java 9 vào năm 2016. [267] Java 9 nên bao gồm hỗ trợ tốt hơn cho đống nhiều gigabyte, tích hợp mã gốc tốt hơn, trình thu gom rác mặc định khác [G1, cho "thời gian phản hồi ngắn hơn"][268] và một JVM tự điều chỉnh. [269] Vào đầu năm 2016, việc phát hành Java 9 đã được lên lịch lại vào tháng 3 năm 2017[270] và sau đó lại bị hoãn thêm bốn tháng nữa đến tháng 7 năm 2017. [271]

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 9[272]2017-09-21Phát hành lần đầuJava SE 9. 0. 1[273]2017-10-17Bản sửa lỗi bảo mật và lỗi nghiêm trọng của Java SE 9 vào tháng 10 năm 2017. 0. 4[274]2018-01-16Bản phát hành cuối cùng cho JDK 9;

Java SE 10[sửa mã nguồn]

Java SE 10Đã phát hành # trong số JEPs12

OpenJDK 10 được phát hành vào ngày 20 tháng 3 năm 2018, với 12 tính năng mới đã được xác nhận. [275] Trong số các tính năng này có

Suy luận kiểu biến cục bộ JEP 286 đầu tiên này, cho phép từ khóa

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
00 được sử dụng cho các biến cục bộ với kiểu thực do trình biên dịch tính toán. Vì vậy, chúng tôi có thể làm

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
1

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 10[276]2018-03-20Phát hành lần đầuJava SE 10. 0. 1[277]2018-04-17Bản sửa lỗi bảo mật, 5 bản sửa lỗi[278]Java SE 10. 0. 2[279]2018-07-17Bản phát hành cuối cùng cho JDK 10. Bản sửa lỗi bảo mật, 7 bản sửa lỗi[280]

Java SE 11[sửa mã nguồn]

JDK 11 được phát hành vào ngày 25 tháng 9 năm 2018 và phiên bản hiện đang mở để sửa lỗi. Nó cung cấp LTS, hoặc Hỗ trợ dài hạn. Trong số những thứ khác, Java 11 bao gồm một số tính năng mới, chẳng hạn như. [281]

Một số tính năng từ các bản phát hành trước đã bị loại bỏ; . Các mô-đun JavaFX, Java EE và CORBA đã bị xóa khỏi JDK. [282]

Bảng cập nhật Java 11Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 11[283]2018-09-25Phát hành lần đầuJava SE 11. 0. 1[284]2018-10-16Bảo mật & sửa lỗiJava SE 11. 0. 2[285]2019-01-15Bảo mật & sửa lỗiJava SE 11. 0. 3[286]2019-04-16Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 4[287]2019-07-16Tính năng mới, Bảo mật & sửa lỗi;

Phát hiện hệ điều hành Windows HotSpot Xác định chính xác Windows Server 2019

Java SE 11. 0. 5[288]2019-10-15Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 6[289]2020-01-14Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 7[290]2020-04-14Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 8[291]2020-07-14Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 9[292]2020-10-20Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 10[293]2021-01-19Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 11[294]2021-04-20Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 12[295]2021-07-20Tính năng mới, Bảo mật & sửa lỗiJava SE 11. 0. 13[296]2021-10-19Tính năng mới, Bảo mật & 93 bản sửa lỗi[297]Java SE 11. 0. 14[298]2022-01-18Tính năng mới, Bảo mật & sửa lỗi 71[299]Java SE 11. 0. 15[300]2022-04-19Tính năng mới, Bảo mật & sửa lỗi 81[301]Java SE 11. 0. 16[302]2022-07-19Tính năng mới, Bảo mật & sửa lỗi 74[303]Java SE 11. 0. 17[304]2022-10-18Tính năng mới, Bảo mật & sửa lỗi 118[305]

Java SE 12[sửa mã nguồn]

JDK 12 được phát hành vào ngày 19 tháng 3 năm 2019. Trong số những thứ khác, Java 12 bao gồm một số tính năng mới, chẳng hạn như. [306]

Tính năng xem trước JEP 325 mở rộng câu lệnh

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
01 để nó cũng có thể được sử dụng như một biểu thức và thêm một dạng nhãn trường hợp mới trong đó phía bên phải là một biểu thức. Không cần câu lệnh break. Đối với các biểu thức phức tạp, có thể sử dụng câu lệnh
int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
02. Điều này trở thành tiêu chuẩn trong Java SE 14

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 12[307]2019-03-19Phát hành lần đầuJava SE 12. 0. 1[308]2019-04-16Bản sửa lỗi bảo mật & Tên thời đại Nhật Bản mớiJava SE 12. 0. 2[309]2019-07-16Đã xóa một số chứng chỉ CA gốc

Java SE 13[sửa mã nguồn]

JDK 13 được phát hành vào ngày 17 tháng 9 năm 2019. Java 13 bao gồm các tính năng mới sau đây, cũng như "hàng trăm cải tiến nhỏ hơn và hàng nghìn bản sửa lỗi". [310]

Khối văn bản JEP 355 cho phép chuỗi ký tự nhiều dòng

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
0

Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 13[311]2019-09-17Bản phát hành phổ biếnJava SE 13. 0. 1[312]2019-10-15Bảo mật & sửa lỗiJava SE 13. 0. 2[313]2020-01-14Bảo mật & sửa lỗi

Java SE 14[sửa mã nguồn]

JDK 14 được phát hành vào ngày 17 tháng 3 năm 2020. Java 14 bao gồm các tính năng mới sau đây, cũng như "hàng trăm cải tiến nhỏ hơn và hàng nghìn bản sửa lỗi". [314]

JEP 305, Khớp mẫu cho instanceof đơn giản hóa trường hợp phổ biến của thử nghiệm

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
03 được truyền ngay sau đó, thay thế

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
0

với

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
8

Bản ghi JEP 359 cho phép dễ dàng tạo các lớp giống như Tuple bất biến đơn giản. [315]

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
9

Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 14[316]2020-03-17Bản phát hành phổ biếnJava SE 14. 0. 1[317]2020-04-14Bảo mật & sửa lỗiJava SE 14. 0. 2[318]2020-07-14Bảo mật & sửa lỗi

Java SE 15[sửa mã nguồn]

JDK 15 được phát hành vào ngày 15 tháng 9 năm 2020. Java 15 thêm e. g. hỗ trợ cho các chuỗi ký tự nhiều dòng [còn gọi là Khối văn bản]. Bộ thu gom rác Shenandoah và Z [sau này đôi khi được viết tắt là ZGC] hiện đã sẵn sàng để sử dụng trong sản xuất [i. e. không còn được đánh dấu thử nghiệm]. Hỗ trợ cho hệ điều hành Solaris của Oracle [và các CPU SPARC] bị loại bỏ [trong khi vẫn có sẵn trong e. g. java11]. Công cụ JavaScript Nashorn đã bị xóa. Cũng đã xóa một số chứng chỉ CA gốc

JEP 360 Sealed Classes thêm các lớp và giao diện được niêm phong để hạn chế các lớp hoặc giao diện khác có thể mở rộng hoặc triển khai chúng. Chỉ những lớp được chỉ định trong mệnh đề

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
04 mới có thể mở rộng lớp hoặc giao diện

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
1

Cùng với các bản ghi, các lớp niêm phong là các loại tổng. Chúng hoạt động tốt với các tính năng gần đây khác như bản ghi, biểu thức chuyển đổi và so khớp mẫu chẳng hạn như. Tất cả chúng đều tạo thành một phần của hệ thống "Khớp mẫu trong Java" được Gavin Bierman và Brian Goetz thảo luận lần đầu vào tháng 9 năm 2018. [319]

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 15[320]2020-09-15Phát hành phổ biếnJava SE 15. 0. 1[321]2020-10-20Bảo mật & sửa lỗiJava SE 15. 0. 2[322]2021-01-19Bảo mật & sửa lỗi

Java SE 16[sửa mã nguồn]

JDK 16 được phát hành vào ngày 16 tháng 3 năm 2021. Java 16 loại bỏ các tùy chọn biên dịch Ahead-of-Time [và Graal JIT]. [323] Bản thân việc triển khai Java đã và vẫn được viết bằng C++, trong khi kể từ Java 16, C++ 14 gần đây hơn [nhưng vẫn không. g. C++17 hoặc C++20] được cho phép. Mã cũng được chuyển sang GitHub, loại bỏ Mercurial làm hệ thống kiểm soát nguồn

Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 16[324]2021-03-16Bản phát hành có sẵn chungJava SE 16. 0. 1[325]2021-04-20Cập nhật cơ sở dữ liệu múi giờ, sửa lỗi và cập nhật bảo mậtJava SE 16. 0. 2[326]2021-07-20Bảo mật & sửa lỗi

Java SE 17[sửa mã nguồn]

JDK 17 là bản phát hành hỗ trợ dài hạn [LTS] hiện tại kể từ tháng 9 năm 2021. [327] Java 17 là bản phát hành hỗ trợ dài hạn [LTS] thứ 2 kể từ khi chuyển sang nhịp phát hành 6 tháng mới [bản đầu tiên là Java 11]

JEP 406 mở rộng cú pháp so khớp mẫu được sử dụng trong các thao tác instanceof để chuyển các câu lệnh và biểu thức. Nó cho phép các trường hợp được chọn dựa trên loại đối số, trường hợp null và các mẫu tinh chỉnh

int ndays = switch[month] {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if [year % 400 == 0] yield 29;
        else if [year % 100 == 0] yield 28;
        else if [year % 4 == 0] yield 29;
        else yield 28; }
};
2

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 17[328]2021-09-14Bản phát hành phổ biến. Hỗ trợ dài hạnJava SE 17. 0. 1+12[329]2021-10-19Chứng chỉ gốc IdenTrust bị xóa,[330] Bản phát hành không nhận dạng chính xác Windows 11,[331] Thuộc tính hệ thống để kiểm soát việc tái thiết các đối tượng địa chỉ tham chiếu bằng triển khai LDAP JNDI tích hợp của JDK, bản phát hành không . 0. 2+8[335]2022-01-18Đã xóa Chứng chỉ gốc GlobalSign của Google,[336] 164 bản sửa lỗi[337]Java SE 17. 0. 3[338]2022-04-19Giới hạn xử lý XML mới, Chỉ hiển thị chứng chỉ có cài đặt tin cậy phù hợp làm mục nhập chứng chỉ đáng tin cậy trong KeychainStore của macOS, Hạn chế phân tích cú pháp chuỗi URL trong Trình cung cấp JNDI tích hợp, 48 bản sửa lỗi[339]Java SE 17. 0. 4+11[340]2022-07-19Hỗ trợ liên kết kênh HTTPS cho Java GSS/Kerberos, Cập nhật java. mạng lưới. InetAddress để phát hiện các ký tự địa chỉ IPv4 mơ hồ, Trình nén JDK mặc định sẽ bị đóng khi gặp phải ngoại lệ IO, Chia sẻ CPU bị bỏ qua khi tính toán số lượng bộ xử lý đang hoạt động, 60 bản sửa lỗi Java SE 17. 0. 5+9[341]2022-10-18Các JAR đã ký SHA-1 bị vô hiệu hóa, Đặt kết nối HttpURL làm mặc định Giữ thời gian chờ còn hoạt động Có thể định cấu hình, Cập nhật dữ liệu múi giờ lên 2022c, 77 bản sửa lỗi

Java SE 18[sửa mã nguồn]

Java SE 18Đã phát hành # trong số JEPs9Đáng chú ý

  • UTF theo mặc định
  • Đoạn mã Javadoc

[Các] bản xem trước Khớp mẫu chuyển đổi Đang ấp trứng

  • API véc tơ
  • Chức năng nước ngoài & API bộ nhớ

Đáng chú ý Quyết toán không dùng nữa để xóa


JDK 18 được phát hành vào ngày 22 tháng 3 năm 2022

Bản phát hànhNgày phát hànhĐiểm nổi bậtJava SE 18[342]2022-03-22Bản phát hành phổ biến-có sẵnJava SE 18. 0. 1[343]2022-04-19Bảo mật & sửa lỗiJava SE 18. 0. 1. 1[344]2022-05-06Bảo mật & sửa lỗiJava SE 18. 0. 2[345]2022-07-19Bảo mật & sửa lỗiJava SE 18. 0. 2. 1[346]2022-08-18Sửa lỗi hồi quy trong trình biên dịch C2 JIT [xem JDK-8292260][347]

Java SE 19[sửa mã nguồn]

Java SE 19Đã phát hành # trong số [các] JEPs7Preview

  • Chức năng nước ngoài & API bộ nhớ
  • Chuyển đổi mô hình phù hợp

  • API véc tơ
  • đồng thời có cấu trúc


JDK 19 được phát hành vào ngày 20 tháng 9 năm 2022. [348]

Phát hànhNgày phát hànhĐiểm nổi bậtJava SE 19[349]2022-09-20Bản phát hành phổ biến

Java SE 20[sửa mã nguồn]

Java SE 20Phát hànhTháng 3 năm 2023

Kể từ tháng 9 năm 2022, thông số kỹ thuật cho Java 20 vẫn chưa được hoàn thiện. Java 20 dự kiến ​​phát hành vào tháng 3 năm 2023. [350]

Phát hànhNgày phát hànhĐiểm nổi bậtBản dựng mới nhất[351]2023-03-21Bản dựng truy cập sớm. Bản dựng 15 [2022-09-15]

Các tính năng trong tương lai[sửa | sửa mã nguồn]

  • Dự án Valhalla. Các loại giá trị, đối tượng không có danh tính nhưng có bố cục bộ nhớ hiệu quả
  • Dự án Panama. Cải thiện khả năng tương tác với mã gốc, để cho phép mã nguồn Java gọi các hàm và sử dụng các kiểu dữ liệu từ các ngôn ngữ khác, theo cách dễ dàng hơn và có hiệu suất tốt hơn hiện nay. API Vector [lớp trừu tượng di động và ở mức tương đối thấp để lập trình SIMD] cũng được phát triển dưới sự bảo trợ của Dự án Panama
  • Máy dệt dự án. Các luồng ảo, một giải pháp thay thế nhẹ theo lịch trình ở chế độ người dùng cho các luồng được quản lý bởi hệ điều hành tiêu chuẩn. Các luồng ảo được ánh xạ tới các luồng hệ điều hành trong mối quan hệ nhiều-nhiều, trái ngược với mối quan hệ nhiều-một từ triển khai luồng xanh ban đầu trong các phiên bản Java đầu tiên

Triển khai[sửa]

Nền tảng Java được hỗ trợ chính thức, được phát triển đầu tiên tại Sun và hiện do Oracle quản lý, là Java SE. Các bản phát hành dựa trên dự án OpenJDK, một dự án nguồn mở và miễn phí với mô hình phát triển mở. Tuy nhiên, vẫn tồn tại các triển khai Java khác—một phần do lịch sử ban đầu của Java là phần mềm độc quyền. Ngược lại, một số triển khai được tạo ra để mang lại một số lợi ích so với triển khai tiêu chuẩn, thường là kết quả của một số lĩnh vực nghiên cứu do học thuật hoặc doanh nghiệp tài trợ. Nhiều bản phân phối Linux bao gồm các bản dựng của OpenJDK thông qua dự án IcedTea do Red Hat khởi xướng, cung cấp một môi trường tích hợp và xây dựng đơn giản hơn

Visual J++ và Microsoft Java Virtual Machine đã được tạo dưới dạng triển khai không tương thích. Sau Mặt Trời v. Vụ kiện của Microsoft, Microsoft đã từ bỏ nó và bắt đầu làm việc trên. nền tảng NET. Vào năm 2021, Microsoft bắt đầu phân phối "Microsoft Build of OpenJDK" tương thích cho Java 11 trước, sau đó cũng cho Java 17. Các bản dựng của họ không chỉ hỗ trợ Windows mà còn cả Linux và macOS

Các triển khai Java độc quyền khác có sẵn, chẳng hạn như Azul's Zing. Azul cung cấp các bản dựng OpenJDK mã nguồn mở được chứng nhận dưới biệt danh Zulu

Trước khi phát hành OpenJDK, trong khi triển khai của Sun vẫn là sở hữu độc quyền, dự án GNU Classpath đã được tạo để cung cấp triển khai mã nguồn mở và miễn phí của nền tảng Java. Kể từ khi phát hành JDK 7, khi OpenJDK trở thành triển khai tham chiếu chính thức, động lực ban đầu cho dự án GNU Classpath gần như biến mất hoàn toàn và bản phát hành cuối cùng của nó là vào năm 2012

Dự án Apache Harmony đã được bắt đầu ngay trước khi phát hành OpenJDK. Sau khi phát hành mã nguồn ban đầu của Sun, dự án Harmony vẫn tiếp tục, hoạt động để cung cấp triển khai theo giấy phép lỏng lẻo, trái ngược với giấy phép bảo vệ được chọn cho OpenJDK. Google sau đó đã phát triển Android và phát hành nó theo giấy phép lỏng lẻo. Android kết hợp các phần của dự án Harmony, được bổ sung với máy ảo Dalvik của riêng Google và ART. Apache Harmony đã ngừng hoạt động và Google đã chuyển các thành phần Harmony của nó bằng các thành phần tương đương từ OpenJDK

Cả Jikes và Jikes RVM đều là các dự án nghiên cứu mã nguồn mở do IBM phát triển

Một số triển khai khác tồn tại bắt đầu dưới dạng phần mềm độc quyền nhưng hiện là nguồn mở. IBM ban đầu đã phát triển OpenJ9 dưới dạng J9[352] độc quyền nhưng sau đó đã cấp phép lại dự án và tặng nó cho Quỹ Eclipse. JRockit là một triển khai độc quyền đã được Oracle mua lại và được tích hợp vào các phiên bản OpenJDK tiếp theo

Chủ Đề