Сегодня состоялся долгожданный релиз Java 9

Java задняя часть API Oracle

Долгожданная Java SE 9.0 будетОпубликовано 21 сентября 2017 г., это принесет некоторые важные изменения.

Основным изменением в JDK 9 является введение нового компонента программирования Java или модуля, который, согласно Oracle, представляет собой именуемый, самоописываемый набор кода и данных. Основной целью модульной технологии является уменьшение размера и сложности приложений Java и основной среды выполнения Java. С этой целью сам JDK был модульным, и Oracle надеется таким образом повысить производительность, безопасность и удобство сопровождения.

Для поддержки модулей Java 9 введен новый модульный формат файла JAR, который будет включать файл module-info.class в корневой каталог. Oracle также предоставляет инструменты, которые позволяют нам комбинировать и оптимизировать набор модулей для формирования пользовательского образа среды выполнения (образа), который не обязательно должен включать в себя всю среду выполнения Java. Другие изменения, вызванные модульностью, включают удаление файлов rt.jar и tools.jar из образа среды выполнения Java.

InfoQ иBen EvansПоболтал, чтобы узнать, что он думает о модульной системе Java 9.0, и он является членом исполнительного комитета Java Community Process (JCP).

Oracle объявила, что Java 8 будет выпуском с долгосрочной поддержкой, который будет поддерживаться до 2022 года, поэтому Эванс считает, что многие приложения останутся на Java 8 и вообще не будут обновляться до Java 9. Эванс добавил, что некоторые приложения могут использовать версию Java 8 для разработки и создания цепочек инструментов, но использовать среду выполнения Java 9 в производстве.

Использование Java 9G1Как сборщик мусора по умолчанию, заменяющий ранее использовавшийся по умолчаниюParallel GC. Эванс комментирует изменение:

InfoQ спрашивает, нужно ли реорганизовать большие кодовые базы в модули.Martijn Verburgмнение, что онJClarityГенеральный директор и соорганизатор Лондонской группы пользователей Java.

Вербург дает несколько общих советов по модульности и указывает на некоторые вещи, о которых нужно знать разработчикам при внедрении модульной системы Java 9:

  • Читайте книги Пола и Сандера.«Модульность Java 9»: это исчерпывающее руководство, в котором упоминаются все вещи, требующие внимания, объясняется, как модули, пакеты и JAR-файлы работают вместе;
  • На границах модулей используйте четко определенные интерфейсы и программы для этих интерфейсов;
  • Не разделяйте пакеты, то есть не делите пакет на два модуля. Принять OpenJDK имеетинструмент обнаружения, мы можем использовать его для проверки существующего кода;
  • Убедитесь, что нет циклических зависимостей (Jigsaw этого не допускает);
  • Компоновка исходного кода модуля отличается от той, к которой мы привыкли, и нам нужно убедиться, что инструмент сборки может обрабатывать ее соответствующим образом;
  • Jigsaw не поддерживает несколько версий.

По словам Вербурга, основные моменты связаны с круговыми зависимостями, разделением пакетов и обеспечением совместимости кода с интерфейсами. Эта работа должна быть проделана заранее для существующей кодовой базы, прежде чем пытаться выполнить модульный рефакторинг с помощью Jigsaw. Он также развеял заблуждение о том, что на Java 9 могут работать только модульные приложения.

Вербург считает, что Jigsaw станет краеугольным камнем, который позволит Java развиваться быстрее, благодаря неустанной работе Марка Рейнхольда, Алана Бейтмана, Мэнди Чанг и остальных членов команды Jigsaw, которые сделали это возможным.

В Java 9 также появился инструмент jshell. Эта среда командной строки обеспечивает функциональность Read-Eval-Print-Loop (REPL) для платформы Java. Его цель — упростить реализацию прототипов и помочь нам изучить варианты языка при кодировании в виде немедленных результатов и обратной связи.

И Вербург, и Эванс были рады видеть, что jShell включен в Java 9, но были разочарованы тем, что HTTP/2 предлагался только в качестве модуля-инкубатора в Java 9. Эванс считает, что, учитывая интерес сообщества к этой функции и помощь в ее реализации, Oracle следует выделить достаточные инженерные ресурсы для выпуска HTTP/2 в виде общедоступной версии.

Полный список изменений в JDK 9 можно найти на сайте Oracle.сайтПроверьте это. ОракулОбъявления делаются раз в полгода, что означает, что Java 9 был последним выпуском, ориентированным на основные функции, что отражает то, как Oracle в настоящее время управляет Java. Следующий этап эволюции Java будет следовать за более короткими циклами выпуска и будет выпускаться более функционально ориентированным образом. Еще неизвестно, останется ли Java лидером в серверных технологиях.

Посмотреть оригинальный английский:Long Awaited Java 9.0 Releasing This Week