JLang, a Java-to-LLVM compiler

We are happy to announce an initial release of JLang, a Java-to-LLVM ahead-of-time compiler, on Github at https://polyglot-compiler.github.io/JLang/. JLang compiles Java source code directly to LLVM, allowing a variety of LLVM back ends to be used to target various architectures. The JVM and JNI interfaces are supported with a shared library whose source code is also distributed as part of JLang. Support for Java libraries is provided by compiling the OpenJDK Java source into a shared library with JLang and then linking the OpenJDK native libraries. JLang is built on top of the Polyglot extensible compiler framework, so it supports experimentation with new language features and with new implementation techniques.

The current JLang release can be used to compile and run a variety of Java programs, but it has a number of significant limitations that are in the process of being addressed:

  • JLang implements Java 7, so does not yet support some newer Java features such as lambdas, default methods, or modules.

  • Java concurrency is not supported.

  • Some corners of the reflection API need more work.

We welcome the involvement of external contributors. Interested parties can subscribe to the users mailing list from the JLang web site.

JLang has been implemented by Daniel Donenfeld, Matt Gharrity, Daniel Weber, Drew Zagieboylo, and Yizhou Zhang.