Jump to content

Проект Валгалла (язык Java)

Project Valhalla — это экспериментальный проект OpenJDK, предназначенный для разработки основных новых языковых функций для Java 10 и более поздних версий. О проекте было объявлено в июле 2014 года. Он представляет собой экспериментальную попытку компании Oracle под руководством инженера Брайана Гетца . [ 1 ]

Планируемые функции

[ редактировать ]

Valhalla развивает функции и улучшения языка Java в следующих областях: [ 2 ]

Эти функции потребуют изменений как синтаксиса, так и изменений на уровне виртуальной машины.

Проектная деятельность

[ редактировать ]

Проект организован в списке рассылки OpenJDK Project Valhalla. Проект Валгалла начался на экспериментальной стадии с первого объявления и ранних предварительных предложений.

Опубликовано по состоянию на январь 2022 г.:

Экспериментальные прототипы OpenJDK также можно собрать из репозиториев Mercurial. Они начинают включать в себя множество функций специализации. Обратите внимание, что это исходные коды Gnu Make/C++, и для создания OpenJDK требуются технические знания. см . в инструкциях по сборке OpenJDK Подробности .

Компоненты проекта

[ редактировать ]

Проект разделен на несколько JEP (предложения по улучшению JDK):

Классы значений

[ редактировать ]

Классы значений являются ссылочными типами, как и все существующие классы Java. Однако они отказываются от возможности иметь идентичность. Это означает, что == оператор сравнивает экземпляр класса значений по равенству их компонентов, а не по тождеству. Кроме того, синхронизация экземпляров классов значений не удастся.

Классы значений по-прежнему поддерживаются null, поскольку они являются ссылочными типами. Ожидается, что виртуальная машина Java сможет воспользоваться дополнительными ограничениями классов значений, чтобы исключить распределение типов значений в куче в подавляющем большинстве случаев. Однако сохранение экземпляров классов значений в поле или их преобразование в интерфейс все равно потребует выделения.

Существующие типы в Java API, такие как java.util.Optional известны как классы на основе значений и являются кандидатами на превращение в классы значений в будущем выпуске JDK.

Примитивные классы

[ редактировать ]

Примитивные классы подчиняются всем ограничениям классов значений, но не являются ссылочными типами. Это означает, что они отказываются от возможности поддерживать null. Вместо этого их значения по умолчанию — это нулевое значение для каждого из типов компонентов ( 0 для числовых типов, false для логических значений, null для ссылочных типов и нулевое значение для вложенных примитивных классов.

Все примитивные классы хранятся «инлайн», то есть без выделения кучи. Массивы примитивных классов не требуют перенаправления указателя из массива в кучу. При необходимости будут вставлены преобразования, чтобы «упаковать» примитивный класс в версию самого класса значения и наоборот.

Классы для основных примитивов

[ редактировать ]

Этот JEP предназначен для выражения классических примитивных типов виртуальной машины Java (byte, char, short, int, long, boolean, float, double) как примитивных классов.

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

Технические преимущества и последствия

[ редактировать ]

Производительность доступа к памяти и эффективность «коробочного» доступа к значениям — основные области, на которые следует обратить внимание с помощью этих функций. Функции «Тип значения» и «Общая специализация» (при применении к спискам или коллекциям) сокращают использование памяти, но, что более важно, позволяют избежать косвенного обращения к указателю, которое обычно приводит к промаху в кэше. [ 3 ] [ 4 ]

Вместо списка или массива ссылок на объекты, указывающих на значения данных, разбросанные по памяти, усовершенствования Project Valhalla позволят потенциально размещать значения списка или массива линейно — без косвенности — в виде последовательного блока памяти.

Типы значений рассматриваются как «Коды как класс, работают как int!» [ 5 ] Синхронизация и наследование будут исключены для типов значений. Они больше не будут требовать идентификации объекта и связанных с ним затрат памяти/указателей, хотя смогут принимать «коробочную» форму для совместимости. [ 4 ]

См. также

[ редактировать ]
  1. ^ Гетц, Брайан. «Добро пожаловать в Валгаллу!» . Почтовый архив OpenJDK . OpenJDK . Проверено 12 августа 2014 г.
  2. ^ Эванс, Бен. «Oracle запускает проект Valhalla для Java» . ИнфоQ . Инфомир . Проверено 12 августа 2014 г.
  3. ^ Крилл, Пол. «Предложен проект следующего поколения Valhalla; типы значений, общая специализация и улучшенные изменчивые параметры возглавляют список пожеланий для проекта Valhalla» . JavaWorld . Инфомир . Проверено 12 августа 2014 г.
  4. ^ Перейти обратно: а б «Типы значений и список <int> появятся в Java 10?» . LiterateJava.com . Проверено 12 августа 2014 г.
  5. ^ Роуз, Джон; Гетц, Брайан; Стил, Гай. «Состояние ценностей» . OpenJDK . Проверено 12 августа 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d01c562025f5dee40131e5a27c5b6d95__1679241780
URL1:https://arc.ask3.ru/arc/aa/d0/95/d01c562025f5dee40131e5a27c5b6d95.html
Заголовок, (Title) документа по адресу, URL1:
Project Valhalla (Java language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)