Java 11 была выпущена с элементами управления доступом на основе nest, динамическими константами файлов классов и новым сборщиком мусора.
JDK 11-это эталонная реализация с открытым исходным кодом версии 11 платформы Java SE 11. Готовые к производству двоичные файлы под GPL доступны в Oracle; двоичные файлы от других поставщиков вскоре появятся.
Эта версия является первой из выпусков долгосрочной поддержки (LTS), которые Oracle анонсировала в сентябре прошлого года. Начиная с Java SE 9 и далее, Oracle предоставляет Oracle JDK бесплатно в рамках BCL, но также предоставляет сборки OpenJDK под лицензией с открытым исходным кодом, аналогичной лицензии Linux. План состоит в том, чтобы сделать сборки Oracle JDK и OpenJDK от Oracle взаимозаменяемыми и нацелить их на разработчиков и организации, которым не нужна коммерческая поддержка или инструменты управления предприятием. Начиная с этой версии, бесплатная версия Oracle JDK ограничена для использования в целях разработки, тестирования, прототипирования или демонстрации.
Это важный аспект, который следует иметь в виду, потому что это означает, что важно загрузить сборку OpenJDK Java 11, в противном случае Oracle потребует от вас заплатить за лицензию, если вы используете ее Oracle JDK в коммерческих целях.
Основные улучшения в Java 11 начинаются с добавления элементов управления доступом на основе nestmates — nest. Они предназначены для того, чтобы соответствовать существующему понятию вложенных типов в Java. Гнезда позволяют классам, которые логически являются частью одной и той же сущности кода, но которые компилируются в отдельные файлы классов, получать доступ к закрытым членам друг друга без необходимости компиляторов вставлять методы моста, расширяющие доступность
Также были добавлены динамические константы файлов классов. Они расширяют формат файла класса Java, и загрузка динамической константы файла класса делегирует создание методу начальной загрузки. Они были введены для снижения затрат и сбоев при создании новых форм материализуемых констант файлов классов, чтобы разработчики языков и разработчики компиляторов могли быть более творческими при добавлении функций.
Еще одним улучшением новой версии является добавление не одного, а двух новых сборщиков мусора, оба из которых все еще находятся на экспериментальной стадии, Epsilon предназначен для обработки выделения памяти, но не реализует никакого реального механизма восстановления памяти. Его цель состоит в том, чтобы обеспечить полностью пассивную реализацию GC с ограниченным лимитом выделения и минимальными затратами на задержку за счет объема памяти и пропускной способности памяти.
Второй новый сборщик мусора, ZGC, представляет собой масштабируемый сборщик мусора с низкой задержкой, который стремится поддерживать время паузы GC менее 10 мс и обрабатывать кучи размером от относительно небольших (несколько сотен мегабайт) до очень больших (много терабайт). Он также нацелен на снижение пропускной способности приложений менее чем на 15% по сравнению с использованием G1.
Другие улучшения включают в себя версию бортового самописца с открытым исходным кодом, которая до сих пор была частью коммерческого распространения. Это платформа сбора данных для устранения неполадок Java-приложений и JVM HotSpot. Существует также новая стандартная библиотека HTTP, которая стандартизирует инкубированный HTTP-клиентский API, представленный в JDK 9.