Статьи

Java: пришло время перевести ваше приложение на Java 11

За последние несколько лет в мире Java произошло несколько интересных событий, среди которых, безусловно, новый контроль версий. Ранее выпуск новой версии мог занять от двух до трех лет. Теперь каждые шесть месяцев в дополнение к LTS для новых версий JVM появляется новый темп. В настоящее время уже ведется работа по выпуску Java 14, однако, как показывают последние исследования, использование Java 8 остается очень сильным для рынка. Этот пост призван поощрить и обсудить причины обновления до Java 11, текущей версии Java LTS .

Есть несколько обзоров Java, которые показывают, что Java 8 по-прежнему является самой популярной версией среди разработчиков, например, SNYK, который показывает Java 8 с 64% против 25% в Java 11 и Eclipse Foundation, где число еще более значимо с 80% с Java 8 против 20% с Java 11.

Действительно, Java 8 обладает потрясающими функциями, такими как Lambda , новые дата и время , и Streams, которые делают Java 8 самой любимой версией для разработчиков Java. Кроме того, выпуск каждые шесть месяцев пугает некоторых разработчиков, но у нас также есть долгосрочная версия поддержки, которая работает, и это происходит каждые три года, поэтому мы можем выпускать каждые шесть месяцев или переходить от LTS к LTS через три года .

Мы поговорим о текущей версии LTS и почему мы должны перейти к ней. Первая причина в целях безопасности. Публичной версии Java 8 больше нет. Таким образом, Java 8 не будет исправляться для распространенных уязвимостей и уязвимостей, CVE .

Вторая причина касается производительности. В Java 11 (и после Java 9) было несколько улучшений, таких как:

  • Следующая версия LTS.

  • Полная поддержка контейнеров Linux.

  • Поддержка параллельной полной сборки мусора на G1.

  • Бесплатное приложение для обмена данными класса.

  • Распределение кучи на альтернативных устройствах памяти.

  • Новый стандартный набор корневых сертификатов.

  • Новый ZGC и Эпсилон сборщика мусора.

  • Опережает сборку и GraalVM.

  • Безопасность транспортного уровня (TLS) 1.3.

 (Вы можете прочитать больше об этом в этом блоге .)

Мы можем видеть несколько тестов, которые показывают улучшение примерно на 20% с этими изменениями. Кроме того, нам не нужно обновлять код для перехода с Java 8; мы можем запустить код Java 8 на Java 11 JVM и увидеть некоторые улучшения, такие как память и время загрузки.

Этот пост не будет рассказывать о новостных функциях Java 11, но мы сосредоточимся на преимуществах перехода на Java 11. Чтобы ваш код работал, нам нужно знать о JEP 320: удалить Java EE и CORBA Модули . Если вы используете зависимости, вам нужно добавить эту зависимость в ваши любимые инструменты сборки. В этом посте есть несколько советов по миграции .

Обновите приложение Java 8

Чтобы показать, как легко перенести проект Java 8 в Java 11, давайте рассмотрим пример. Первый наш первый пост про Hello world на Platform.sh с Spring .

Чтобы обновить приложение, нам нужно обновить один файл: файл platform.app.yaml . Итак, мы берем этот файл:


YAML