While MoSync runtimes are tiny and efficient, they are still very sophisiticated pieces of engineering. Learn more about the architecture here.
Software as a contract
When people hear “runtime”, they usually think of one of two things; either a lightweight support system like the C runtime library or a Java-style virtual machine. Our definition is broader.
We think of MoSync as a contract between generators, which are things that produce MoSync IL, and runtimes, which are things that execute it on a set of devices. In most cases, this is indeed a virtual machine, but not always. For lower-end Java phones, we don’t even have to use pregenerated runtimes - each application your write could be transformed directly to java bytecode. We currently have a prototype implementation of this transformation. However, we still call the result a MoSync runtime because it eassentially makes the MoSync IL executable.
Not your father's VM
The MoSync runtimes that are virtual machines are not the kind of VM most people would think of. They’re register-based, generally smaller than 100k and very, very fast. Where possible, they recompile your entire program to native ARM machine code before executing it. Where dynamic recompilation on the target device isn’t possible, we provide static recompilation ahead of time. With the tiny footprint and native recompilation, there’s never any need to worry about performance.



