java是混合型语言。
先通过JAVA编译器把.java文件编译成bytecode,然后通过bytecode interpreter
(字节码解释器)进行执行。
可以使用JIT技术来进行优化。
以下为原帖 原帖地址:http://acme1921209.iteye.com/blog/59769
什么是JIT?
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。
首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。
在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。
JIT 编译过程
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。
什么是JIT?
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。
首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。
在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。
JIT 编译过程
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。
Graphic
通过上面的解释,我们了解了JIT的工作原理及过程,同样也发现了个问题,由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等。
需要说明的是,JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。
分享到:
相关推荐
java的一些基础知识以及编译和运行的操作和过程。
Java 自动编译运行 批处理程序 以下是自制的Java自动编译+运行批处理程序,请将它加入到Path中 它可以执行的指令有: t Java文件名 [/?][e][r]或[c] [a] 注意:请不要输入文件的扩展名 [/?] 读取本帮助信息 [/...
编译和运行java程序的小工具,直接把class文件拖进去就能编译并运行!很不错
16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译...
Unix环境上的java编译与运行.
Java源文件在线编辑, 并编译运行, 输出运行结果示例
编译运行java带jar包
添加动态执行的编译环境 options 是个集合,添加内容,字符集,classpath等 * 6.传入JavaFileObject的java文件,是个集合,创建JavaSourceObject实现这个接口,Kind.SOURCE.extension = '.java' * 7.创建任务并...
不借助任何编译,运行工具在DOS下编译和运行java程序
使用VC++6.0编写小型java编译/运行系统,需要Java JDK的支持,安装好JDK后简单设置一下路径就可以使用了。主要解决了编译运行小型Java程序时,需要不断输入命令的麻烦,只需要拖动文件就可以编译,使Java学习变得...
初学者更适合使用文本编辑软件来学习Java,对Java有一定认识后推荐使用Eclipse,对那些要求开发效率的程序员当然首选就是JBuilder。 对于文本编辑软件我推荐EditPlus,EditPlus是很多程序员非常熟悉的编辑工具,...
Notepad++ java 编译及运行机快捷键定义文件 xml格式 放在自己home目录. 可以自己找找哦:)
方便一些初学java同学不用每次手动进入cmd里编译运行代码..有eclipse等集成环境的另当别论.
使用方法: 1.安装好JDK运行环境,设置好必要的Windows环境变量,具体方法可自行百度。 2.把这两个批处理放到任意有 *.java 文件的目录。...3.拖拽单个 *.java 文件到下面...否则不能正常编译java和运行class。
java 动态编译.java文件,动态运行类
java 动态编译.java文件,动态运行类 _1.3
java 动态编译.java文件,动态运行类 _1.2
为 editminus 做的小插件工具,设置好以后,可以自动编译、运行在editminus中编辑的java源程序~~~~
dos下的java编译和运行常见问题和解决
Java快速编译工具,解救你于繁琐的命令行编译之中! 适用范围:快速编译较为简单的Java项目,目的在于将初学者从复杂的命令行编译中解放出来; 优点:本程序不需要用户手动敲击CMD命令,只需在图形界面上用鼠标点击...