The llvm clang compiler can generate bitcode output. Then lljvm can translate it to java bytecode. The resulting class file can be combined into a runnable jar file. See https://github.com/maropu/lljvm-translator