java程序是怎样的执行机制?
解释执行
字节码
jre(java 运行环境)
jvm(java 虚拟机)
jit(just in time 编译器)
java解释器
……这一系列东西把我混淆了,哪位大哥把java程序的执行过程完整的叙述下,包括上面提到那些玩意的关系以及作用,分别作用于执行期间的哪个环节……有资料也可以贴出来看看。谢谢!

解决方案 »

  1.   

    我觉得Java是先编译,后解释的执行方式首先从java源文件编译成class文件,然后把class文件装载到JVM(其软件实现叫做JRE)里解释执行。因为JVM比较慢,所以就出现了JIT技术来提高解释执行的速度
      

  2.   

    1.加载.class文件 由类加载器执行
    2.校验字节码,由字节码校验器执行
    3.jit编译器执行...执行java程序关键就是字节码了,他是java便宜器创建.jvm根本不了解java编程语言
    他只会识别类文件特定的2进制格式文件
    jvm会形容一个抽象层..应用程序
    ↓字节码程序

    jvm

    操作系统

    硬件
      

  3.   

    1楼说的比较恰当
    字节码就是那些.class文件吗?再有一个问题就是JIT是怎末提高解释执行速度的,我看了书,上面说的很晦涩。我现在用javac java来编译执行文件,怎么没有可执行文件,就像exe之类的?(新手白痴问题)
      

  4.   

    首先应该是编译器编译.java文件成为.class文件。然后.class文件在jvm环境下运行,jvm将.class的字节码指令解释为本地计算机系统认识的指令再交于计算机执行。大概就是个过程。当然你首先要理解什么是编译,什么是解释,它们有什么不同。还有,可执行文件并不一定就是exe文件,exe文件为可执行文件是相对于windows操作系统而言的。exe只是一个文件后缀名而已,有些操作系统对后缀名要求不严格的,任何文件都可能是可执行文件,可执行文件只要是计算机系统识别的指令集就可以了。java的可执行文件都是.class文件,这些文件所保存的指令集被jvm识别,并且由它来本地化解释给本地计算机识别。所以.class文件就是可执行文件。
      

  5.   

    class文件就是被java程序直接解释并执行了
      

  6.   

    运行机制:按照其执行方式分为
    1,编译型 c,c++,Pascal...
    2,解释型 
    各有优缺点,编译型 程序执行效率高.因为被针对特定的平台一次性编译成机器码,可以脱离开发环境独立运行;
              解释型 需要在执行前先解释成特定平台的机器码,解释一句执行一句.执行效率低,且不能脱离解释器
                       独立执行.但只要提供不同平台的解释器就方便的实现程序的移植.一般来说,程序的编译效率与执行效率此消彼长.java根据实际的需要采用了一种灵活的机制:编译和解释型的结合.先采用通用的JAVA编译器(Java Runtime Environment)将源程序编译成仍然和平台无关的中间产物--字节码文件(class文件),
    然后采用虚拟计算机技术,称为JAVA虚拟机(Java Virtual Machine).执行时先将JVM运行在特定的平台上,然后在
    由JVM对字节码文件进行解释并执行.
      

  7.   

    这种JIT编译器,顾名思义,Just-In-Time,仅在运行时才进行,
    将其编译成为平台相关的机器码(由于现在已经运行了,无需再考虑可移植性)。
    这样处理后,可以带来10倍甚至20倍的速度提升。
    而且这个技术正在不断地得到改正,今后JIT编译器将更加智能,
    能够监测出哪些代码经常执行,从而对其进行适当的优化,进一步加快执行速度.
    来源于:http://www.ieyeh.com/post/451.html
      

  8.   

    Java Runtime Environment是一个更大的实现 它包括Java Virtual Machine
    jre与系统有关 我们在sun网站上会看到很多不同版本的jre 它还包括具体的一些类库 
    jvm与系统无关 除了少量如垃圾回收机制和线程调度机制可能与具体平台相关外
      

  9.   

    当生成.class文件后,删除.java文件 ,jvm照样可以解释编译。
    .class文件就是字节码,保证了Java的平台无关性了。