Skip to content

Latest commit

 

History

History
100 lines (83 loc) · 4.83 KB

File metadata and controls

100 lines (83 loc) · 4.83 KB

Project Babylon

Babylon's primary goal is to extend the reach of Java to foreign programming models such as SQL, differentiable programming, machine learning models, and GPUs. Babylon will achieve this with an enhancement to reflective programming in Java, called code reflection.

This Project is sponsored by the Core Libraries and Compiler Groups.

Summary

Focusing on the GPU example, suppose a Java developer wants to write a GPU kernel in Java and execute it on a GPU. The developer's Java code must, somehow, be analyzed and transformed into an executable GPU kernel. A Java library could do that, but it requires access to the Java code in symbolic form. Such access is, however, currently limited to the use of non-standard APIs or to conventions at different points in the program's life cycle (compile time or run time), and the symbolic forms available (abstract syntax trees or bytecodes) are often ill-suited to analysis and transformation.

Babylon will extend Java's reach to foreign programming models with an enhancement to reflective programming in Java, called code reflection. This will enable standard access, analysis, and transformation of Java code in a suitable form. Support for a foreign programming model can then be more easily implemented as a Java library.

Babylon will ensure that code reflection is fit for purpose by creating a GPU programming model for Java that leverages code reflection and is implemented as a Java library. To reduce the risk of bias we will also explore, or encourage the exploration of, other programming models such as SQL and differentiable programming, though we may do so less thoroughly.

Code reflection consists of three parts:

  1. The modeling of Java programs as code models, suitable for access, analysis, and transformation.

  2. Enhancements to Java reflection, enabling access to code models at compile time and run time.

  3. APIs to build, analyze, and transform code models.

Documents

Community

  • Mailing lists & news
  • Talks
    • JavaOne 2025
      • Java for AI slides
      • Reflecting on HAT [slides forthcoming]
      • Under the HAT - Empowering GPU Acceleration for Java slides
      • Integrating ONNX for Generative AI in Java - with Project Babylon slides
    • Devoxx Belgium 2025
    • JVMLS 2025
    • JavaOne 2025
      • Java GPGPU Enablement: Are We There Yet?
        video
    • JVMLS 2024
    • JVMLS 2023
      • Code Reflection, slides, video
      • Java and GPU ... are we nearly there yet?, video

Repository

The project repository is accessible at github.com/openjdk/babylon.