- PVSM.RU - https://www.pvsm.ru -

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

Компания Oracle серьёзно взялась за разработку JDK9 и опубликовала первый список «предложений на улучшение» (JEP), в которых описаны новые функции Java 9. Список довольно невелик и консервативен, но за предстоящие два года до выпуска Java 9 его наверняка дополнят.

Программные интерфейсы

Представлены три новых программных интерфейса.

  • Обновление Process API [1] для лучшего взаимодействия с не-Java процессами операционной системы (сейчас разработчики часто вынуждены использовать нативный код).
  • Новый HTTP-клиент [2] с поддержкой HTTP 2.0, веб-сокетов и заменой устаревшему HttpURLConnection.
  • Облегчённый JSON API [3] для обработки и генерации JSON-документов и потоков данных.

Производительность/JVM

Здесь тоже предложено три улучшения (для начала).

  • Улучшенное разрешение конфликтов при захвате блокировки [4] (contended locking) при многопоточной работе и совместном доступе нескольких потоков к объектам. Тут речь идёт об общем улучшении производительности за счёт ускорения операций мониторов, таких как notify/notifyAll и PlatformEvent::unpark().
  • Умный Java-компилятор [5] (sjavac) будет улучшен до такой степени, чтобы его использовать по умолчанию в билдах JDK и на постоянной основе для сборки других больших проектов. Сейчас он пока не годится для таких целей по разным причинам, в том числе из-за нестабильной работы. Код компилятора кардинально переработают и протестируют. Возможно, его даже выпустят как отдельное независимое приложение без привязки к JDK. Планируется реализовать в нём и новые функции, в том числе параллельную и shared-компиляцию.
  • Сегментирование кэша кода [6]. Эта область используется JVM, когда включена JIT-компиляция, в ней кэшируется скомпилированный платформенно-зависимый код. После модернизации кэш разделят на несколько частей, каждая из которых будет содержать скомпилированный код определённого типа: non-method (внутренний код JVM), profiled и non-profiled. Это увеличит производительность и позволит легче внедрять будущие расширения.

One More Thing...

Ещё одним нововведением в Java 9 станет стандартная модульная структура исходного кода JDK [7].

<pre class=«prettyprint» xml:space=«preserve»>src/{share,$OS}/{classes,native}/$PACKAGE/*.{java,c,h,cpp,hpp}

Изменение никак не повлияет на бинарники, но зато сильно улучшит работу с исходниками: легче станет портировать Java на мобильные устройства, «отсекая» ненужные модули, проще станет изучать структуру кода и искать баги/уязвимости и т.д. В конечном итоге, это приведёт и к улучшению производительности приложений, и к упрощению создания и поддержки библиотек и больших проектов на платформах Java SE и EE.

Рефакторинг кода станет продолжением старого проекта Jigsaw [8].


Раньше анонсировалось несколько десятков [9] мелких улучшений в Java 9, но эти, о которых объявлено сейчас, — наиболее значительные.

Автор: alizar

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/openjdk/67964

Ссылки в тексте:

[1] Обновление Process API: http://openjdk.java.net/jeps/102

[2] Новый HTTP-клиент: http://openjdk.java.net/jeps/110

[3] Облегчённый JSON API: http://openjdk.java.net/jeps/198

[4] Улучшенное разрешение конфликтов при захвате блокировки: http://openjdk.java.net/jeps/143

[5] Умный Java-компилятор: http://openjdk.java.net/jeps/199

[6] Сегментирование кэша кода: http://openjdk.java.net/jeps/197

[7] модульная структура исходного кода JDK: http://openjdk.java.net/jeps/201

[8] проекта Jigsaw: http://openjdk.java.net/projects/jigsaw/

[9] несколько десятков: http://openjdk.java.net/jeps/0

[10] Источник: http://habrahabr.ru/post/234031/