I'm missing something basic here. What's the use of compiling from a source language into bytecode (java) or intermediate language (.NET) and then running them from inside the JVM or CLR ?
There's the decrease in performance (however slight or large) of using managed code, but what are the benefits ? I know there's garbage collection and memory management but even so wouldn't it be better to just compile the source to native straight away without needing this intermediate level ?
Also (I'm adding this here since it's directly related to the question) - Apparently Windows 10 Universal apps are compiled with .NET Native which compiles to native machine code. I'm curious as to why this wasn't done before with all .NET programs.