刚刚在家没事做,翻了一下以前的java基础书籍,看到字节码这了,想不通,只知道java中代码都是转换成字节码虚拟机再运行的,我不明白的是字节码到底是一个什么东东?java的运行流程就是先把java源文件通过javac.exe工具编译成.class的字节码文件,JVM再通过java.exe直接运行字节码文件,也就是说每次运行的是.class字节码文件,我想这在一定程序上增加了安全(个人观点),但是谁能够给我解释一下字节码到底是一个什么东东吗?
调试欢乐多
http://dev.csdn.net/author/hnsc/5ed53b5481b44d759bfc5ed2d817d59a.html
同一份程序要想在两种机器上执行(他们的机器码是不一样的),怎么解决?
要么做俩编译器,A编译器编译出的机器码时候A机器,B适合B字节码就是程序和机器码的中间物,在A机器上虚拟机把字节码翻译成A机器的机器码
就这样理解的
翻译成cpu可以运行的指令集。
jvm可以理解成建立在操作系统上的另一层操作系统 字节码就是jvm可以运行的二进制代码。然后jvm
用它调用操作系统的api或者直接翻译成cpu的指令集。这种方法的直接好处是可以使java跨平台。而且字节码是一种二进制代码 运行起来一定比直接运行快。
这就是为什么java不直接解释执行java程序 而要把它先编译成字节码的原因