GeeVM is a JDK 17-compatible JVM implementation in C++, implemented as a learning project. It comes with full OpenJDK compatibility, JNI support and a copying garbage collector.
You'll require the following dependencies:
- C++23-compatible compiler,
- CMake 3.28 or newer,
- OpenJDK/OracleJDK 17,
libzip.
GeeVM currently only supports on Linux.
The CMake build requires OpenJDK/OracleJDK 17 to be present on the system in
order to extract and copy the required classes from the JDK. By default, it will
search in the directory specified by the environment variable JAVA_HOME.
After installing the dependencies and setting JAVA_HOME accordingly, you can build with the usual CMake commands:
cmake -B build -S .
cmake --build buildTest files are full Java programs written either in Java or Jasmin
and are found in the tests/programs directory.
Test execution is done using LLVM's lit
and FileCheck tools that need to be installed separately.
Once they are installed, you can run the full test suite using ctest:
cmake --build build --target testRun the built java executable:
java <mainclass> [args]...