JVM was originally designed for set top boxes (STB) I believe, the problem there being a variety of architectures, thus a Virtual Machine solved the problem of write code to the virtual machine and not the physical machine and applications could run on various STB's.<p>OpenTV provided such a 'middleware' where the main language was C on such a VM, and was (possibly still is) widely used.
NestedVM was another early attempt (2004) to run C, C++, Fortran, etc. on the JVM, but at substantial performance degradation. This was a clever hack that ran a Java coded MIPS emulator and loaded a compiled binary into a large array. Performance was 20-40% of native speed, but still fast enough for some applications, such as SQLite as a JDBC driver.<p>Website, source repo, and paper seem to still be available, try archive.org for dead links:<p><a href="http://nestedvm.ibex.org/" rel="nofollow">http://nestedvm.ibex.org/</a>
Is there an implementation that can be used for experimenting or verifying performance claims? I could not find anything.
edit: Found a reference there in case it helps others <a href="https://www.graalvm.org/22.0/community/publications/" rel="nofollow">https://www.graalvm.org/22.0/community/publications/</a>