I have found that with many virtual machines, native programs are needed for development. What I am looking for is a VM that both cooperates with its host OS well enough to manage its own windows, buffer to the audio card, and take user input (standard libraries), can translate C/C++ source libraries to its own language, isn't locked into ugly Java-like languages (supports a form of BASIC), and includes development tools (bytecode compiler, text editor) implemented in its own system.

The structure I have in mind is something like this:

At the lowest level, the VM. It is coded in C, C++ or maybe Pascal for compatibility with a wide range of parent platforms. The VM itself statically links with the necessary glue to provide cross-platform "fun" features for its standard libraries to reference, much like how the C standard headers reference the C standard runtime, but with much higher-level functionality. (No need to use GLUT for OpenGL, no need to use Qt for GUIs, no need to use a 3rd-party socket library for networking.)

One level up, the VM's standard software. This should include only programs implemented in VM bytecode. That includes the VM's standard system libraries, with support for OpenGL, OpenAL, a networking library, an input library, and pretty much anything else that requires the VM to talk to the hardware or do "computationally expensive tasks" AKA "things that most people don't feel like programming". At the very least, a compiler from some language to VM bytecode must be included to prove that it is possible. A compiler from C or C++ to VM bytecode would be ideal.

One level up, fancier software. This would include games, BASIC compilers, Web browsers, IDEs, and any other applications that take advantage of all that can be offered. Such software should be adaptable from existing C/C++ projects, much in the way that Emscripten allows for porting C/C++ projects to JavaScript.

What I am not looking for is a system like VirtualBox, Squeak, Chipmunk BASIC, or any other platform that makes the "virtual" aspect painfully obvious by way of providing a virtual desktop, making the end user of derived software configure a bunch of stuff, or any other such nonsense. Simplicity and power. More like Java, less like Wine. More like JavaScript, less like Lua. More like dessert, less like a steak and potato dinner.

  • Explain why the JVM doesn't qualify. – Ira Baxter Jul 25 '14 at 10:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.