Technically, KVM-based VM is a special type of virtual machine which relies on physical machine features. Following lists some popular VM types that do not use KVM. Hope you also find it interesting.
VM Name | Translation Technologies | Executable Format | Runtime |
---|---|---|---|
Dalvik VM (Register based VM) | Interpretation | Android (<2.2, 2008) | |
Dalvik VM | JIT + Interpretation (Just in time) | .dex / .odex (Dalvik Executable) | Android (>=2.2 <5.0, 2014)libdvm.so |
ART (Android Runtime) | AOT (Ahead of time) | .dex | Android (>=4.4, 2017) ART libart.so |
ART | JIT + AOT + Interpretation (All-Of-the-Time) | .dex | Android (>=7.0, 2019) ART libart.so |
JVM (Stack based VM) | JIT | .class | libjvm.so |
QEMU-tcg | Binary Translation + JIT | machine code | QEMU |
eBPF | JIT | BPF bytecode | Linux Kernel |
WASM | JIT | WASM bytecode | v8 |
References
Jvm,Dalvik和Art区别 – 简书 (jianshu.com)
Android中编译工具链的改动—-LLVM份量的增加-阿里云开发者社区 (aliyun.com)
JIT、AOT、Dalvik、ART概念整理 | superxlcr’s notebook
ArkCompiler-HarmonyOS Next编程平台-华为开发者联盟 (huawei.com)
Android version history – Wikipedia
Platform architecture | Android Developers
Garbage collection (computer science) – Wikipedia
Android runtime and Dalvik | Android Open Source Project