将程序编译成字节码而非本地代码可以实现一定程度的可移植性,只要存在适合的虚拟机就可以。
但我有点想知道,为什么要延迟编译呢?为什么不在安装应用程序时直接编译字节码呢?
如果这样做了,为什么不将其应用于直接编译为本地代码的语言中呢?将它们编译成一个中间格式,在安装程序中分发一个“JIT”编译器,并在目标机器上进行编译。
我唯一能想到的是运行时优化。这大概是唯一无法在安装时完成的主要任务。您有什么想法吗?
将程序编译成字节码而非本地代码可以实现一定程度的可移植性,只要存在适合的虚拟机就可以。
但我有点想知道,为什么要延迟编译呢?为什么不在安装应用程序时直接编译字节码呢?
如果这样做了,为什么不将其应用于直接编译为本地代码的语言中呢?将它们编译成一个中间格式,在安装程序中分发一个“JIT”编译器,并在目标机器上进行编译。
我唯一能想到的是运行时优化。这大概是唯一无法在安装时完成的主要任务。您有什么想法吗?
字节码已经被编译,就像C++代码一样被编译。
此外,JIT编译器,即.NET和Java运行时是庞大而动态的;你无法预测程序使用哪些部分,因此需要整个运行时。
还有一个问题需要认识到,针对虚拟机的语言具有非常不同的设计目标,与针对裸机的语言相比。
以C++和Java为例。
编辑:正如delnan正确指出的那样;JIT和类似技术虽然对字节码性能有巨大的好处,但可能在安装时不可用。此外,针对虚拟机的编译与编译成本地代码非常不同。