За последние несколько лет в мире 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.
-
Бесплатное приложение для обмена данными класса.
-
Распределение кучи на альтернативных устройствах памяти.
-
Новый стандартный набор корневых сертификатов.
-
Опережает сборку и 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
1
name app
2
type"java:8"
3
disk1024
5
hooks
7
build mvn clean install
8
relationships
10
database"database:mysql"
11
web
12
commands
13
start java -jar target/spring-boot-maven-mysql.jar --server.port=$PORT
14
Мы обновим этот файл до Java 11. Поэтому Platform.sh создаст контейнер, используя версию Java 11 вместо Java 8.
xxxxxxxxxx
1
name app
2
type"java:11"
3
disk1024
5
hooks
7
build mvn clean install
8
relationships
10
database"database:mysql"
11
web
12
commands
13
start java -jar target/spring-boot-maven-mysql.jar --server.port=$PORT
14
Приложение готово, поэтому пришло время переместить его в облако с помощью Platform.sh, выполнив следующие действия :
Создайте новый бесплатный пробный аккаунт .
Зарегистрируйтесь с новым именем пользователя и паролем или войдите в систему с использованием текущей учетной записи GitHub, Bitbucket или Google. Если вы используете стороннюю учетную запись , вы сможете установить пароль для своей учетной записи Platform.sh позже.
Выберите регион мира, в котором должен жить ваш сайт.
Выберите пустой шаблон.
После этого Platform.sh предоставит вам всю инфраструктуру и предложит удаленный репозиторий Git. Перед доступом не забудьте установить ключи SSH. Вам нужно всего лишь написать свой код, включая несколько файлов YAML, в которых указана желаемая инфраструктура, а затем передать его в Git и отправить.
xxxxxxxxxx
1
git remote add platform <platform.sh@gitrepository>
2
git commit -m "Initial project"
3
git push -u platform master
4
В следующем примере давайте используем образец Jakarta EE с сервером Payara. Мы будем использовать шаблон из Platform.sh . Мы сделаем аналогичную процедуру с Spring в файле приложения. Итак, мы возьмем файл заявки:
xxxxxxxxxx
1
name app
2
type"java:8"
3
disk1024
4
hooks
5
build mvn clean package payara-micro bundle
6
web
8
commands
9
start java -jar -Xmx512m target/microprofile-microbundle.jar --port $PORT
10
Затем обновите тип до «java: 11». Теперь мы запустим приложение с Java 11.
xxxxxxxxxx
1
name app
2
type"java:11"
3
disk1024
4
hooks
5
build mvn clean package payara-micro bundle
6
web
8
commands
9
start java -jar -Xmx512m target/microprofile-microbundle.jar --port $PORT
10
Будь то улучшения производительности, от которых выигрывают контейнеры, или тот факт, что обновления безопасности больше не производятся в версии 8, я надеюсь, вы увидите выгоду от обновления до Java 11. В следующей части этой серии мы немного поговорим о улучшения API, которые существуют в Java 11.