Компания Oracle опубликовала Java SE 11
26 сентября 2018 года
После шести месяцев разработки компания Oracle выпустила платформу Java SE 11 (Java Platform, Standard Edition 11), в качестве эталонной реализации которой используется открытый проект OpenJDK. В Java SE 11 сохранена обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 11 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Solaris (SPARC), Windows и macOS. Разработанная в рамках проекта OpenJDK эталонная реализация Java 11 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
Java SE 11 отнесён к категории выпусков с длительным сроком поддержки (LTS), обновления для которого будут выпускаться до 2026 года. Выпуск обновлений для прошлого промежуточного выпуска Java 10 прекращён. Прошлая LTS-ветка Java 8 будет поддерживаться до декабря 2020 года. Следующий LTS-релиз намечен на сентябрь 2021 года. Напомним, что начиная с прошло выпуска проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.
Из новшеств Java 11 можно отметить:
- Поддержка протокола TLS 1.3 ( RFC 8446), который отличается удалением устаревших и ненадёжных криптографических примитивов (MD5, SHA-224) и возможностей (сжатие, повторное согласование, не-AEAD шифры, статический обмен ключами RSA и DH, указание unix-времени в Hello-сообщениях и т.п.), работает только в режиме forward secrecy (компрометации одного из долговременных ключей не позволяет расшифровать перехваченный сеанс), обеспечивает более высокую производительность, поддерживает режим 0-RTT (устраняет задержки при возобновлении ранее установленных HTTPS-соединений), поддерживает
потоковый шифр ChaCha20, алгоритм аутентификации сообщений (MAC) Poly1305, ключи аутентификации на основе цифровых подписей Ed25519, HKDF (HMAC-based Extract-and-Expand Key Derivation Function), ключи на основе алгоритмов x25519 ( RFC 7748) и x448 ( RFC 8031);
- Стабилизирован новый API для разработки HTTP-клиентов, поддерживающий HTTP/2.0 и WebSockets. Новый HTTP Client API пришёл на смену API HttpURLConnection;
- В состав включены инструментарии Java Mission Control (JMC) и Java Flight Recorder (JFR), которые ранее поставлялись только для платных подписчиков. Инструментарий предоставляет средства для мониторинга, диагностики, профилирования и выявления утечек памяти. JFR позволяет получить доступ к детальной низкоуровневой информации о работе JVM и даёт возможность эффективно анализировать текущие данные и произошедшие события без негативного влияния на производительность.
- Поддержка потокового шифра ChaCha20 и алгоритма аутентификации сообщений (MAC) Poly1305, разработанных Дэниелом Бернштейном ( Daniel J. Bernstein), Таней Ланге (Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 можно рассматривать, как более быстрые и безопасные аналоги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальных аппаратных ускорителей;
- Поддержка системы управления доступом Nestmate ( Nest-based access controls), которая адаптирована для корректной обработки доступа с учётом вложенных типов. Nestmate обеспечивает возможность обращения к приватным частям внутри группы классов, логически относящимися к одному и тому же компоненту, но компилируемым в разные файлы с классами. Новый механизм управления доступом позволяет избавиться от необходимости подстановки компилятором специальных промежуточных методов обеспечения доступа;
- Формат файлов с классами Java (.class) расширен поддержкой динамически создаваемых констант (пул CONSTANT_Dynamic). Загрузка CONSTANT_Dynamic приводит к делегированию создания констант в метод bootstrap, по аналогии с тем, как в метод bootstrap делегируются операции связывания при вызове invokedynamic;
- Предложен экспериментальный сборщик мусора ZGC (Z Garbage Collector), работающий в пассивном режиме и насколько это возможно минимизирующий задержки из-за сборки мусора. Время остановки при использовании ZGC не превышает 10 мс. При этом ZGC может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт;
- Добавлен экспериментальный сборщик мусора Epsilon, который ограничен выполнением операций распределения памяти и не реализует механизма освобождения и повторного задействования блоков (когда место в куче закончится, JVM завершит работу);
- Обеспечена возможность запуска программ, поставляемых в форме одного файла с исходным кодом;
- В разряд устаревших возможностей переведены JavaScript-движок Nashorn и инструментарий Pack200. Из поставки удалены модули Java EE и CORBA.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.