`

just-in-time编译器

    博客分类:
  • java
阅读更多
在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

原作者: 北斗星,email: min_hb@hotmail.com
分享到:
评论

相关推荐

    cpp-ShuJIT针对x86处理器的JavaJustinTime编译器

    ShuJIT 针对 x86处理器的Java Just-in-Time编译器

    pcre-8.20.zip

    该版本包含 Zoltan Herczeg 的 just-in-time 编译器,可在附加模式分析时显著提升匹配的性能,修复了一些bug.

    amacc, 面向Arm架构的小型C 编译器生成 ELF.zip

    amacc, 面向Arm架构的小型C 编译器生成 ELF AMaCC = 另一个小型ARM编译器简介AMaCC是从头开始构建的... AMaCC实现了 3个执行模式:ARM后端的Just-in-Time编译器生成有效的可执行文件和可以链接的格式( ELF ) 可执行文件

    JustInTimeJSONparse编译器

    Just-In-Time JSON.parse 编译器

    Visual C#程序设计教程

    Visual C#程序设计教程非常详细的、通俗易懂的讲解了C#的语法以及举例子... 编译后的代码被调用执行时,CLR的Class Loader会将IL代码装入内存,通过及时(Just-In-Time)方式临时编译成所用平台的CPU可直接执行的程序。

    Python学习笔记

    不错的python学习资料,Python 是⼀一种半编译半解释型运⾏行环境。⾸首先,它会在模块 "载⼊入" 时将源码编译...这是导致 Python 性能较低的重要原因,好在现在有了内置 Just-in-time ⼆二次编译器的 PyPy 可供选择。

    luajit, LuaJIT是用于Lua语言的JIT编译器.zip

    luajit, LuaJIT是用于Lua语言的JIT编译器 LuaJIT 2.0.3自述文件LuaJIT是用于Lua编程语言的Just-In-Time ( JIT ) 编译器。项目主页:http://luajit.org/LuaJIT版权所有( C ) 2005 -2014 Mike Pa

    执行PHP代码的虚拟机HHVM.zip

    HipHop VM(HHVM)是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点。Facebook表示,HHVM将替代HPHPi,用于所有的PHP执行。根据 Facebook...

    微软开源的JavaScript引擎 ChakraCore.zip

    ChakraCore 支持 x86/x64/ARM 架构 JavaScript 的 Just-in-time (JIT) 编译,垃圾收集和大量的最新 JavaScript 特性。ChakraCore 还支持 JavaScript Runtime (JSRT) APIs,允许用户简单嵌入 ChakraCore 到应用中。 ...

    一个win32下的ARM开源编译器

    Other instructions than just what is shown above are also affected. The last part of the principles, the smaller the better, may impact THUMB code where a particular alignment is required. If you ...

    JVM的几点性能优化

    JVM的几点性能优化otSpot,家喻户晓的JVM...  它的核心是一个JIT(Just-In-Time)编译器。JIT只有一个目的,就是为了提升你代码的执行速度,这也是HotSpot能如此流行和成功的重要因素。  JIT编译器都做了什么?  你的代

    霸屏天下源码java-NodeJs-Notes:NodeJs-笔记

    (Just-In-Time) compiler在执行时compiles JavaScript code into machine code ,就像许多现代 JavaScript 引擎所做的那样,例如SpiderMonkey或Rhino (Mozilla) 。 v8 是编译器吗? V8 是在德国谷歌开发中心构建的 ...

    Java有哪四个核心技术?

    首先,我们要了解一下java核心技术的重要性,它可以帮助我们举一反三、触类旁通,有助于提升我们对整个Java平台...另一种执行引擎更快,但是也更消耗内存,叫做"即时编译器(just-in-time compiler)"。在这种情况下,第

    Facebook开源的高效的PHP运行环境HHVM.zip

    HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。...

    Haskell编写的编译器:一种图灵完整的语言:winking_face:

    Haskell编写的编译器:一种图灵完整的语言:winking_face:

    Hpsyche#note#1.Java解释执行编译执行1

    (1)解析:.class文件经过JVM内嵌的解析器解析执行 (2)编译:存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码

    firefox46浏览器

    Improved security of the JavaScript Just In Time (JIT) Compiler Use Content Decryption Module as a fallback to decode unencrypted H.264 and AAC media where available GTK3 integration (GNU/Linux only...

    C#程序设计-第1章.doc

    .Net通过将各语言先编译成中间语言(IL),然后再执行时用即时(Just In Time)编译器将之编译成本地平台代码来实现异构平台下对象的互操作,目前.Ne t支持的平台有Windows,Linux和Unix的支持正在开发中。 .Net通过公共...

Global site tag (gtag.js) - Google Analytics