java编译后的exe文件,还是字节码吗?还需要虚拟机来执行吗?
-------------------------------------------------------------
其实用java编写的程序,最终也要生成exe文件供用户调用的。
所以我不明白,exe本身就是可执行文件呀,这个exe的执行还需要虚拟机吗?
这个exe还是字节码吗?

解决方案 »

  1.   

    谁说的最终要编译成exe的,哈哈。当然不是这样的。exe基本上只是windows上的可执行程序。java里有工具可以帮你把java的.class文件组成的程序转成exe,exe文件当然就可以直接在windows上运行,但这不是必须的。一个桌面的java程序打成jar包也能在pc上运行,只不过需要安装对应的虚拟机。并且,举个例子,用javaEE写网站,写出来的java类都是编译成.class,在jvm上运行的(服务器自带的jvm)。
      

  2.   

    一般exe只是起引导作用,还是需要加载jvm。
      

  3.   

    你可以看一下jdk\bin目录下的exe文件,都非常小。只负责启动虚拟机,加载需要的类。
      

  4.   

    这要说到JAVA的运行原理。
    JAVA本身是解释型语言,需要JVM来解释后转换成汇编语言才能运行。
    所谓的转换成EXE,主要是2种途径
    1 跳过JVM,将JAVA本身直接翻译成汇编语言的EXE,这样的确不需要JVM就可以运行,但生成的JVM硬件相关,或许是同样的XP系统,在你机器上可以跑,在别人机器就不能跑。
    2 生成一个自动调用JVM的EXE,此EXE只是起到自动启动JVM运行你的JAVA程序的作用,所以并非硬件相关,至少大多数WINDOWS机器都可以运行,但此类EXE需要JVM。更细点来划分,此类还有两种不同的方式:将JVM嵌入EXE,这样JVM就可以跟着EXE一起跑了,不需要单独放一个JVM在旁边。第二种方法就是单独放一个JVM在旁边,此EXE调用。
      

  5.   

    此外,JAVA的运行和EXE完全没关系,JAVA->CLASS->内存中运行,不涉及EXE。
    楼主应该再看看编译型语言和解释型语言的区别,可以GOOGLE