Наша компания планирует перейти на AdoptOpenJdk 11 с Oracle JDK8, на котором работает Wildfly 10. Весь код и сервер wildfly будут одинаковыми (написаны и поддерживаются JDK8), и, поскольку java обратно совместим, я думаю, что теоретически он должен работать, но есть ли какие-либо проблемы, о которых мы должны знать?
Быстрый ответ: вы использовали классы Sun? Вам нужно будет реорганизовать их. Вы хотите использовать модули? Впереди много работы. Внеплановая замена? Все хорошо. (вы можете обнаружить, что некоторые предварительно упакованные зависимости были удалены с JEE, поэтому вам нужно будет добавить их как зависимости компиляции)
Java 11 не имеет полной обратной совместимости с Java 8. Многие классы были удалены, структура JDK и JRE отличается и многое другое. Просто просмотрите вопросы, отмеченные java-11
.
Спасибо всем за их понимание, я думаю, что знаю ответ, который я ищу.
@Robert, структура другая, но модули не являются обязательными. Автоматические/безымянные модули работают так же, как решение до JDK9.
@LppEdd Затем попробуйте запустить проект на Java 11, который использует Jaxb, JavaFX, Java WebStart, JavaEE или классы из com.sun.*, и посмотрим, что произойдет.
@ Роберт, это то, что я написал двумя комментариями выше. Но это не значит, что они несовместимы. Это просто требует компиляции зависимостей вместо того, чтобы быть предварительно упакованным
Есть много обновлений от JDK 8 до JDK 11. Я бы рекомендовал просто перейти на AdoptOpenJdk 8 в краткосрочной перспективе. Ваш конкретный код может быть в порядке, но у вас также есть огромный набор зависимостей, которые могут использовать что-то, что нуждается в обновлении. Например, какой у вас инструмент сборки? Gradle нужно было обновить, потому что ему нужна была более новая версия ASM. Вы используете JAX-RS? Джерси 2.27 не работает на Java 11.
JavaEE сейчас находится в странном положении, потому что Oracle фактически свалил его на основу Eclipse (теперь она называется JakartaEE). Потребуется некоторое время, чтобы разобраться.
Это отличное понимание. Я также прочитал в комментариях выше, что многие классы были удалены, поэтому для нас это не простое обновление JDK. Я должен подождать, пока все библиотеки их поддержат.
Я перешел с openjdk-8 на openjdk-11.
Шаги, которым я следую:
1. Добавьте отсутствующие зависимости Java в jdk11
2. Обновите/удалите поддерживаемые плагины (необходимо обновить ASM до 7.1, cglib или другие библиотеки для работы с байтами)
3. Измените JAVA_OPTIONS, связанные с GC.
4. Поддержка Wildfly для java11
Подробнее о версиях libs см. связь
Это очень интересная тема, но, к сожалению, противоречит правилам SO: вопросы, в которых нас просят порекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебник или другой сторонний ресурс, не относятся к теме Stack Overflow, поскольку они, как правило, привлекают самоуверенные ответы. и спам. Вместо этого опишите проблему и то, что уже было сделано для ее решения.