实际上是两个问题,第一个是,我编译完的java文件可否反编译成 含有jvm汇编指令的 字节码文件?就像在vs中可以直接看到他编译过后的汇编代码一样。第二个问题是,java的字节码是虚拟机在解释执行,那他的虚拟机是用什么写的呢?从执行效率上来看,jvm的汇编和普通的汇编代码是不是有质的变化呢?我知道python的虚拟机就是用c写的。可是效率慢了很多很多。可是java的虚拟机为什么执行效率还如此之快?其中到底有何高招呢?多谢。
解决方案 »
- Json格式的数据怎么转换成List?
- 学javaee的话javase究竟要学到什么程度
- 同一个project能同时连1个UDB,和2个sqlserver2005的数据源吗?
- 关于JAVA程序员就业问题
- 麻烦大虾们给我的作业改错?
- Frame和Panel有何区别
- 大家讨论一下这种情况下对象的回收!!!
- 学java也有一年了,又遇到classpath的问题,真是不好意思,送上100!高手也进来看看呀!
- 请问skyyoung关于输出输出流如何写进该URL文件
- 客户端 不能发送信息到服务器端?(在SOCKET)请看看下面这段程序有什么错?----客户端的发送信息服务器端收不了!
- JDBC问题
- 界面切换问题,先谢过了
要是别的就不会来。路过学习学习
2.一般是用C++来写。比如Sun 的hotspot jvm就是用C++写的。高效率的关键是JIT技术。对于频繁执行的代码段编译为机器码,而不是通过解释来执行。
当然也可以用别的语言来写,比如java ,一个著名的研究项目,jikes RVM 就是用java写的,而且在这个项目中,字节码是直接编译的,并不存在解释的过程。
在 class 文件上右击,选择 Open With --> Class File Viewer 就可以看到反编译的 JVM 指令了。
虚拟机把字节码文件依据不同的操作系统环境解释为机器码 所以不同的操作系统有相应的虚拟机 这就是java跨平台的实现手段啊。。
而java运行速度比c++等本地语言运行速度要慢,虽然现在通过各种技术让运行速度快了很多,但是仍旧还是要慢一些。至于它比python要快,但是java没有python动态性好,甚至java就不算动态语言,从这点上看python要比java优秀多了。