JVM的封装思想
在我的眼中,jvm很类似操作系统,都是在干管理内存,控制线程和并发的工作,只是OS还要管理外设,而jvm没有干这个活,笔者认为它俩之间的核心本质是一样的,就是封装。
操作系统是面向硬件的封装
一个例子:对于用户而言,操作系统提供了操作硬件的接口,一个printf(“操作系统”); 就搞定了文字到0,1数据流再到像素点阵的转换,”操作系统”先在内存中被转化成0/1数据流传到外设的缓存中,然后根据数据流找到对应的像素点阵集合精确的显示到屏幕上。
图一:操作系统的封装
JVM是面向操作系统的封装
一个典型的例子就是java跨平台的实现原理:在用java开发的时候是不考虑平台的,Linux和Windows都一样,但是对于C++,那么编程就有较大的差异。这个核心原因就java编译的结果是字节码,运行在JVM上的;而C++的编译结果是机器码,是编译的结果与操作系统直接关联;
在我们安装JDK的时候也有对于操作系统的选择,这是因为JVM不是跨平台的,我们可以JVM看成一个桥梁,它的输入是java程序编译生成的统一的字节码,输出是jvm运行的操作系统对应的操作能够运行的机器码,真正实现了“一次编译,到处运行”的目的。
图二:Java与C++编译结果比较
这是典型的对操作系统的封装,通过JVM对操作系统的封装,实现真正的跨平台。