Ответ
Переход с JDK 8 (LTS) на JDK 11 (LTS) — один из самых значимых в экосистеме Java. Вот ключевые изменения:
1. Модульная система (Project Jigsaw)
- JDK 11: Введена модульная система Java Platform Module System (JPMS). Сам JDK разделен на модули (например,
java.base). Это позволяет создавать минимальные образы приложений (jlink) и улучшает инкапсуляцию. - JDK 8: Монолитная структура
rt.jar.
2. Удаленные модули и API
- Удален Java EE и CORBA модули:
java.xml.ws,java.xml.bind(JAXB),java.activation,java.corbaи др. Перемещены в отдельные библиотеки (например, Jakarta EE). - Удалена утилита
javafx: Вынесена из JDK в отдельный проект OpenJFX.
3. Новые возможности языка и API
- Локальные переменные в лямбда-выражениях (Java 10):
varможно использовать в лямбда-параметрах. - Новые методы в стандартных API:
String:isBlank(),lines(),repeat(n),strip()(Unicode-аware аналогtrim()).Files:readString(),writeString().Collection:toArray(IntFunction<T[]>).Optional:isEmpty().
4. Запуск и компиляция
- Запуск исходного кода: Можно запустить файл
.javaбез явной компиляции:java HelloWorld.java. - Утилита
javacможет компилировать для более старой версии платформы без установки этой версии JDK (опция--release).
5. Сборщик мусора
- G1GC стал сборщиком по умолчанию (вместо Parallel GC).
- Удален устаревший сборщик CMS (Concurrent Mark-Sweep) (объявлен
deprecatedв JDK 9).
6. Производительность и безопасность
- Новые алгоритмы шифрования: Поддержка TLS 1.3, алгоритм ChaCha20-Poly1305.
- Улучшения производительности: Новые реализации
SHA-3хэшей, улучшения вHashMapиConcurrentHashMap.
7. Лицензирование и дистрибутивы
- Изменение лицензии: С JDK 11 Oracle перешла на коммерческую лицензию для своих билдов для production-использования. Это стимулировало использование свободных билдов OpenJDK от других поставщиков (Adoptium/Temurin, Amazon Corretto, Azul Zulu).
Практический итог: Обновление с JDK 8 на 11 требует проверки зависимостей (удаленные API), возможной адаптации под модули и пересмотра лицензионной политики, но дает преимущества в безопасности, производительности и размере приложений.
Ответ 18+ 🔞
А, ну это же классика, блядь! Переход с восьмой джавы на одиннадцатую — это как переехать из хрущёвки в новостройку, где половину розеток забыли сделать, зато лифт не застревает. Слушай, разберём по косточкам, что там нахуй поменялось.
1. Модули, ёпта! (Project Jigsaw)
- JDK 11: Тут ввели модульную систему, JPMS. Теперь вся платформа — как конструктор лего. Есть базовый модуль
java.base, а остальное — по желанию. Можно собрать своё приложение с помощьюjlinkтак, что оно будет весить, как перо, а не как этот старый монолит. - JDK 8: А вот тут была одна большая, жирная банка
rt.jar. Всё в одной куче, как носки в шкафу у холостяка. Найти что-то — полдня, а выкинуть лишнее — нихуя.
2. Что отрезали, блядь
- Выпилили к хуям Java EE и CORBA: Все эти
java.xml.ws,java.xml.bind(JAXB) — отправили в отдельный проект Jakarta EE. Хочешь пользоваться — качай отдельно, как соус к пельменям. - JavaFX тоже вынесли: Теперь это отдельный проект OpenJFX. Не хочешь — не бери. Всё, как в супермаркете.
3. Новые плюшки в языке
varв лямбдах (с Java 10): Теперь можно и там писатьvar, а не явно тип указывать. Удобно, но глаза сначала разбегаются.- Куча новых методов в стандартных классах:
String:isBlank()(проверяет, не пустая ли строка или из пробелов),lines()(разбивает на строки),repeat(n)(повторяет строку, как попугай),strip()(умныйtrim(), который с юникодом дружит).Files:readString(),writeString(). Теперь чтобы прочитать файл в строку, не нужно городить огород изBufferedReader. Красота, блядь!Optional: ПоявилсяisEmpty(). Наконец-то, а то!isPresent()глаза резал.
4. Как запускать-то теперь?
- Запуск исходников на прямую: Представляешь, можно просто написать
java HelloWorld.java, и оно само скомпилирует и запустит! Магия, сука! Для мелких скриптов — просто песня. - Утилита
javacпоумнела: можно скомпилировать код под старую версию, не имея её установленной. Опция--releaseрулит.
5. Мусорщики (Garbage Collectors)
- G1GC стал дефолтным вместо старого Parallel GC. Он как более умный уборщик: старается работать с меньшими паузами.
- А старичка CMS (Concurrent Mark-Sweep) вообще выкинули на мороз. Его в девятой версии объявили устаревшим, а тут и вовсе прикончили. RIP.
6. Скорость и безопасность
- Новые алгоритмы шифрования: Поддержка TLS 1.3, алгоритм ChaCha20-Poly1305. Всё для того, чтобы твой трафик было сложнее прослушать.
- Улучшения под капотом: Новые реализации
SHA-3, оптимизации вHashMapиConcurrentHashMap. Всё должно работать чуть шустрее, если, конечно, ты не написал кривой код, блядь.
7. Лицензии — вот где пиздец начался!
- Oracle взяла и поменяла правила игры: С 11-й версии их билды для продакшена стали платными по новой лицензии. Подняли всех на уши, ебать.
- Но народ не растерялся: Появилась куча бесплатных билдов OpenJDK от других ребят: Adoptium (ранее AdoptOpenJDK, теперь Temurin), Amazon Corretto, Azul Zulu. Бери любой, они все совместимы. Главное — не нарваться на лицензионные грабли от Oracle.
Итог, блядь, практический: Переходить с 8 на 11 — дело нужное. Безопаснее, быстрее, современнее. Но готовься, что какие-то старые библиотеки, которые тащили удалённые API, могут отвалиться. Придётся искать замену или обновлять зависимости. И с лицензиями голову поломать. Но игра, в целом, стоит свеч. Главное — не бояться и тестировать всё заранее, а не когда уже всё на боевом сервере горит синим пламенем.