Добавить в корзинуПозвонить
Найти в Дзене
Дед Мазай на Котлине

Как развивается Java

Java, как и весь остальной мир, не стоит на месте и не собирается "умирать" в обозримом будущем. Напротив, в JVM сообществе ведутся активные разработки по улучшению языка и среды его выполнения. В последнее время, некоторые из таких разработок (проектов) часто мелькают в новостях и мне было интересно узнать о них поподробнее. Ну, заодно и при при упоминании этих проектов в серьёзных разговорах, будет возможность не только кивать головой с умным видом и "стеклянными глазами", но и вставить пару умных слов. Проект Amber https://openjdk.java.net/projects/amber Основная цель - исследовать и культивировать небольшие аспекты языка Java, ориентированные на производительность:
- автоматическое выведение типов локальных переменных (var),
- выражения switch,
- записи (records),
- запечатанные типы (sealed types),
- поиск по шаблону (pattern matching). Разработчики проделывают огромную работу для того, чтобы джависты не чувствовали себя обделёнными прогрессом и могли пользоваться в Java фичами,

Java, как и весь остальной мир, не стоит на месте и не собирается "умирать" в обозримом будущем. Напротив, в JVM сообществе ведутся активные разработки по улучшению языка и среды его выполнения.

В последнее время, некоторые из таких разработок (проектов) часто мелькают в новостях и мне было интересно узнать о них поподробнее. Ну, заодно и при при упоминании этих проектов в серьёзных разговорах, будет возможность не только кивать головой с умным видом и "стеклянными глазами", но и вставить пару умных слов.

Проект Amber

https://openjdk.java.net/projects/amber

Основная цель - исследовать и культивировать небольшие аспекты языка Java, ориентированные на производительность:
- автоматическое выведение типов локальных переменных (var),
- выражения switch,
- записи (records),
- запечатанные типы (sealed types),
- поиск по шаблону (pattern matching).

Разработчики проделывают огромную работу для того, чтобы джависты не чувствовали себя обделёнными прогрессом и могли пользоваться в Java фичами, похожими на те, что есть в более молодых языках.

Проект Panama

https://openjdk.org/projects/panama

Цель проекта - совершенствовать и расширять связи между виртуальной машиной Java и четко определенными, но "сторонними" (не принадлежащими Java) API, включая многие интерфейсы, часто используемые программистами на C:
- API внешних функций и памяти
- API векторов.

В других языках (не работающих на JVM) взаимодействие с низкоуровневым кодом поддерживается значительно лучше, чем это сделано в Java (интерфейс JNI).

Проект Panama пытается обеспечить прямую поддержку Java в следующих областях:
- выделение внешней памяти,
- манипуляции со структурированной внешней памятью,
- управление жизненным циклом внешних ресурсов,
- вызов внешних функций.

Ребята из VK заявляют, что начнут переписывать свои приложения сразу, как только разрабатываемые Panama API приобретут стаус релизных.

Проект Loom

https://wiki.openjdk.org/display/loom/Main

Цель проекта - добавить в Java легковесные потоки (fibers) и корутины (continuations).

В Java один поток соответствует ровно одному потоку операционной системы. Вызов Thread.start() инициирует вызов системной функции создания потока и фактически создает новый поток операционной ситемы.

Такие потоки потенциально обходятся дорого и стали узким местом для масштабирования в приложениях на JVM.

Виртуальные потоки, с точки зрения программиста, выглядят как обычные потоки. Но они не являются тонкими обертками для потоков операционной системы в соотношении 1:1. Среда исполнения Java реализует их в пользовательском пространстве и управляет ими.
Преимущества виртуальных потоков:
- создание и блокировка потоков обходятся дешево,
- можно использовать стандартные планировщики Java (пулы потоков),
- для стека не требуются структуры данных на уровне операционной системы.

Проект Valhalla

https://openjdk.org/projects/valhalla

Цель проекта - усовершенствование ситемы типов в Java для обеспечения возможности более эффективного использования памяти JVM.

В экосистеме Java появится новая разновидность значений — так называемые объекты-значения, которые являются экземплярами классов-значений. Предполагается, что эти новые классы будут представлять небольшие неизменяемые типы без индивидуальности.

Из всех перечисленных проектов, Valhalla показался мне самым сложным в реализации, т.к. он планирует изменить основу основ языка - его систему типов. А значит, такие изменения затронут все библиотеки Java.