请教!jvm

jit编译产生的机器码是jvm来解释执行,还是通过什么调用直接交给cpu执行,然后返回结果。对jvm来说,我们的java程序只是数据,数据怎么能执行?多谢各位高手

jit生成的机器码是可以直接在真机上运行的,lrc下载也就是可以直接交给操作系统来执行
对于jvm来说,java程序也许只是数据,但是jvm的解析器会把这些数据翻译成机器码交给操作系统来执行。就好像bat文件,对于控制台来说,它也只是数据,但是控制台会把里面的内容读取后以指令的方式发送给操作系统执行。

jvm是调用什么api或者接口让cpu执行生成的机器码呢?怎么得到返回值?我们自己能否编一个程序将一段数据机器码交给cpu执行,并且返回结果啊

这个就不清楚了,否则我也能写个jvm了。
不过jvm是用c写的,估计也只是调用c的api或者通过c再调用汇编之类的吧。
想要自己调用一段机器码,理论上不是不可以,不过直接调用cpu指令集估计比较困难,毕竟中间还有一层操作系统。或许也可以通过一些高级语言的api来实现。

非常感谢,我想也是这个原理。再问一个,解释执行是不是就是一大堆if语句啊?

再请教一个问题啊,开闭原则:功能增加扩展肯定会带来代码改变的,比如增加个子类扩展原有功能,但是要使用子类,还得在应用的地方或者工厂修改代码啊,请问你怎么理解开闭原则?软件开发主要是想保证哪部分代码不变啊!

发布了79 篇原创文章 · 获赞 2 · 访问量 2267

猜你喜欢

转载自blog.csdn.net/liuji0517/article/details/104728648
JVM