Анонсированы новые функции Java 9
Компания Oracle серьёзно взялась за разработку JDK9 и опубликовала первый список «предложений на улучшение» (JEP), в которых описаны новые функции Java 9. Список невелик и консервативен, но его наверняка дополнят в предстоящие два года до выпуска Java 9.Программные интерфейсыПредставлены три новых программных интерфейса.Обновление Process API для лучшего взаимодействия с не-Java процессами операционной системы (сейчас разработчики часто вынуждены использовать нативный код). Новый HTTP-клиент с поддержкой HTTP 2.0, веб-сокетов и заменой устаревшему HttpURLConnection. Облегчённый JSON API для обработки и генерации JSON-документов и потоков данных. Производительность/JVM Здесь тоже предложено три улучшения (для начала).Улучшенное разрешение конфликтов при захвате блокировки (contended locking) при многопоточной работе и совместном доступе нескольких потоков к объектам. Тут речь идёт об общем улучшении производительности за счёт ускорения операций мониторов, таких как notify/notifyAll и PlatformEvent: unpark (). Умный Java-компилятор (sjavac) будет улучшен до такой степени, чтобы его использовать по умолчанию в билдах JDK и на постоянной основе для сборки других больших проектов. Сейчас он пока не годится для этих целей по разным причинам, в том числе из-за нестабильной работы. Код компилятора кардинально переработают и протестируют. Возможно, его даже выпустят как отдельное независимое приложение без привязки к JDK. Планируется реализовать в нём и новые функции, в том числе параллельную и shared-компиляцию. Сегментирование кеша кода. Эта область используется JVM, когда включена JIT-компиляция, в ней кешируется скомпилированный платформенно-зависимый код. После модернизации кеш разделят на несколько частей, каждая из которых будет содержать скомпилированный код определённого типа: non-method (внутренний код JVM), profiled и non-profiled. Это увеличит производительность и позволит легче внедрять будущие расширения. One More Thing… Ещё одним нововведением в Java 9 станет стандартная модульная структура исходного кода JDK. src/$MODULE/{share,$OS}/classes/$PACKAGE/*.java native/include/*.{h, hpp} $LIBRARY/*.{c, cpp} conf/* Изменение никак не повлияет на бинарники, но зато сильно улучшит работу с исходниками: легче станет портировать Java на мобильные устройства, «отсекая» ненужные модули, проще станет изучать структуру кода и искать баги/уязвимости и т.д. В конечном итоге, это приведёт и к улучшению производительности приложений, и к упрощению создания и поддержки библиотек и больших проектов на платформах Java SE и EE.Рефакторинг кода станет продолжением старого проекта Jigsaw.
Раньше анонсировалось несколько десятков мелких улучшений в Java 9, но эти, о которых объявлено сейчас, — наиболее значительные.