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程序员来说都是至关重要的。Java由Sun Microsystems公司开发,始于1995年,最初名为Oak,后被Oracle公司接手运营。Java的独特之处在于它的跨平台...
总的来说,“编译和运行Java程序的小工具”是一个便捷的开发辅助软件,它通过集成编译和运行过程,使得Java开发变得更加轻松快捷。无论是新手学习还是资深开发者快速测试,都能从中受益。如果你是Java开发者,不妨...
Java代码快捷编译运行工具是针对初学者设计的一款实用程序,旨在简化Java编程过程中常见的编译和运行步骤。对于刚接触Java编程的开发者来说,通过命令行(CMD)进行源码的javac编译和java运行可能会感到繁琐,而这款...
Java 自动编译运行 批处理程序 以下是自制的Java自动编译+运行批处理程序,请将它加入到Path中 它可以执行的指令有: t Java文件名 [/?][e][r]或[c] [a] 注意:请不要输入文件的扩展名 [/?] 读取本帮助信息 [/...
### 命令行编译和运行Java类 ...这种方法对于初学者来说非常有用,可以帮助他们更好地理解Java编译和运行的基本流程。此外,在某些特定的开发环境中,比如自动化构建或者部署脚本中,这种方式也非常常见。
16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译运行.zip16.java包的编译...
"Java在线编辑编译运行示例"是指利用网络平台提供的工具,可以直接在浏览器上编写、编译和运行Java代码,无需本地安装任何环境。这种方式方便了初学者学习和开发者快速测试代码,降低了入门门槛。 首先,我们来详细...
下面我们将详细讲解如何编译和运行包含JAR包的Java程序。 1. **编译Java源代码** 在Java开发中,首先我们需要将.java源代码文件编译成.class字节码文件。这通常通过`javac`命令完成。例如,如果你有一个名为`Main...
以下将对“Unix环境上的java编译与运行”这一主题进行深入解析。 ### Java在Unix环境下的编译 Java源代码的编译主要通过`javac`命令来完成。`javac`是一个编译器,用于将Java源代码(.java文件)转换为字节码(.class...
添加动态执行的编译环境 options 是个集合,添加内容,字符集,classpath等 * 6.传入JavaFileObject的java文件,是个集合,创建JavaSourceObject实现这个接口,Kind.SOURCE.extension = '.java' * 7.创建任务并...
最后,学生需要使用 Java 解释器 java.exe 对编译后的程序进行解释运行。例如,c:>java example 如果源程序无逻辑错误,将得到正确的运行结果,否则检查并清除源程序中的逻辑错误,重复如上的步骤直到得到正确的运行...
Java运行时动态编译是Java语言的一个重要特性,它使得Java程序在运行过程中可以对代码进行优化和调整,极大地提高了程序的性能。这个特性主要得益于Java的Just-In-Time (JIT) 编译器,它是Java虚拟机(JVM)的一部分...
使用VC++6.0编写小型java编译/运行系统,需要Java JDK的支持,安装好JDK后简单设置一下路径就可以使用了。主要解决了编译运行小型Java程序时,需要不断输入命令的麻烦,只需要拖动文件就可以编译,使Java学习变得...
在Java编程中,动态编译和运行类是一项重要的技术,特别是在需要实时更新代码或实现热部署的场景下。本文将详细讲解如何在Java中实现动态编译.java源代码文件并执行编译后的类。 首先,我们需要理解Java的编译过程...
Java虚拟机(JVM)再将字节码解释执行。而反编译就是逆向这个过程,通过特定的工具将字节码还原成接近原始的Java源代码。这有助于开发者分析代码逻辑,排查问题,甚至在没有源码的情况下进行二次开发。 本绿色版的...
初学者更适合使用文本编辑软件来学习Java,对Java有一定认识后推荐使用Eclipse,对那些要求开发效率的程序员当然首选就是JBuilder。 对于文本编辑软件我推荐EditPlus,EditPlus是很多程序员非常熟悉的编辑工具,...
在Java编程中,动态编译和运行类是一项重要的能力,特别是在需要实时更新代码或实现热部署的场景下。本文将深入探讨如何利用Java的API来动态编译.java源文件,并执行编译后的类。 首先,Java的`javac`命令行工具是...
在这个“编译原理课程解释器构造Java源码”中,我们可以推测这是一个基于Java编程语言实现的解释器项目。Java是一种广泛应用的面向对象的编程语言,它的跨平台特性使得它成为构建各种软件工具的理想选择,包括解释器...
1. **Java编译API:Javacompiler接口** Java提供了一个内置的`javax.tools.JavaCompiler`接口,它是Java工具接口(Java Tool API)的一部分,允许我们在程序中调用Javac编译器。要使用这个接口,首先需要引入`tools...