Сегодня состоялся первый релиз Java 11. Это первая LTS (Long Time Support) версия Java, после изменения политики выпуска новых версий начиная с Java 9. Публичные обновления Java 11 будут выпускаться до сентября 2023 года.
В JDK 11 внесены следующие изменения:
- Стек развёртывания апплетов и WebStart-приложений, объявленный устаревшим в Java 9, теперь удалён окончательно. Вместе с удалением стека развёртывания исчез список поддерживаемых браузеров.
- Удалено автоматическое обновление JRE и сам JRE для Windows и MacOS.
- Вместо JRE и Server JRE предлагается использовать утилиту
jlink
для создания меньших кастомных рантаймов. - JavaFX более не является частью JDK, а поставляется отдельно из openjfx.io.
- Java Mission Control, поставлявшийся вместе с JDK 7, 8, 9, 10 также перестал быть частью JDK и поставляется отдельно.
]*] Формат обновлений для Windows переведён с
tar.gz
наzip
, как на более часто используемый в этой операционной системе. - Формат обновлений для MacOS переведён с
.app
на.dmg
, как на более соответствующий стандартам этой операционной системы.
Изменения в JDK:
- JEP 327 Unicode 10 включая 16018 новых символов среди которых:
а. 19 новых символов для 4K TV стандарта
б. символ Биткоина
в. 128 эмоджи-символов
г. 10 новых алфавитов, среди которых: албанский, брахманский (11-го века) и прочая экзотика.
д. 18 новых блоков символов для новых и существующих алфавитов, среди которых Cyrillic Extended-C. - JEP 321 HTTP Client (Standard) стандартизирован и переведён из
jdk.incubator.http
вjava.net.http
. - В интерфейс
Collection
добавленtoArray(IntFunction<T[]>)
Default Method, перегружающийtoArray(T[])
. Это привело к несовместимости со старым кодом, в котором есть вызовtoArray(null)
. Теперь такой вызов приводит к ошибке компиляции и должен быть изменён на аналогичный с переводомnull
в требуемый тип. - Обновлены локали для Unicode CLDR v33
- Добавлена возможность ленивого создания потоков компиляции. Включается опцией
-XX:+UseDynamicNumberOfCompilerThreads
. - Добавлен новый экспериментальный Scalable Low-Latency Garbage Collector, известный под именами Z и ZGC. Включается одновременным использованием опций
-XX:+UnlockExperimentalVMOptions
и-XX:+UseZGC
. - JEP 318 Epsilon, A No-Op Garbage Collector новый ничего не освобождающий сборщик мусора, предназначенный для тестирования.
- JEP 331 Low-Overhead Heap Profiling - поддержка низкозатратного профилирования выделения памяти в куче. Доступно через JVMTI.
- JEP 329 ChaCha20 and Poly1305 Cryptographic Algorithms.
- Системные свойства
java.home
,user.home
,user.dir
иuser.name
теперь неизменяемы
И ещё много других изменений. Также можно упомянуть удаление поддержки CORBA и мониторинга JVM через SNMP. Из JDK удалены модули, связанные с Java EE. По умолчанию используется не GTK2, а GTK3. Расширено использование нового ключевого слова var, которое теперь может использоваться при объявлении параметров лямбд. При этом все параметры таких лямбд обязаны быть var. Удалены фонты Lucida. Плагин javax.imageio больше не поддерживает JPEG с альфа каналом, судя по всему из-за проприетарности старой реализации.
JDK 11 можно скачать тут. Также следует обратить внимание на то, что изменена лицензия Oracle JDK. Теперь она GPL+CE, как и у OpenJDK.
Для переходящих на Java 11 LTS с Java 8 такой переход добавит ещё и массу новшеств Java 9 и Java 10, перечислять которые тут излишне.
>>> Подробности