Pull to refresh

Анонсированы новые функции Java 9

Reading time 2 min
Views 58K
Компания 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, но эти, о которых объявлено сейчас, — наиболее значительные.
Tags:
Hubs:
+32
Comments 39
Comments Comments 39

Articles