JShell Oracle представила новый инструмент под названием «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.
Подробный список нововведений: