JavaRush /Blog Java /Random-VI /Xu hướng Java năm 2022: JDK 18 và 19, Project Loom và Dat...

Xu hướng Java năm 2022: JDK 18 và 19, Project Loom và Data Mesh

Xuất bản trong nhóm
Chà, năm 2022 đã bắt đầu. Trong khi hầu hết mọi người vẫn đang đón năm mới với rượu sâm panh và Olivier, chúng ta sẽ nói về các xu hướng trong thế giới Java. Có lẽ điều này sẽ giúp bạn phân tích sự nghiệp của mình, tìm hiểu công nghệ mới hoặc đưa ra kế hoạch phát triển cho năm tới. Xu hướng Java năm 2022: JDK 18 và 19, Project Loom và Data Mesh - 1Chuyên gia và giảng viên ngôn ngữ Java Andrey Rodionov, đồng thời là kiến ​​trúc sư giải pháp tại EPAM và người đứng đầu ủy ban chương trình Devoxx Ukraine Oleg Tsal-Tsalko đã nói về những gì đang chờ đợi Java vào năm 2022 và tương lai gần.

Triển vọng của Java vào năm 2022 là gì?

Xu hướng Java năm 2022: JDK 18 và 19, Project Loom và Data Mesh - 2Năm nay chúng tôi dự kiến ​​sẽ phát hành hai phiên bản tiếp theo: JDK 18 (vào tháng 3) và JDK 19 (vào tháng 9). Có khả năng thú vị đối với hầu hết các nhà phát triển Java trong JDK 18 có thể là:
  • Máy chủ Web đơn giản tích hợp, không hỗ trợ bộ chứa servlet, có thể được sử dụng để tạo mẫu và thử nghiệm nhanh, tương tự như các máy chủ web mini tương tự trong Python, Ruby, PHP.
  • Kết hợp mẫu tiếp tục được cải thiện.
Đối với JDK 19, đã có Bản dựng truy cập sớm nhưng vẫn chưa có danh sách chính thức về những gì dự kiến ​​​​sẽ đưa vào đó. Tôi muốn tin rằng JDK 19 ít nhất sẽ bao gồm nguyên mẫu ổn định đầu tiên của Project Loom, nguyên mẫu dự thảo này đã xuất hiện gần đây và bản dựng mới nhất của nó dựa trên JDK 19. Chúng ta sẽ nói chi tiết hơn về Project Loom bên dưới.

Java vẫn là giải pháp duy nhất cho những lĩnh vực nào và nó thích hợp hơn ở đâu?

Andrey Rodionov:

May mắn thay, chúng ta không thể nói rằng không có sự thay thế nào cho Java trong bất kỳ lĩnh vực nào, nhưng chúng ta có thể nói về Java như một loại phương tiện vàng để phát triển các ứng dụng doanh nghiệp, chương trình phụ trợ và dịch vụ vi mô. Điều đáng chú ý là ngày càng có nhiều bản phân phối JDK khác nhau từ các nhà cung cấp khác nhau (ngoại trừ Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (được thành lập bởi những người đến từ Trung tâm Phát triển Oracle ở St. Petersburg) và những nhà cung cấp khác. Bộ phân phối đầy đủ có sẵn ở đây . Xu hướng Java năm 2022: JDK 18 và 19, Project Loom và Data Mesh - 3Luôn có những lựa chọn thay thế, nhưng Java được sử dụng nhiều nhất ở phần phụ trợ trong quá trình phát triển doanh nghiệp. Hầu hết các công ty lớn đều chọn Java cho các hệ thống lớn và phức tạp của họ. Các lý do đều giống nhau: số lượng nhà phát triển và chuyên môn trên thị trường, hệ sinh thái khổng lồ và nền tảng JVM mạnh mẽ.

Triển vọng của các ngôn ngữ jvm khác, đặc biệt là Kotlin, so với Java là gì?

Andrey Rodionov:

Để hiểu ngôn ngữ JVM nào phổ biến, chỉ cần mở tài liệu về Spring, Micronaut, Vert.x và xem các ví dụ mã được đưa ra bằng ngôn ngữ nào - Java và Kotlin sẽ phổ biến. Không thể nói rằng có một sự chuyển đổi lớn của các dự án sang Kotlin, nhưng mức độ phổ biến của nó đối với phần phụ trợ vẫn tiếp tục tăng lên và nhiều framework đang cố gắng đưa nó vào hệ sinh thái của họ. Đối với Scala, các phiên bản mới đang được phát hành và nó được sử dụng tích cực hơn nữa cho ML, xử lý dữ liệu và nơi mô hình lập trình chức năng thuận tiện hơn.

Oleg Tsal-Tsalko:

Các ngôn ngữ JVM khác khá hấp dẫn và ngày nay việc một dự án sử dụng nhiều ngôn ngữ lập trình là điều khá bình thường. Đối với tôi, có vẻ như lý do tại sao các ngôn ngữ JVM mới không thể thay thế Java là như sau:
  • Chúng không ngầu đến mức mọi người sẽ lấy chúng và chuyển sang dùng chúng.
  • Chúng được sử dụng trong cùng phân khúc với Java.
  • Java từng chút một tận dụng những điểm tốt nhất của các ngôn ngữ khác và trở nên tốt hơn.

Liệu chất lượng Java có bị giảm do khoảng thời gian phát hành ngắn hơn không?

Oleg Tsal-Tsalko:

Tôi nghĩ không có. Ít nhất bây giờ tôi có thể nhận ra những điều tích cực hơn từ những lần phát hành thường xuyên. Chúng tôi thấy rằng các tính năng mới thú vị xuất hiện thường xuyên hơn nhiều. Bây giờ bạn không phải đợi 5 năm để có thứ gì đó mới xuất hiện trong ngôn ngữ. Tất nhiên, bây giờ bạn không nên mong đợi những bản phát hành hoành tráng như Java 8, bởi vì các tính năng hiện xuất hiện theo từng phiên bản nhỏ.

Có tính năng nào trong các phiên bản Java mới đặc biệt quan trọng đối với các nhà phát triển không?

Oleg Tsal-Tsalko:

Các phiên bản gần đây của Java đã giới thiệu một số tính năng thú vị như Khớp mẫu, Lớp kín và Bản ghi. Tôi khuyên bạn nên nhìn vào khả năng của họ. Tất nhiên, các tính năng nghiêm túc và được mong đợi nhất đã được lên kế hoạch trong Project Loom và Project Valhalla, nhưng tôi nghĩ rằng các tính năng trong các dự án này cũng sẽ được phát hành dần dần.

Khung mùa xuân: liệu nó có tiếp tục mở rộng hệ sinh thái của mình để phù hợp với nhu cầu đa dạng không?

Andrey Rodionov:

Đối với Spring Framework, sự phát triển của nó tập trung vào việc hỗ trợ các tính năng khác nhau của Spring Cloud và khả năng biên dịch Spring Boot thành các tệp nhị phân gốc - dự án Spring Native, dự kiến ​​sẽ trở thành một phần của Spring Core trong tương lai. Về mặt này, Spring tụt lại phía sau Micronaut và Quarkus do tích cực sử dụng phản xạ và tạo mã động. Về Spring Framework 6, tôi khuyên bạn nên xem báo cáo Spring 6 and Beyond Có gì mới trong Spring Framework 6? từ hội nghị Joker (từ Oleg Dokuka và Alexey Nesterov). Những vấn đề quan trọng là việc chuyển đổi sang JDK 17, từ bỏ Cấu hình XML và Autowire thông qua các bộ cài đặt, phát triển hơn nữa khả năng hỗ trợ Kotlin và dự án Spring Fu.

Oleg Tsal-Tsalko:

Spring, với tư cách là Java FW phổ biến nhất hiện nay, không muốn bỏ cuộc. Tôi chắc chắn rằng nhóm phát triển sẽ nỗ lực hết mình vào việc phát triển Spring. Mùa xuân lấp đầy ngày càng nhiều ngóc ngách. Ví dụ: Spring đã làm được rất nhiều điều trong lĩnh vực Luồng phản ứng/Lập trình phản ứng với Project Reactor của nó. Bây giờ họ đang quảng bá giao thức RSoket, giao thức này cũng có vẻ đầy hứa hẹn.

Hãy cho chúng tôi biết về dự án Loom: nó dùng để làm gì, giải quyết những vấn đề gì?

Andrey Rodionov:

Project Loom có ​​lẽ là sự đổi mới thú vị nhất, có thể trở thành một sự thay đổi mang tính kiến ​​tạo mới cho toàn bộ nền tảng JVM và tất cả các ngôn ngữ trên JVM. Project Loom có ​​thể không ảnh hưởng nhiều đến các nhà phát triển thông thường, nhưng nó chắc chắn sẽ ảnh hưởng đến toàn bộ hệ sinh thái, thư viện, khung và các ngôn ngữ JVM khác sử dụng đa luồng. Project Loom giới thiệu một tính năng trừu tượng hóa luồng mới - luồng ảo (tương tự như coroutines). Nếu trước đây một luồng Java được liên kết trực tiếp với một luồng của hệ điều hành (OS) và việc tạo một luồng mới trong Java dẫn đến việc tạo ra một luồng hệ điều hành mới, thì với các luồng ảo, mối quan hệ một-một này sẽ bị phá vỡ. Khi tạo một luồng ảo mới, một luồng hệ điều hành mới sẽ không được tạo và một trong những luồng được gọi là luồng sóng mang (một loại tương tự nào đó của nhóm luồng hệ điều hành) sẽ được sử dụng lại để thực hiện các phép tính trực tiếp. Do đó, một số luồng ảo có thể chạy trên một luồng hệ điều hành. Đối với các tác vụ tính toán, mô hình luồng ảo này không mang lại bất kỳ ưu điểm nào mà còn làm chậm tốc độ tính toán, nhưng đối với các tác vụ chặn như xử lý yêu cầu HTTP, chờ phản hồi từ cơ sở dữ liệu hoặc từ microservice, mô hình này sẽ là một giải pháp hữu hiệu. lợi thế đáng kể. Thực tế là với mô hình phân luồng hiện tại, việc chặn/chờ một luồng Java đã dẫn đến các luồng hệ điều hành nhàn rỗi - điều này gây lãng phí tài nguyên và buộc phải tạo thêm các luồng hệ điều hành. Trong mô hình luồng ảo, việc chặn/chờ một luồng ảo sẽ khiến luồng sóng mang trên đó luồng ảo đang chạy được giải phóng và một luồng ảo khác chạy trên đó. Bằng cách này, các luồng hệ điều hành sẽ được sử dụng tối ưu hơn và sẽ cần ít luồng hơn để thực hiện các tác vụ tương tự. Theo đó, các nhà sản xuất thư viện, framework và ngôn ngữ JVM sẽ phải điều chỉnh mã của họ cho các luồng ảo. Do đó, họ sắp phải viết lại :) Ngoài mô hình luồng ảo, người ta cũng có kế hoạch giới thiệu một API mới để đơn giản hóa việc điều phối luồng - cái gọi là đồng thời có cấu trúc. Ví dụ: bây giờ, tính đồng thời có cấu trúc được sử dụng tích cực trong coroutine Kotlin và Scala ZIO. Thật không may, phiên bản JDK và thậm chí cả năm phát hành của Project Loom vẫn chưa được biết. Khi được hỏi về ngày phát hành, kiến ​​trúc sư trưởng của nền tảng Java, Brian Goetz, trả lời bằng một câu triết lý: “Nó sẽ sẵn sàng, khi nào nó sẵn sàng”. Vì vậy, chúng tôi đang chờ đợi và có thể thử các bản dựng thử nghiệm của Project Loom .

Oleg Tsal-Tsalko:

Loom là một dự án lớn, trong đó nhóm OpenJDK và Oracle đang nghiên cứu các cải tiến Đồng thời trong Java và JVM: luồng ảo, sợi và phần tiếp theo. Nhiều khả năng, việc phát hành các tính năng này sẽ diễn ra dần dần. Hiện tại chỉ có các bản dựng Truy cập sớm để hỗ trợ chủ đề Ảo. Nói cụ thể về các luồng ảo, mục tiêu chính của nó là đơn giản hóa mô hình phát triển đa luồng trong Java bằng cách sử dụng hàng triệu luồng nhẹ có cùng ngữ nghĩa như các luồng nền tảng thông thường. Dưới lớp vỏ bọc, các luồng này sẽ được quản lý bên trong ForkJoinPool và được các luồng nền tảng sử dụng lại.

Những dự báo nào cho sự phát triển của Java trong thế giới xu hướng toàn cầu - dịch vụ vi mô, kiến ​​trúc đám mây, blockchain, AI?

Andrey Rodionov:

Nếu chúng ta nói về các xu hướng toàn cầu thì chúng không có nhiều thay đổi. Như trước đây, xu hướng chính tiếp tục là Kubernetes và cơ sở hạ tầng xung quanh nó ở dạng lưới Dịch vụ . Lưới dữ liệu cũng đang trở nên phổ biến như một loại trừu tượng để quản lý các nguồn và kho dữ liệu phân tán.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION