JavaRush /Blog Java /Random-VI /Java 12 đã có: có gì mới?

Java 12 đã có: có gì mới?

Xuất bản trong nhóm
Vì vậy, Java xuất hiện ở vị trí thứ 12. Và mặc dù đây không phải là bản phát hành LTS (nghĩa là không hỗ trợ lâu dài, không phải là bản phát hành sẽ được hỗ trợ lâu dài. Phiên bản 11 được coi là bản phát hành LTS đầu tiên có tám- thời gian hỗ trợ năm ), những điều thú vị xuất hiện trong bản cập nhật đó. Chúng ta hãy nhìn vào điều quan trọng nhất trong số họ. Hãy nhớ lại rằng trong Java, các đề xuất thay đổi được viết tắt là jeps (từ Đề xuất cải tiến JDK). Java 12 đã có: có gì mới?  - 1

JDK 12 thú vị nhất của Jep

189: Shenandoah: Công cụ thu gom rác có thời gian tạm dừng thấp (Thử nghiệm) Công cụ thu gom rác, Shenandoah, sử dụng thuật toán mới giúp giảm thời gian chạy bằng cách dọn dẹp đồng thời với các luồng Java đang chạy. Trong trường hợp này, thời gian tạm dừng ở Shenandoah sẽ giống nhau bất kể kích thước của vùng heap. Vì lý do nào đó, Oracle đã không đưa Sheandoah vào các bản phát hành “chính thức” của mình, mặc dù thực tế là các nhà phát triển coi tính năng này là một trong những tính năng quan trọng nhất trong bản phát hành mới. Vì vậy, nếu bạn định dùng thử Trình thu gom rác nâng cao, bạn cần sử dụng các bản dựng của bên thứ ba, chẳng hạn như Azul . 230: Microbenchmark Suite Microbenchmark là một microbenchmark đo hiệu suất của một số phần tử nhỏ. Trong Java, chúng được viết và chạy bằng khung JMH. Kể từ phiên bản 12, JMH đã được thêm vào JDK và đã có các thử nghiệm được viết trong đó, điều này giúp cuộc sống của các nhà phát triển trở nên dễ dàng hơn. 325: Biểu thức chuyển đổi (Xem trước) Một hình thức viết biểu thức mới bằng câu lệnh chuyển đổi. Trang tính năng cung cấp mã ví dụ bằng cách sử dụng switch truyền thống, trong đó việc sử dụng liên tục dấu ngắt khiến mã dài dòng không cần thiết, dẫn đến thường xuyên xảy ra lỗi ngẫu nhiên.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Các tác giả của bản cập nhật đề xuất giới thiệu một dạng mới của nhãn chuyển đổi “trường hợp L ->” để chỉ rõ rằng chỉ mã ở bên phải nhãn sẽ được thực thi nếu nhãn này phù hợp. Do đó, đoạn mã hiển thị ở trên có thể được rút ngắn đáng kể bằng cú pháp mới:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: JVM Constants API В пуле констант располагаются так называемые loadable constants. Это значения, например типа String or любого примитивного типа, а также run-time артефакты, такие How классы и методы. Во время работы с класс-fileми, программистам не помешали бы удобные инструменты для манипуляции с loadable constants. Authorы этого jep’а принялись решать эту проблему с помощью введения новых value-based типов символических ссылок, при этом каждая из них будет описывать конкретный вид констант. Код нововведения. 340: One AArch64 Port, Not Two Под этим сложным названием скрывается решение проблемы, образовавшейся ещё в Java 9, когда в ките появorсь 64-битные ARM-порты Oracle и aarch64 от Red Hat одновременно. При этом уже во время выхода JDK 11, 64-битную версию портов Oracle не поддерживала даже сама Oracle. Так что теперь 64-битные порты Oracle убрали, остались 32-битные ARM32, и 64-битные, более производительные, aarch64. 341: Default CDS Archives Очень приятное обновление, поскольку оно реально ускоряет запуск приложений. Не секрет, что при старте Java-applications начинает загрузку огромное количество классов, а это достаточно длительный процесс. CDS расшифровывается How Class Data Sharing, и эта функция позволяет упаковать все эти запускаемые при старте классы в специальный class data sharing архив, используя дефолтный список этих самых классов. В результате speed запуска приложений существенно возрастает. 344: Abortable Mixed Collections for G1 G1 — это сборщик мусора, который стал основным в JDK 9, сменив на этом посту Parallel GC. В Java 10 G1 научился собирать мусор в нескольких потоках. Однако его работой были довольны не все, одной из главных проблем оказались длительные паузы. Теперь их можно отменить. G1 на основе анализа поведения программы определяет объем работы, а затем собирает “живые” an objectы в Collection set пока не соберёт все, не останавливаясь. Часто G1 промахивался с подсчётом объёма работы и работал слишком долго. После внедрения jep-344 G1 может перейти на пошаговую сборку мусора и если время выполнения следующего шага выходит за рамки разумного, этот шаг можно прервать. 346: Promptly Return Unused Committed Memory from G1 Và một số cập nhật khác trong trại của trình biên dịch G1 nói trên. Đôi khi xảy ra tình trạng có rất nhiều bộ nhớ heap Java nhưng không ai sử dụng, bộ nhớ này. Trong Java 12, giờ đây bạn có thể “trả lại” bộ nhớ không hoạt động cho hệ điều hành. Trước đây, việc G1 bỏ bộ nhớ là rất hiếm nhưng giờ đây mọi thứ đã được đơn giản hóa. Với tính năng mới, ứng dụng được xác định là không hoạt động nếu khoảng thời gian kể từ lần xây dựng cuối cùng đã hết và không có chu kỳ đồng thời. Một tình huống khác là nếu hoặc nếu hàm getloadavg(), vốn đã được theo dõi trong một thời gian, hiển thị tải dưới ngưỡng chấp nhận được đã đặt. Nếu một trong hai sự kiện xảy ra, quá trình thu gom rác một phần sẽ bắt đầu. Những gì Java 12 không có: Chuỗi ký tự thô Nhiều nhà phát triển quan tâm đến tính năng này nhưng nó chưa bao giờ xuất hiện trong bản phát hành này. Các tác giả của nó quyết định rằng nó vẫn cần làm việc. Vì vậy, chúng tôi hy vọng rằng một hàm để làm việc thuận tiện với chuỗi ký tự chuỗi sẽ xuất hiện trong một trong các phiên bản tiếp theo của Java. Hỗ trợ cho chuỗi ký tự thô cho phép bạn làm việc với thông tin chuỗi bất kể ngôn ngữ. Điều này giúp loại bỏ sự cần thiết phải che chắn. Đặc biệt hữu ích trong các biểu thức thông thường, trong đó dấu gạch chéo ngược được sử dụng rộng rãi và trong Windows-path, nơi dấu gạch chéo ngược được sử dụng làm dấu phân cách. Nghĩa là, để tránh những cấu trúc như vậy: C:\\My\\Test\\Pack\\
Mọi lập trình viên thường gặp phải khó khăn này hay khó khăn khác trong công việc của mình. Đôi khi chúng liên quan đến sự thiếu kinh nghiệm của nhà phát triển, nhưng đôi khi là do bản thân công cụ không hoàn hảo. Java là một ngôn ngữ tuyệt vời nhưng nó vẫn chưa hoàn hảo. Có lẽ bạn đã gặp điều gì đó trong Java và biết bạn muốn thay đổi điều gì trong “công cụ” (ngôn ngữ) của mình? Chia sẻ trong các ý kiến!

kết luận

Không có cuộc cách mạng nào trong Java 12. Tuy nhiên, không ai lên kế hoạch cho nó. Tuy nhiên, một số cải tiến nhằm mục đích tối ưu hóa hoạt động của ứng dụng và tăng tốc công việc, đó là một tin tốt. Nhân tiện, IDEA đã hỗ trợ JDK 12, vì vậy bạn có thể thử các khả năng của nó. Tất nhiên, một số bản cập nhật ảnh hưởng trực tiếp đến người mới bắt đầu, mặc dù ngay cả những người mới bắt đầu học JavaRush cũng có thể chơi với công tắc mới (sau khi đặt cờ --enable-preview).
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION