Компания Oracle опубликовала Java SE 10 и прекратила поддержку Java SE 9
Как сообщает opennet.ru после шести месяцев разработки компания Oracle выпустила платформу Java SE 10 (Java Platform, Standard Edition 10), в качестве эталонной реализации которой используется открытый проект OpenJDK. В Java SE 10 сохранена полная обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 10 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Solaris (SPARC), Windows и macOS. Разработанная в рамках проекта OpenJDK эталонная реализация Java 10 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
Выпуск примечателен переходом на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков. При выходе очередной версии прошлая ветка прекращает свое существование, но раз в три года формируется релиз с длительным сроком поддержки (LTS).
В частности, выход Java 10 ознаменовал прекращение поддержки ветки Java 9. В свою очередь ветка Java 10 будет поддерживаться до сентября 2018 года, после чего ее сменит Java 11. Пользователи, не желающие постоянно переходить на новые ветки, могут использовать ветку Java 8, которой присвоен статус LTS-релиза и обеспечена поддержка до декабря 2020 года.
Из ключевых новшеств Java 10 можно отметить:
- Выведение типа локальной переменной на основе типа инициализатора. Например, тип теперь можно явно не указывать при объявлении переменной с использованием инициализатора (var arr = new ArrayList&8249;String&8250;());
- В сборщике мусора G1 реализована возможность выполнения полного цикла сборки мусора в параллельном режиме (алгоритм mark-sweep-compact теперь выполняется в несколько потоков), минимизирущем задержки в ситуациях, когда невозможно обойтись без выполнения операции полной сборки мусора;
- Расширена возможность Class-Data Sharing ("CDS"), обеспечивающая совместный доступ приложений к общим классам. Отныне общие классы могут размещаться в отдельном совместно используемом архиве, что позволяет ускорить запуск приложений и снизить накладные расходы;
- Представлен экспериментальный JIT-компилятор Graal, написанный на Java и позволяющий динамически компилировать Java-код для HotSpot JVM. Новый JIT пока ограничен платформой Linux/x64 и пока отстает по производительности от традиционного JIT. для включения нового JIT-компилятора следует использовать опции "-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler";
- В состав OpenJDK включен набор корневых сертификатов удостоверяющих центров;
- В HotSpot VM включена поддержка распределения памяти для Java-объектов на альтернативных устройствах памяти, таких как NV-DIMM;
- Добавлен способ совершения callback-вызова для потоков без выполнения глобальной фиксации состояния VM (safepoint). В том числе данная возможность может использоваться для остановки отдельного потока, не прерывая работы остальных потоков;
- Представлен интерфейс для создания модулей с сборщиками мусора, позволяющий быстро заменить штатный сборщик мусора HotSpot JVM на альтернативные варианты;
- В java.util.Locale добавлена поддержка расширенных языковых Unicode-тегов, например, включающих символы для обозначения валюты, первого дня недели и часового пояса;
- Связанные с JDK Mercurial-репозитории (root, corba, hotspot, jaxp, jaxws, jdk, langtools и nashorn) объединены в один унифицированный репозиторий;
- Из состава JDK удалена утилита javah, функциональность которой дублируется в javac.