Особенности JDK 10

Основные функции JDK 10 включают в себя:

  • Вывод типа локальной переменной, чтобы улучшить язык Java, чтобы расширить вывод типа для объявлений локальных переменных с инициализаторами.
  • Параллельная полная сборка мусора для сборщика мусора G1 для уменьшения задержек в наихудшем случае.
  • Совместное использование данных класса приложений для оптимизации времени запуска и занимаемой площади. Существующая функция совместного использования данных классов расширена, поэтому классы приложений можно помещать в общий архив.
  • Экспериментальный компилятор «точно в срок» Graal можно использовать на платформе Linux/x64.
  • Осведомленность о докере. При работе в системах Linux виртуальная машина Java (JVM) будет знать, работает ли она в контейнере Docker. Информация о контейнере — количество процессоров и общий объем памяти, выделенной контейнеру, — будет извлекаться JVM вместо того, чтобы запрашивать операционную систему. (Количество процессоров, доступных для процесса Java, рассчитывается из заданных наборов, долей или квот процессоров.)
  • Три новых параметра JVM, чтобы предоставить пользователям контейнера Docker больший контроль над системной памятью.
  • Исправление ошибки для исправления механизма присоединения при попытке присоединения из хост-процесса к процессу Java, находящемуся в контейнере Docker.
  • Сокращение времени запуска инструмента jShell REPL, особенно при использовании стартового файла с большим количеством фрагментов.
  • Новые API, позволяющие лучше создавать неизменяемые коллекции. Методы copyOf, Set.copyOf и Map.copyOf создают новые экземпляры коллекции из существующих экземпляров. Новые методы toUnmodifiableList, toUnmodifiableSet и toUnmodifiableMap были добавлены в класс Collectors в пакете Stream, что позволяет собирать элементы Stream в неизменяемую коллекцию.
  • Вывод типа локальной переменной, чтобы улучшить язык для расширения вывода типа на локальные переменные. Намерение состоит в том, чтобы уменьшить «церемонию», связанную с кодированием, сохраняя при этом приверженность статической безопасности типов.
  • Чистый интерфейс сборщика мусора для улучшения изоляции исходного кода различных сборщиков мусора. Цели этой работы включают лучшую модульность для внутреннего кода сборки мусора в виртуальной машине HotSpot и упрощение добавления нового сборщика мусора в HotSpot.
  • Параллельная полная сборка мусора для сборщика мусора G1. Цель состоит в том, чтобы уменьшить задержки в худшем случае за счет реализации параллелизма.
  • Включение HotSpot для выделения кучи объектов на альтернативном устройстве памяти, таком как модуль памяти NVDIMM, указанный пользователем. Эта функция предполагает, что будущие системы могут иметь разнородные архитектуры памяти.
  • Включение компилятора JIT на основе Java Grall для экспериментального использования на платформе Linux/x64.
  • Объединение репозиториев леса JDK в единый репозиторий для оптимизации разработки. База кода до сих пор была разбита на несколько репозиториев, что может вызвать проблемы с управлением исходным кодом.
  • Совместное использование данных классов приложений для уменьшения занимаемой площади за счет совместного использования общих метаданных классов между процессами. Время запуска также улучшено.
  • Локальные рукопожатия потока для выполнения обратного вызова в потоках без создания глобальной точки сохранения виртуальной машины. Отдельные потоки могут быть остановлены вместо всех потоков или без потоков.
  • Предоставление набора сертификатов корневого центра сертификации по умолчанию в JDK. Цель состоит в том, чтобы открыть корневые сертификаты с открытым исходным кодом в программе Oracle Java SE Root CA, чтобы сделать сборки OpenJDK более привлекательными для разработчиков.