+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Oracle випустила платформу Java SE 12 (Java Platform, Standard Edition 12)

Oracle випустила платформу Java SE 12 (Java Platform, Standard Edition 12)

Oracle випустила платформу Java SE 12 (Java Platform, Standard Edition 12), в якості еталонної реалізації якої використовується відкритий проект OpenJDK. У Java SE 12 збережено зворотну сумісність з минулими випусками платформи Java, всі раніше написані Java-проекти без змін будуть працездатні при запуску під керуванням нової версії. Готові для встановлення складання Java SE 12 (JDK, JRE та Server JRE) підготовлені для Linux (x86_64), Solaris (SPARC), Windows та macOS. Розроблена в рамках проекту OpenJDK еталонна реалізація Java 12 повністю відкрита під ліцензією GPLv2 з винятками GNU ClassPath, що дозволяють динамічне зв'язування з комерційними продуктами.

Java SE 12 віднесений до категорії випусків зі звичайним терміном підтримки, оновлення для якого випускатимуться до наступного релізу. Як гілка з тривалим терміном підтримки (LTS) слід використовувати Java SE 11, оновлення для якого будуть випускатися до 2026 року. Минула LTS-гілка Java 8 підтримуватиметься до грудня 2020 року. Наступний LTS-реліз заплановано на вересень 2021 року. Нагадаємо, що починаючи з випуску Java 10 проект перейшов на новий процес розробки, який передбачає більш короткий цикл формування нових релізів. Нова функціональність тепер розвивається в одній master-гілці, що постійно оновлюється, в яку включаються вже готові зміни і від якої раз на шість місяців відгалужуються гілки для стабілізації нових випусків.

Знововведення Java 12 можна відзначити:

  • Додана експериментальна підтримка збирача сміття Shenandoah, що працює з мінімальними призупиненнями (Low-Pause-Time Garbage Collector). Планувальник розвивається компанією Red Hat і примітний використанням алгоритму, що скорочує час зупинок під час складання сміття за рахунок проведення чищення паралельно з виконанням Java-додатків. Розмір вносяться збирачем сміття затримок передбачуваний і залежить від обсягу купи, тобто. для куп в 200 MB і 200 GB затримки будуть ідентичні (не виходять за межі 50 мс і зазвичай укладаються в 10 мс);
  • До складу включено набір для проведення точкових тестів продуктивності (microbenchmark), що дозволяє організувати безперервне тестування продуктивності різних компонентів кодової бази та спрощує додавання власних тестів;
  • Забезпечена попередня підтримка нової форми виразів "switch", що не вимагає використання оператора "break" і дозволяє об'єднувати мітки, що повторюються. Наприклад, замість
     switch (day1) {
           case MONDAY:
           case FRIDAY:
           case SUNDAY:
               System.out.println(6);
               break;
       ...
       int numLetters;
       switch (day2) {
           case MONDAY:
           case FRIDAY:
           case SUNDAY:
               numLetters = 6;
               break;
       ...
    
    нові вирази дозволяють вказати
     switch (day1) {
           case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
       ...
       int numLetters = switch (day2) {
        case MONDAY, FRIDAY, SUNDAY -> 6;
       ...
    
  • Представлено API JVM Constants (java.lang.invoke.constant), що дозволяє описати всі типи завантажуваних констант, що використовуються у файлах з Java-класами та в компонентах runtime;
  • Додано підтримку компактного форматування чисел (NumberFormat.Style.SHORT). Наприклад, замість 1000 може бути виведено "1K", а замість 1000000 - "1M";
  • Додано новий прапор "-XX:+ExtensiveErrorReport" для виведення більш детальної інформації про помилки у разі краху програми;
  • У реалізацію TLS додано підтримку потокового шифру ChaCha20 і алгоритму автентифікації повідомлень (MAC) Poly1305;
  • Запропоновано один уніфікований порт для архітектури AArch64 (раніше розвивалося два порти aarch64 і arm64, тепер залишено лише порт aarch64);
  • За умовчанням на основі пропонованого за замовчуванням списку класів у процесі складання JDK забезпечена генерація архівів CDS (Class-Data Sharing), які забезпечують спільний доступ додатків до загальних класів. За допомогою CDS загальні класи можуть розміщуватися в окремому архіві, що спільно використовується, що дозволяє прискорити запуск додатків і знизити накладні витрати. Надання архівів CDS скорочує час запуску і дозволяє позбавити користувачів виконання "-Xshare:dump" для створення CDS;
  • У збирач сміття G1 додана підтримка скасовується чистки змішаних колекцій (Abortable Mixed Collections), що дозволяє обірвати процес необов'язкової стадії чищення, якщо перевищено максимальний час припинення на складання сміття;
  • У збирачі сміття G1 реалізована можливість повернення операційній системі невикористовуваних областей пам'яті при неактивності програми.
  • У збирачах сміття G1 та Parallel з'явилася можливість виносу старих даних з купи на альтернативні пристрої пам'яті, такі як NV-DIMM;
  • У збирач сміття ZGC (Z Garbage Collector) додано можливість вивантаження невикористовуваних класів (class unloading) для вивільнення займаних ними структур даних. Вивантаження здійснюється в паралельному потоці і не впливає на виконання Java-програм;
  • Для Linux реалізований новий опціональний механізм запуску процесів POSIX_SPAWN (jdk.lang.Process.launchMechanism = POSIX_SPAWN), що дозволяє обійти деякі проблеми, що рідко виникають при відгалуженні дочірніх процесів. За промовчанням продовжує застосовуватися механізм VFORK;
  • Зазначається, що бібліотека Swing (client-libs/javax.swing) обмежена підтримкою лише старих випусків GTK, використання версії 3.20 та новіше призводить до проблем при малюванні деяких елементів інтерфейсу. При наявності в системі нових версій GTK як обхідний шлях рекомендується запускати програми з опцією "-Djdk.gtk.version=2.2" для відкату на GTK2+.

Інші новини

Найкраща ціна