java是解释执行的,这应该是它速度慢的原因之一

解决方案 »

  1.   

    java和VC,VB不同,不是本地代码,java为了实现平台无关性,即java生成的class文件都能在不同的系统中运行,即"一次编码到处使用",是在各个系统中一边编译一边执行,肯定会慢.
    不象vc,vb中已经在本机作出本地代码.即exe,dll文件.但这些文件一旦换一个系统,例如从windows 到UNIX,就根本不能运行.
    具体内容可以看一看编译原理,大学的课程.
      

  2.   

    你可以看一下Java虚拟机规范,JVM是一种堆栈机,所有的对象都在堆上分配,所有的局部变量都放在栈上,没有寄存器,所以即使用JIT也很难达到很高的速度。
      

  3.   

    同意struct的意见,JVM就是用软件实现的一个CPU,可以将二者做简单的对比:
    1。java程序经过编译后形成的bytecode相当于CPU的汇编指令
    2。bytecode的执行是在堆栈中,而CPU指令的执行在寄存器(硬件)中。
    举个简单的例子:两个数相加。
    java中对应的bytecode为"iadd",CPU指令为"add",iadd的功能是把堆栈(一块内存)顶部的数弹出来并与此时的堆栈顶部相加,源码是
        long temp = popStack();
        *(long*)sp += temp;
    也就是说,取操作数、相加、放回结果都是用软件实现的。
    而其它未用虚拟机的程序(C)执行时已经是在执行机器代码了,同样一个add,这里是把操作数从内存装入寄存器、然后使用加法器相加,最后放回内存,都是用硬件实现的。
    一个用软件执行程序、一个用硬件,也就不难理解为什么java程序会慢了。
      

  4.   

    没有吧!要不是java,入关之后,我们国家不知道又要被美国,特别是微软骗走多少钱。