刚刚在家没事做,翻了一下以前的java基础书籍,看到字节码这了,想不通,只知道java中代码都是转换成字节码虚拟机再运行的,我不明白的是字节码到底是一个什么东东?java的运行流程就是先把java源文件通过javac.exe工具编译成.class的字节码文件,JVM再通过java.exe直接运行字节码文件,也就是说每次运行的是.class字节码文件,我想这在一定程序上增加了安全(个人观点),但是谁能够给我解释一下字节码到底是一个什么东东吗?
解决方案 »
- 关于session存在时间周期短,将他放入map中出现的问题
- adapter模式的现实意义
- 求助
- Thread.Sleep(2hours)时,用什么办法让它变成sleep(1hours)的时间
- swt技术问题(在线等)
- 求一条SQL语句
- who can help me to solve this Java problem?
- socket通信中不能同时读写的问题(急)
- 我装完j2se后设置为:path:D:\liuwenxi\j2se\bin,classpath:D:\liuwenxi\j2se\lib\tools.jar;D:\liuwenxi\j2se\lib\dt.jar
- 如何输入int型数据?
- 如何把一个服务端的字符串型变量值赋给用户端的一个字符串型变量
- 怪事情,高手帮忙讲解一哈好?
http://dev.csdn.net/author/hnsc/5ed53b5481b44d759bfc5ed2d817d59a.html
同一份程序要想在两种机器上执行(他们的机器码是不一样的),怎么解决?
要么做俩编译器,A编译器编译出的机器码时候A机器,B适合B字节码就是程序和机器码的中间物,在A机器上虚拟机把字节码翻译成A机器的机器码
就这样理解的
翻译成cpu可以运行的指令集。
jvm可以理解成建立在操作系统上的另一层操作系统 字节码就是jvm可以运行的二进制代码。然后jvm
用它调用操作系统的api或者直接翻译成cpu的指令集。这种方法的直接好处是可以使java跨平台。而且字节码是一种二进制代码 运行起来一定比直接运行快。
这就是为什么java不直接解释执行java程序 而要把它先编译成字节码的原因