在Java和MS.net Framework中,Just-In-Time编译器所扮演的角色是一个中介者,负责代码翻译和安全检查的任务。
在Java或C#等高级语言中,程序员编写的源代码首先被编译种某种格式的中间语言IL(Intermediate Language),IL是一种类似汇编语言,与汇编不同的是,IL运行的是在一个虚拟的机器环境中,或叫做虚拟机,汇编语言运行在一个特定的机器平台中。虚拟机的好处为中间语言提供了一个与平台无关的环境,比如java虚拟机,和CLR(Common Language Runtime),它能够根据所在的平台架构将中间语言翻译中这个平台上的机器语言,从而完成程序的执行过程。担任翻译任务的就是虚拟机中配备的JIT(Just In Time)编译器。与传统编译器不同的是,JIT编译器是边执行边解释,只有需要执行的代码才被翻译成机器语言,那些不会执行到代码被忽略掉的。
JIT编译器担任的第二项任务是检查代码的安全性。它必须保证编译出来的机器代码是安全,即程序不会非法访问不属于本身的内存空间或者没有权限访问的空间,这样可以防止恶意的程序修改敏感数据区域。
此外,JIT编译器提供了对代码优化的可选功能。
下图是Java应用程序的一个程序过程,JIT编译器是JVM的一个组成部分。
参考资料:
[1] Microsoft MSDN, Compiling MSIL to Native code.
[2] Simon Robinson, etc. Professional C# (2nd Edition). Wrox Press Inc, March 2002
[3] http://www.research.ibm.com/trl/projects/jit/index_e.htm
posted on 2010-04-24 12:59
何克勤 阅读(545)
评论(0) 编辑 收藏 所属分类:
J2SE