java程序是怎样的执行机制?
解释执行
字节码
jre(java 运行环境)
jvm(java 虚拟机)
jit(just in time 编译器)
java解释器
……这一系列东西把我混淆了,哪位大哥把java程序的执行过程完整的叙述下,包括上面提到那些玩意的关系以及作用,分别作用于执行期间的哪个环节……有资料也可以贴出来看看。谢谢!
解释执行
字节码
jre(java 运行环境)
jvm(java 虚拟机)
jit(just in time 编译器)
java解释器
……这一系列东西把我混淆了,哪位大哥把java程序的执行过程完整的叙述下,包括上面提到那些玩意的关系以及作用,分别作用于执行期间的哪个环节……有资料也可以贴出来看看。谢谢!
2.校验字节码,由字节码校验器执行
3.jit编译器执行...执行java程序关键就是字节码了,他是java便宜器创建.jvm根本不了解java编程语言
他只会识别类文件特定的2进制格式文件
jvm会形容一个抽象层..应用程序
↓字节码程序
↓
jvm
↓
操作系统
↓
硬件
字节码就是那些.class文件吗?再有一个问题就是JIT是怎末提高解释执行速度的,我看了书,上面说的很晦涩。我现在用javac java来编译执行文件,怎么没有可执行文件,就像exe之类的?(新手白痴问题)
1,编译型 c,c++,Pascal...
2,解释型
各有优缺点,编译型 程序执行效率高.因为被针对特定的平台一次性编译成机器码,可以脱离开发环境独立运行;
解释型 需要在执行前先解释成特定平台的机器码,解释一句执行一句.执行效率低,且不能脱离解释器
独立执行.但只要提供不同平台的解释器就方便的实现程序的移植.一般来说,程序的编译效率与执行效率此消彼长.java根据实际的需要采用了一种灵活的机制:编译和解释型的结合.先采用通用的JAVA编译器(Java Runtime Environment)将源程序编译成仍然和平台无关的中间产物--字节码文件(class文件),
然后采用虚拟计算机技术,称为JAVA虚拟机(Java Virtual Machine).执行时先将JVM运行在特定的平台上,然后在
由JVM对字节码文件进行解释并执行.
将其编译成为平台相关的机器码(由于现在已经运行了,无需再考虑可移植性)。
这样处理后,可以带来10倍甚至20倍的速度提升。
而且这个技术正在不断地得到改正,今后JIT编译器将更加智能,
能够监测出哪些代码经常执行,从而对其进行适当的优化,进一步加快执行速度.
来源于:http://www.ieyeh.com/post/451.html
jre与系统有关 我们在sun网站上会看到很多不同版本的jre 它还包括具体的一些类库
jvm与系统无关 除了少量如垃圾回收机制和线程调度机制可能与具体平台相关外
.class文件就是字节码,保证了Java的平台无关性了。