В этом посте я поделюсь своими заметками о замечательном выступлении Саймона Риттера под названием “JDK с 9 по 13, Как развивается Java с Саймоном Риттером”. Саймон Риттер является заместителем технического директора Azul Systems и работает в этой области уже долгое время. Беседа была организована Группой пользователей Java Campinas и спонсирована Mobile и Волнистая компания в городе Кампинас, штат Сан-Паулу, Бразилия. В примечаниях ниже кратко излагается мое понимание темы, обсуждавшейся во время лекции, поэтому дайте мне знать, не допустил ли я каких-либо недоразумений.
Саймон представил обзор того, как развивается java, и основные изменения, произошедшие с JDK 9 до настоящего времени. Java сильно изменила свой двоичный код и стратегию доставки. JDK 9 2-летней давности был последним крупным выпуском с введением около 90 новых функций, JDK 9 и 10 были промежуточными версиями, в которых Oracle начала очищать и удалять устаревшие функции. Некоторые функции, включенные в JDK 9, включают:
- Система модулей платформы Java (JPMS) :
- : Разрешена группировка пакетов из предыдущей версии и в итоге получилось 26 основных модулей для создания среды выполнения, специфичной для вашего приложения. JEP 260: Инкапсулируйте Большинство Внутренних API-интерфейсов
- ::Инкапсулируйте большинство внутренних API-интерфейсов Jdk по умолчанию, чтобы они были недоступны во время компиляции, и подготовьтесь к будущему выпуску, в котором они будут недоступны во время выполнения. JEP 282: j ссылка: Компоновщик Java
Новая модель выпуска для выпуска новых версий каждые 6 месяцев повышает гибкость разработки и позволяет быстро внедрять новые функции. Я буду очень рад, когда облачные провайдеры начнут поставлять новые версии JDK так же быстро, как будет выпущен JDK. Долгосрочная поддержка (LTS) для JDK теперь предоставляется каждые 3 года, и текущая версия LTS – JDK 11, это означает, что Oracle будет доставлять исправления в JDK 11 до следующего выпуска LTS .
OpenJDK также эволюционировал, чтобы соответствовать выпускам JDK, поэтому OpenJDK 11 и JDK11 теперь имеют одинаковые функции, и цель состоит в том, чтобы оба развивались вместе. Одно из основных различий между OpenJDK и JDK касается модели лицензии, в то время как JDK 11 и более поздние версии бесплатны только для среды разработки и тестирования, и вам необходимо оплатить подписку Oracle Java SE, чтобы использовать ее в производстве. OpenJDK использует лицензию GPLv2 без ограничений использования. JDK 8 остается неограниченно бесплатным, однако без официальных обновлений, таких как исправления безопасности и исправления ошибок.
JDK 10 появился с появлением новых интересных функций, таких как эта:
- JEP 286: Вывод типа локальной переменной : Улучшите язык Java, чтобы расширить вывод типа до объявлений локальных переменных с инициализаторами.
- JEP 307: Параллельный полный GC для G1 : Улучшите задержки в наихудшем случае G1, сделав полный GC параллельным.
- J EP 310: Класс приложений – Обмен данными : Улучшение запуска и занимаемой площади.
- JPG 317: Экспериментальный JIT-компилятор на основе Java: Включите JIT-компилятор на основе Java, Graal, для использования в качестве экспериментального JIT-компилятора на платформе Linux/x64.
- Новые API-интерфейсы для коллекций, строк и многого другого.
JDK11 считается отправной точкой для нового направления, которое Oracle дала Java, некоторые из новых функций:
- JEP 323: Синтаксис локальной переменной для лямбда-параметров : Разрешить использование var при объявлении формальных параметров неявно типизированных лямбда-выражений.
- JEP 330: Запуск Однофайловых Программ с Исходным Кодом : Улучшите средство запуска Java для запуска программы, поставляемой в виде одного файла исходного кода Java.
- JPG 181: Управление доступом на основе гнезд: Представляем nests, accesscontrolcontext, который соответствует существующему понятию вложенных типов.
- JPG 309: Динамические параметры ClassFileConstants: Расширьте формат файла класса Java для поддержки нового пула констант из.
- JEEP 318: Epsilon: Сборщик мусора ANOOP: Разработайте сборщик мусора, который обрабатывает выделение памяти, но не реализует никакого реального механизма восстановления памяти.
- JIP 321: HttpClient (стандарт): Стандартизировать инкубированный API HttpClient, представленный в JDK 9, через JEP 110 и обновленный в JDK 10.
- JEEP 333: ZGC: Масштабируемый сборщик мусора с низкой задержкой: Сборщик мусора Z, также известный как ZGC, является масштабируемым сборщиком мусора с низкой задержкой.
- Включение нового предиката, не(Предикат), чтобы разрешить такие интересные вещи, как list.stream().filter(не(Строка::пустая)
- Удаление API в том числе связанных с Java EE, таких как java.xml и java.xm.ws .
- И многое другое…
JDK12 начинался как первый в новой модели поставки каждые 6 месяцев, и он также обладал приятными функциями, что является отличительной чертой JEP 346 ниже:
- JEP 346: Быстрое возвращение неиспользуемой выделенной памяти из G1 : Улучшите сборщик мусора G1, чтобы автоматически возвращать память кучи Java в операционную систему при простое.
- JEP 325: Выражения переключения: Расширьте оператор переключения, чтобы его можно было использовать либо как оператор, либо как выражение.
- JEP 189: Шенандоа: Сборщик мусора с низким временем паузы : Добавьте новый алгоритм сбора мусора (GC) с именем Шенандоа, который сокращает время паузы GC, выполняя работу по эвакуации одновременно с запущенными потоками Java.
- JEP 344: Прерываемые смешанные коллекции для G1 : Сделайте прерываемые смешанные коллекции G1, если они могут превысить целевой показатель паузы.
- И многое другое…
Скоро выйдет JDK13, и вот некоторые функции, которые запланированы, и крутые проекты уже запущены:
- JEP 355: Текстовые блоки (предварительный просмотр) : Включен многострочный строковый литерал, который позволяет избежать необходимости в большинстве escape-последовательностей, автоматически форматирует строку предсказуемым образом и при желании предоставляет разработчику контроль над форматом.
- JEP 354: Переключение выражений (Предварительный просмотр) : Расширьте переключатель с включением ключевого слова yield.
- Проект Валгалла : Предоставьте место для изучения и инкубации продвинутых кандидатов на виртуальные машины Java и языковые функции.
- Внешний вид проекта : Исследуйте и внедряйте функции виртуальной машины Java и API, построенные на их основе, для реализации облегченных потоков пользовательского режима
В конце Саймон представляет Zulu JDK , JDK, созданный для его компании в качестве решения для компаний, которые хотят продолжать использовать JDK 8 и получать безопасные обновления даже после того, как Oracle перестанет это делать.
Вывод
Это был отличный разговор, Саймон овладел предметом и подробно рассказал об основных представленных функциях и о том, насколько динамичным будет развитие Java в ближайшие годы. Модель быстрой доставки меня взволновала, потому что в JDK каждые 6 месяцев можно вводить приятные функции, в то время как язык становится более увлекательным для написания, а JVM более надежной. Я хотел бы, чтобы облачные провайдеры могли сделать эти версии доступными так же быстро, как их выпустила oracle. Еще одна вещь, которая меня радует, – это способность java автоматически возвращать память кучи Java в операционную систему во время простоя, это удивительная функция. Смотрите мой другой пост здесь Автоматическое вертикальное масштабирование кучи Java.
Этот пост был первоначально опубликован в моем Блоге . Если у вас есть какие-либо сомнения или вопросы, не стесняйтесь оставлять комментарии здесь или связываться со мной в Twitter @educostadev .
Оригинал: “https://dev.to/educostadev/how-java-is-evolving-with-simon-ritter-jdk-9-to-13-469m”