Update những thay đổi mới nhất của Java

java-news

Năm 2017 là một năm đầy dịch chuyển so với Java. Phiên bản Java 9 đã mang lại nhiều đổi khác và những tính năng mới mê hoặc cũng như là một lịch trình phát hành trọn vẹn mới cho JDK .
Trong quá khứ, những developer thường phàn nàn rằng Java đã không tăng trưởng đủ nhanh. Thế nhưng với sự đổi khác đến từ Java 9, tôi không nghĩ rằng bạn sẽ nghe thấy những lời than vãn này trong tương lai .

Vào năm 2018, JDK sẽ theo một lịch trình phát hành mới. Thay vì phải chờ đợi từng đợt release lớn mỗi năm một lần, bạn sẽ nhận được các bản cập nhật mỗi sáu tháng một lần. Vì vậy, sau khi Java 9 ra mắt vào tháng 9 năm 2017, Java 10 đã được lên kế hoạch cho tháng 3 năm 2018.

Tổng quan về cộng đồng Java

Hầu hết những project qui mô lớn đều không chỉ sử dụng JDK. Họ cũng dựa vào một chồng những thư viện khác nhau như Spring Boot hoặc Java EE, vốn cũng sẽ nhận được những bản update tăng trưởng mới trong vài tháng tới. Trong bài viết này, tôi sẽ hầu hết tập trung chuyên sâu vào JDK. Nhưng dưới đây là tổng quan nhanh về những gì bạn hoàn toàn có thể mong đợi từ hai ông lớn trong hội đồng Java .
Nhóm tăng trưởng Spring đang thao tác siêng năng cho Spring Boot 2 để kịp lịch phát hành trong năm 2018 với điểm mở màn là tháng một. Nhóm tăng trưởng thông tin rằng sẽ không có bất kể biến hóa đáng kể nào trong API cũng như hiện chưa có kế hoạch bổ trợ bất kể tính năng mới nào cho đến khi bản phát hành sau cuối. Vì vậy, nếu bạn đang sử dụng Spring Boot trong dự án Bất Động Sản của mình, đã đến lúc hãy xem xét phiên bản mới hơn và lập kế hoạch update những ứng dụng Spring Boot hiện có của bạn .
Vào cuối năm 2017, Oracle đã mở màn chuyển giao Java EE cho dự án Bất Động Sản EE4J do Eclipse Foundation quản trị. Như dự kiến, việc chuyển nhượng ủy quyền một dự án Bất Động Sản khổng lồ như vậy sẽ không hề triển khai xong sau vài ngày. Có rất nhiều việc làm vẫn còn cần phải được triển khai. Java EE cũng sẽ cần một tên mới cũng như đổi khác quy trình tăng trưởng. Và việc chuyển mã nguồn cũng như mọi thứ tương quan vẫn đang tiếp nối. Chúng ta sẽ phải chờ đón thêm một khoảng chừng thời hạn trước khi hoàn toàn có thể thấy được những tác động ảnh hưởng của quá chuyển giao này .

Lộ trình phát hành và hỗ trợ mới cho JDK

Như đã thông tin vào năm ngoái, Oracle sẽ phát hành hai phiên bản JDK mới vào năm 2018. Thay vì lịch phát hành chậm chạm như trước, hãng sẽ phát hành tính năng nhỏ với lịch mới sáu tháng một lần. Điều này được cho phép nhiều thay đổi nhanh hơn cho nền tảng Java. Nó cũng làm giảm những rủi ro đáng tiếc tương quan đến bản update Java. Đối với những developer Java, những bản phát hành nhỏ hơn này cũng giúp tất cả chúng ta làm quen với những thay đổi mới nhất và vận dụng chúng cho những dự án Bất Động Sản thuận tiện hơn .
Tôi kỳ vọng đây là một biến hóa rất tích cực cho Java. Nó sẽ thêm một động lực mới cho sự tăng trưởng của ngôn từ Java và được cho phép nhóm JDK thích ứng và thay đổi nhanh hơn rất nhiều .

Những thay đổi và tính năng mới trong JDK 10

Do chu kỳ luân hồi phát hành ngắn, Java 10 chỉ mang lại một bộ đổi khác nhỏ. Bạn hoàn toàn có thể xem tổng quan về 12 JEP hiện tại ( Đề xuất nâng cao JDK ) trên trang JDK10 của OpenJDK .
Sự đổi khác đáng quan tâm nhất có lẽ rằng là sự tương hỗ cho sự suy luận kiểu của những biến địa phương ( JEP 286 ). Nhưng bạn cũng nên biết về phiên bản phát hành dựa trên thời hạn mới ( JEP 322 ), và tương hỗ GC ( bộ thu gom rác ) song song được thêm vào G1 hoặc Garbage First ( JEP 307 ) .

Type Inference

JDK 10 ở đầu cuối sẽ mang tới những thay đổi mới với ngôn từ Java. Hầu hết những ngôn từ khác đã được tương hỗ tính năng này trong một thời hạn và giờ đây thì Java ở đầu cuối đã có được .

JEP 286 giới thiệu từ khóa var, rút ​​ngắn declaration của một local variable. Nó nói với compiler để suy ra kiểu của variable từ initializer của nó. Vì vậy, thay vì:

Bạn hoàn toàn có thể viết như sau :

Như bạn đã thấy trong đoạn mã, từ khóa var loại bỏ sự thừa thải từ khai báo biến. Điều này giúp cho code của bạn dễ đọc hơn, đặc biệt nếu bạn sử dụng các tên biến tốt và nếu đó là một biến mà bạn chỉ sử dụng vài lần trực tiếp sau khi bạn tuyên bố nó.

Nếu bạn muốn tìm hiểu và khám phá sâu hơn vào JEP 286, tôi khuyên bạn hãy xem bài viết cụ thể của Nicolai Parlog về type inference trong Java 10 .
Phiên bản phát hành dựa trên thời hạn
Bắt đầu với Java 10, định dạng của số phiên bản Java đổi khác để cải thiện sự tương hỗ cho một quy mô phát hành dựa trên thời hạn .
Thách thức chính được ra mắt bởi quy mô phát hành mới này là nội dung của một bản phát hành hoàn toàn có thể đổi khác. Điều duy nhất được định nghĩa ở phần đầu là thời gian mà phiên bản mới sẽ được phát hành. Nếu sự tăng trưởng của một tính năng mới mất nhiều thời hạn hơn dự kiến, nó sẽ được bỏ ra để không gây ảnh hưởng tác động tới những bản update tiếp theo. Vì vậy, tên của những bản update sẽ được đặt theo thời hạn tung ra thay vì là theo những tính năng của nó .

JEP 322 định nghĩa  lại format cho phiên bản là $ FEATURE. $ INTERIM. $ UPDATE. $ PATCH với ý nghĩa như sau:

Mỗi sáu tháng một lần, nhóm tăng trưởng sẽ tung ra một bản phát hành tính năng mới và tăng phần $ FEATURE của số phiên bản .
Bản phát hành được xuất bản vào tháng 3 năm 2018 sẽ được gọi là JDK 10 và phiên bản JDK vào tháng 9 sẽ là 11. Nhóm tăng trưởng công bố trong JEP 223 rằng họ mong đợi sẽ phát hành tối thiểu một đến hai tính năng quan trọng trong mỗi bản phát hành .
Số $ INTERIM được giữ cho tính linh động và sẽ không được sử dụng trong quy mô phát hành 6 tháng lúc bấy giờ vốn đã đang được lên kế hoạch. Vì vậy, giờ đây, nó sẽ luôn luôn là 0 .
Các bản update update sẽ được tung ra lần lượt vào giữa những bản phát hành tính năng và sẽ không gồm có bất kể biến hóa không thích hợp nào. Một tháng sau khi phát hành tính năng và sau đó ba tháng một lần, phần UPDATE $ của số phiên bản sẽ được tăng lên .
Parallel Full GC trong G1
Đối với hầu hết những developer, đây là một trong những biến hóa nhỏ hơn. Tùy thuộc vào ứng dụng của bạn, bạn hoàn toàn có thể thậm chí còn không nhận ra nó .
G1 trở thành garbage collector mặc định trong JDK 9. Thiết kế của nó nỗ lực tránh Full garbage collector, nhưng điều đó không có nghĩa là chúng sẽ không khi nào xảy ra. Thật không may, G1 chỉ sử dụng một thuật toán đánh dấu-quét nhỏ gọn để thực thi một lần vừa đủ. Điều này hoàn toàn có thể dẫn đến việc giảm hiệu suất so với parallel collector được sử dụng trước đó .
JEP 307 xử lý yếu tố này bằng cách cung ứng sự tiến hành đa luồng của thuật toán. Bắt đầu với JDK 10, nó sẽ sử dụng cùng 1 số ít threads cho những full collections vì nó vận dụng cho những collections nhỏ và hỗn hợp .
Vì vậy, nếu ứng dụng của bạn buộc bộ garbage collector phải thực hiệngarbage collection, JDK 10 hoàn toàn có thể giúp cải tổ hiệu suất của nó .

Kế hoạch cho JDK 11

Trong khi JDK 10 thậm chí còn còn chưa được công bố, thì chỉ còn lại 7 tháng cho đến khi phát hành JDK 11. Vì vậy, không có gì quá bất ngờ khi có một bộ JEP nhỏ đã được lên kế hoạch phát hành lần thứ hai vào năm 2018 .

Ngoài việc loại bỏ các mô đun Java EE và CORBA (JEP 320) đã lỗi thời và một garbage collector mới (JEP 318), JDK 11 rất có thể sẽ đưa ra các hằng số tập tin động (dynamic class-file constants) (JEP 309) và hỗ trợ từ khóa var cho các biểu thức lambda (implicitly-typed lambda expressions) (JEP 323).

Phạm vi hiện tại của JDK 11 cho thấy những quyền lợi của quy mô lịch update ngắn hơn. Các JEPs 309 và 318 ra mắt những tính năng mới, trong khi hai JEP khác sử dụng một chiêu thức lặp để tăng trưởng những tính năng hiện có .
Với việc phát hành JDK 9 vào tháng 9 năm 2017, những mô đun Java EE và CORBA đã không được tương hỗ. Một năm sau, với việc phát hành JDK 11, JEP 320 sẽ vô hiệu chúng khỏi JDK .
Và JEP 323 sẽ là một bước tiếp theo hài hòa và hợp lý sau khi JEP 286 giới thiệutype inference cho local variables trong JDK 10. Bạn nên mong đợi để thấy chiêu thức này liên tục hơn trong tương lai .

Lịch phát hành và hỗ trợ ngắn đòi hỏi khả năng thích ứng nhanh

Cùng với mô hình phát hành mới, Oracle cũng đã thay đổi mô hình hỗ trợ của họ. Mô hình mới phân biệt giữa các bản phát hành ngắn hạn và dài hạn.

Bản phát hành thời gian ngắn, như Java 9 và 10, sẽ chỉ được update cho đến khi bản phát hành tính năng tiếp theo được xuất bản. Vì vậy, tương hỗ cho Java 9 kết thúc vào tháng 3 năm 2018, và Java 10 sẽ không nhận được bất kể bản update chính thức nào sau tháng 9 năm 2018 .
Java 11 sẽ là bản phát hành dài hạn tiên phong. Oracle muốn tương hỗ những phiên bản này trong một khoảng chừng thời hạn dài hơn. Nhưng cho đến giờ đây, họ vẫn chưa nói rõ sẽ phân phối những update chính thức cho Java 11 trong bao lâu .
Là một nhà tăng trưởng ứng dụng, bạn sẽ cần phải quyết định hành động xem liệu mình có muốn update phiên bản Java sáu tháng một lần hay là sau vài năm. Ngoài ra, Oracle khuyến khích mọi người vận động và di chuyển sang loại sản phẩm Java SE Advanced. Nó gồm có tối thiểu năm năm tương hỗ cho mỗi lần phát hành dài hạn .