为什么要编译成中间代码?

DrS*_*ove 6 c# java compiler-construction actionscript

为什么Actionscript,Java,C#等编译成中间代码?我知道使用中间代码的跨平台优势.

问题是:与解释的脚本(JS,Python,PHP,Perl等)相比,编译到中间代码有什么好处?

它只是代码混淆吗?或者是什么?

此外,与编译本机代码相比有什么好处?

SLa*_*aks 12

解析和JIT编译IL代码比解析像Java这样的高级语言,特别是C#(具有更多功能)要快得多.

它还允许开发人员使用新的语言功能,而无需更新最终用户的计算机上的任何内容.(例如,LINQBridge)


Beg*_*moT 6

首先,历史上Java是针对具有非常有限的CPU /内存的移动设备和嵌入式设备,并且此类设备上的JVM无法进行任何密集优化,就像现在的JIT一样.所以java engeneers决定将优化转移到编译阶段.

接下来,具有"字节代码"/ IL允许您将来自不同语言的许多编译器转换为这样的字节代码 - 并且只有一个JVM/JIT.为每种语言创建单独的VM + JIT要高效得多.请记住,在JVM世界中有Java,JRuby,JPython,Groovy等,在.NET世界中有C#,VB#,ASP.NET,F#等,每个只有一个运行时/ VM.