openjdk.ruOpenJDK на русском

Project Babylon

Главная цель Babylon — расширить возможности Java на сторонние модели программирования, такие как SQL, дифференцируемое программирование, модели машинного обучения и GPU. Babylon добьётся этого за счёт улучшения рефлексивного программирования в Java, которое называется Code Reflection (рефлексия кода).

Спонсоры проекта — группы Core Libraries и Compiler.

Аннотация

Возьмём для примера GPU: допустим, Java-разработчик хочет написать ядро GPU на Java и выполнить его на GPU. Java-код разработчика нужно каким-то образом проанализировать и преобразовать в исполняемое ядро GPU. Это могла бы сделать Java-библиотека, но ей нужен доступ к Java-коду в символьной форме. Однако сейчас такой доступ возможен только через нестандартные API или через соглашения, действующие на разных этапах жизненного цикла программы (во время компиляции или во время выполнения), а доступные символьные формы (абстрактные синтаксические деревья или байт-код) часто плохо подходят для анализа и преобразования.

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

Чтобы убедиться, что Code Reflection подходит для своей задачи, в Babylon будет создана модель программирования GPU для Java, которая использует Code Reflection и реализована в виде Java-библиотеки. Чтобы снизить риск однобокости, мы также изучим другие модели программирования, такие как SQL и дифференцируемое программирование, или поддержим их изучение, хотя, возможно, и не так подробно.

Code Reflection состоит из трёх частей:

  1. Представление Java-программ в виде моделей кода, пригодных для доступа, анализа и преобразования.

  2. Улучшения рефлексии Java, которые дают доступ к моделям кода во время компиляции и во время выполнения.

  3. API для построения, анализа и преобразования моделей кода.

Документы

Сообщество

Репозиторий

Репозиторий проекта находится по адресу github.com/openjdk/babylon.