Оракул Валгалла


Oracle анонсировала экспериментальный проект OpenJDK для тестирования новых функций для Java.

Проект Valhalla для Java находится на ранней экспериментальной стадии, и он будет далеко в будущем – в прошлом JDK в 2016 году – до того, как какие-либо изменения в синтаксисе языка будут включены в Java. Предлагаемые первоначальные улучшения-это поддержка универсальных типов над примитивами и типов значений.

В анонсе проекта Брайан Гетц из Oracle описывает его как Oracle

“инкубационные площадки для проектов совместной разработки продвинутых языков и виртуальных машин, таких как Типы значений (http://cr.openjdk.java.net/~jrose/values/values-0.html)

и Родовая Специализация

(https://bugs.openjdk.java.net/browse/JDK-8046267). “

Гетц говорит, что, скорее всего, первые несколько раундов не будут выглядеть как окончательный результат, добавив:

“не думайте, что только потому, что прототип работает с искажением имен, или искажением файлов классов, или требует, чтобы оператор выполнял Танец Цыпленка, что это окончательный план – это просто целесообразный способ добраться до точки, где мы можем экспериментировать с чем-то осязаемым.”

Одна из областей, которую Oracle рассматривает для изменения, – это то, как Java обрабатывает универсальные типы. На данный момент аргументы универсального типа ограничены расширением объекта, что означает, что они не совместимы с примитивными экземплярами, если не используется бокс, что снижает производительность. Другими словами, вы не можете написать универсальную сортировку, которая работает с целыми числами или плавающими числами, не оборачивая их как объекты. 

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

Вторая основная идея, предложенная для Valhalla, – это типы значений. Описывая их в OpenJDK как “Коды, подобные классу, работают как int”, команда Valhalla в составе Джона Роуза, Брайана Гетца и Гая Стила говорит, что идея состоит в том, чтобы добавить поддержку небольших, неизменяемых типов значений без идентификации.

Разработчики смогут использовать их так, как если бы они были новым определяемым пользователем типом примитивов, добавленным в текущий список из восьми встроенных типов примитивов: byte, short, int, long, float, double, char и boolean. Команда Valhalla рассчитывает заимствовать большую часть механизмов определения и инкапсуляции из классов, что позволит пользователям легко и безопасно создавать новые структуры данных на основе значений. Они говорят:

“в частности, мы считаем, что полезно, как на уровне JVM, так и на уровне языка, рассматривать определения типов значений как специально помеченные, специально ограниченные определения классов.”

Если вы заинтересованы в отслеживании Valhalla, вы можете подписаться на список рассылки valhalla-dev.

Стоит иметь в виду запись в Википедии о Валгалле:

“Валгалла (от Древнескандинавский Вальхель “зал убитых”) …  половина тех, кто погибает в бою, отправляется в Валгаллу после смерти…”


Добавить комментарий