刚刚在家没事做,翻了一下以前的java基础书籍,看到字节码这了,想不通,只知道java中代码都是转换成字节码虚拟机再运行的,我不明白的是字节码到底是一个什么东东?java的运行流程就是先把java源文件通过javac.exe工具编译成.class的字节码文件,JVM再通过java.exe直接运行字节码文件,也就是说每次运行的是.class字节码文件,我想这在一定程序上增加了安全(个人观点),但是谁能够给我解释一下字节码到底是一个什么东东吗?

解决方案 »

  1.   

    我建议你去看下这篇文章可能会明白一点.
    http://dev.csdn.net/author/hnsc/5ed53b5481b44d759bfc5ed2d817d59a.html
      

  2.   

    程序-------------------机器码(机器能执行)
    同一份程序要想在两种机器上执行(他们的机器码是不一样的),怎么解决?
    要么做俩编译器,A编译器编译出的机器码时候A机器,B适合B字节码就是程序和机器码的中间物,在A机器上虚拟机把字节码翻译成A机器的机器码
    就这样理解的
      

  3.   

    学过C#吗?   这个字节码就是类似于那个里面的程序集比如我们用c++6.0编译成的是机器直接可以运行的 二进制代码   通过操作系统把这种二进制代码
    翻译成cpu可以运行的指令集。
    jvm可以理解成建立在操作系统上的另一层操作系统  字节码就是jvm可以运行的二进制代码。然后jvm
    用它调用操作系统的api或者直接翻译成cpu的指令集。这种方法的直接好处是可以使java跨平台。而且字节码是一种二进制代码  运行起来一定比直接运行快。
    这就是为什么java不直接解释执行java程序 而要把它先编译成字节码的原因