JShellOracle представила новый инструмент под названием «JShell». Он используется для тестирования и использования в консоли разных конструкций, например классов, интерфейсов, перечислений, объектов, операторов и т.д.
Неизменяемые объекты List, Set и Map «из коробки»Oracle представила несколько удобных методов для создания неизменяемых List, Set, Map и Map.Entry объектов без использования дополнительных классов.
Private методы в интерфейсахДля избавления от нагромождения и переизбытка кода Oracle добавила private методы в интерфейсы Java SE 9. Начиная с девятой версии, мы также сможем создавать private static методы в интерфейсах с помощью private.
Модульная системаОдним из самых значительных изменений является появление модульной системы. До Java 9 мы использовали JAR-файлы для разработки приложений, базирующихся на Java. Однако, эта архитектура имеет несколько ограничений и недостатков. Для их устранения и внедрили модульную систему. Это нововведение является частью проекта Jigsaw, который разрабатывается для того, чтобы программисты могли разбивать программы на независимые и межпрограммные модули.
Улучшение APIВ Java SE 9 произведены улучшения по части API. Добавлены несколько новых классов и методов для более удобного управления действиями операционной системы.
Изменения в try-with-resourcesВ Java SE 9 внесено несколько изменений в Try-With-Resources, чтобы повысить читаемость.
Новшества в CompletableFuture APIВ Java 9 Oracle также улучшена CompletableFuture API для решения проблемы, появившихся в Java SE 8.
Реактивное программированиеВ Scala, Play, Akka уже были интегрированы reactive streams. Oracle решила добавить Reactive Streams API в Java SE 9.
Java SE 9 Reactive Streams API — фреймворк для реализации асинхронных, масштабируемых и параллельных приложений с использованием Java.
Дополнительные улучшения в классахВ Java SE 9 Oracle добавила несколько полезных методов в java.util.Optional
Улучшения Stream APIВ новой версии появилось как минимум четыре метода java.util.Stream. Как и stream, все они стандартные. Наиболее важными являются dropWhile и takeWhile методы.
Расширенные аннотации @DeprecatedВ Java 9 добавили возможности работы с устаревшими API. Например, появились инструменты для их анализа — forRemoval и since.
HTTP/2 клиентНовый HTTP-клиент для поддержки протоколов HTTP/2 и WebSocket. Они заменяют HttpURLConnection API на новый, более производительный. Он поддерживает как синхронный, так и асинхронный режимы.
API для изображений с разными разрешениямиНовый API для изображений разных разрешений. Наиболее важным является интерфейс MultiResolutionImage доступный в пакете java.awt.image.
Подробный список нововведений: