Для того, чтобы выпустить наследницу Java 9, Oracle понадобилось полгода. В качестве эталонной реализации Java SE 10 (Java Platform, Standard Edition 10) разработчик применил открытый проект OpenJDK. Особенностью сборки является переход на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь будет добавляться в одну постоянно обновляемую главную ветку, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков. При выходе очередной версии прошлая ветка прекращает своё существование, но раз в три года формируется релиз с длительным сроком поддержки (LTS).
Что касается других важных нововведений, то в Java SE 10 появилось автоматическое выведение типов локальной переменной (Local Variable Type Inference). Эта функция подразумевает возможность не указывать тип инициализированной переменной, а также позволяет уменьшить количество кодовых табличек. Помимо этого данная функция упрощает управление фрагментами кода в JShell. Этот инструмент, выпущенный для Java 9, предоставляет интерактивную оболочку, которая может выполнять команды и демонстрировать разработчикам результаты без необходимости компиляции кода.
Java 10 обзавелась дополнительным функционалом для Class-Data Sharing (cовместное использование класса данных), требуемого для обеспечения совместного доступа к общим классам. Разработчик наделил их возможностью размещения в отдельном архиве с правом совместного доступа, что позволяет ускорить запуск приложений и снизить накладные расходы. Вдобавок к этому появилась возможность использования экспериментального компилятора Just-in-Time на платформе Linux/x64; три новых варианта Java Virtual Machine; обновленный интерфейс сборщика мусора, позволяющий быстро заменить штатный сборщик мусора HotSpot JVM на альтернативные варианты; G1 обзавелся возможностью параллельной сборки мусора.
В качестве экспериментальной функции в Java 10 добавлен компилятор Graal. Это расширяемый оптимизирующий JIT-компилятора Java, который генерирует высококачественный байткод без принесения в жертву скорости компиляции, оптимально использует память и работает со многими виртуальными машинами Java. Graal написан на Java, поэтому в принципе может работать в любой виртуальной машине. Oracle предлагает использовать его прежде всего с HotSpot и виртуальной машиной с открытым кодом Maxine, тоже написанной на Java. Компилятор, ставший основой Graal, является частью ее кодовой базы.
Java SE 10 сохранила полную обратную совместимость с прошлыми выпусками платформы, все ранее написанные Java-проекты будут работоспособны при запуске под управлением новой версии без изменений в кодовой базе. Готовые для установки сборки Java SE 10 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Solaris (SPARC), Windows и macOS. Java 10 выпущена под лицензией GPLv2 за исключением GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
Версия Java 10 будет поддерживаться до сентября 2018 г., после чего её сменит Java 11. Пользователи, не желающие менять привычное ПО, могут продолжать работать с Java 8. Эта версия с длительным сроком поддержки будет поддерживаться Oracle до декабря 2020 г. Поддержка платформы Java 9 прекращена. Все не вошедшие в новый релиз обновления компания планирует выпустить в следующей версии Java Development Kit 11.
Напомним, в начале марта вышла корпоративная версия Java EE (Java Platform Enterprise Edition). По решению заинтересованных сторон, обладающих правом голоса в организации Eclipse Foundation, она была переименована в Jakarta EE. Eclipse Foundation занимается разработкой Java EE вследствие того, что в прошлом году Oracle передала ей на это права.