Some languages (mostly ones made in the last 2 decades or so) can now not only run (after some compilation step or directly) on several platforms, but also can be compiled to run on several virtual machines.

For example, take Scala. Pure Scala code can be either interpreted , compiled to run on the JVM (Java Virtual Machine) or can be compiled to run using the .NET Framework.

The benefits of platform-independence put aside, what exactly are the benefits of writing code that can compile on several virtual machines and runtimes?

  • 2
    Technical correction: Scala code cannot (or has not, at any rate) be interpreted. Both REPL and scripting rely on compilation. Dec 25, 2011 at 13:55
  • @DanielC.Sobral source? Dec 25, 2011 at 19:04
  • Diversity. Not all virtual machines and runtimes are available on all platforms.
    – user1249
    Dec 25, 2011 at 19:36
  • @MahmoudHossam github.com/scala/scala. Dec 25, 2011 at 22:56
  • @DanielC.Sobral where does it say all code will be compiled? obviously I can't infer that from all this code. Dec 26, 2011 at 1:17

2 Answers 2


It is simpler to write the intermediate compilers - one to the bytecode/IL (whatever) from your source, and one from bytecode/IL (whatever) to native code.

It also allows you to create new languages and target the bytecode or write new bytecode to a new processor and automatically have a new platform available.

See this blog post by Eric Lippert (one of the C# compiler and specification writers) on the subject.


In addition to what Oded said, it is a lot easier to write programs that dynamically produce code at runtime: all you have to do is emit bytecode, (or CIL, or "cross machine code", or whatever you call it,) which has a reduced, and at the same time relatively high-level, instruction set.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.