Выпуск Java SE 13

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

Java SE 13 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 11, обновления для которого будут выпускаться до 2026 года. Прошлая LTS-ветка Java 8 будет поддерживаться до декабря 2020 года. Следующий LTS-релиз намечен на сентябрь 2021 года. Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков. На март следующего года запланирован выпуск Java 14, предварительные сборки которого уже доступны для тестирования.

Из новшеств Java 12 можно отметить:

  • Добавлена поддержка динамического дополнения архивов CDS (Class-Data Sharing), обеспечивающих совместный доступ приложений к общим классам. При помощи CDS общие классы могут размещаться в отдельном совместно используемом архиве, что позволяет ускорить запуск приложений и снизить накладные расходы. Новая возможность добавляет средства для динамического архивирования классов после окончания выполнения приложения. Помещённые в архив классы включают все загруженные в процессе работы программы классы приложения и сопутствующих библиотек, которые отсутствовали в изначально предоставленном базовом CDS-архиве.
  • В сборщик мусора ZGC (Z Garbage Collector) добавлена поддержка возвращения неиспользуемой памяти операционной системе;
  • Задействована переработанная реализация API Legacy Socket (java.net.Socket и java.net.ServerSocket), которая проще в сопровождении и отладке. Кроме того, предложенную реализацию проще будет адаптировать для работы с новой системой потоков в пространстве пользователя (fibers), развиваемых в рамках проекта Loom;
  • Продолжено развитие новой формы выражений «switch». Добавлена экспериментальная (Preview) возможность использования «switch» в форме не только оператора, но и как выражения. Например, теперь можно использовать конструкции вида:
         int numLetters = switch (day) {         case MONDAY, FRIDAY, SUNDAY -> 6;         case TUESDAY                -> 7;         case THURSDAY, SATURDAY     -> 8;         case WEDNESDAY              -> 9;     };    или       System.out.println(          switch (k) {              case  1 -> "one"              case  2 -> "two"              default -> "many"          }      );    

    В будущем на базе данной возможности планируется реализовать поддержку сопоставления по шаблонам;

  • Добавлена экспериментальная поддержка текстовых блоков, новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками. Например, вместо выражения
         String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`n" +                 "WHERE `CITY` = 'INDIANAPOLIS'n" +                 "ORDER BY `EMP_ID`, `LAST_NAME`;n";  

    теперь можно применять конструкцию:

        String query = """                 SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`                 WHERE `CITY` = 'INDIANAPOLIS'                 ORDER BY `EMP_ID`, `LAST_NAME`;                 """;  
  • Закрыто 2126 отчётов об ошибках, из которых 1454 устранены сотрудниками Oracle, а 671 сторонними участниками, из которых шестая часть изменений внесена независимыми разработчиками, а остальное представителями таких компаний, как IBM, Red Hat, Google, Loongson, Huawei, ARM и SAP.

Источник: http://www.opennet.ru/opennews/art.shtml?num=51509