Bytecode interpreted. JIT compiled (depending on implementation). Dynamic code loaded.
Wikipedia
JVM Specifications
JVM conversion: Bytecode to source converting Java & Kotlin code into JavaScript, C++, D, C#, PHP, AS3, Dart and Haxe and run it everywhere. Also use JVM code in your favourite language as a library. Website
Articles
Implementations:
- OpenJDK
- OpenJ9 (Source)
- AdoptOpenJDK builds JDK downloads of OpenJDK and OpenJ9 builds.
- GraalVM
- Zulu
- Amazon Coretto
- JRockit
- Kaffe (Source)
- jvmulator: "a simple emulator for Java bytecode as well as an in-memory Java compiler to allow bytecode to be generated. The generated code can be executed as well as emulated to allow stepping through bytecode line by line, and seeing what the content of the local variables or stack happens to be."
WebAssembly:
- TeaVM - an ahead-of-time translating compiler (transpiler) of Java bytecode, that's capable of emitting JavaScript and WebAssembly.
- JWebAssembly - A Java bytecode to WebAssembly compiler. It can generate the WebAssembly binary or text format. It is written in Java itself and can be integrated with other Java build tools.
- Bytecoder - A Rich Domain Model for Java Bytecode and Framework to interpret and transpile it to other languages such as JavaScript, OpenCL or WebAssembly.
- CheerpJ - A Java compiler for the web that converts any Java client application into standard HTML5/WebAssembly/JavaScript.
- Rise JVM - Rise JVM is a minimal Java VM based on WASM. You can try it out here.
Research/Experiments:
Support/tooling
- HeapOTheSys: a heap allocation JVM benchmark developed by the Amazon Corretto team
Tags:
vm
jvm
Last modified 16 November 2025