00:00
那现在呢,咱们来介绍一款不是Java虚拟机的虚拟机,叫做单虚拟机,那既然不是Java虚拟机了,为什么还要介绍呢?因为它确实呢跟Java又有着哎千丝万缕的联系啊,那我们来简单来认识一下啊,叫做de虚拟机,那安卓系统呢,大家应该都呃再熟悉不过了啊,即使你现在手机不是用的安卓系统就是iOS系统啊,但安卓呢,你肯定身边绝对有人在用啊,这个毫无疑问了,这个安卓系统在5.0之前啊,它内置的呢就叫做devo虚拟机,那在5.0之后呢,它又替换为叫按二的虚拟机了,诶,是这样个情况啊,那这个单位虚拟机呢,我们说它不是Java虚拟机,主要原因是因为它没有遵循诶Java的虚拟机规范。那既然他没有遵循Java虚拟规范,那他执行的这个程序执行的我们这个文件呢,就不是class文件了啊,是这样的原因啊,那他执行的文件呢,是诶dex格式的这个文件啊,Dex这个格式的文件,那这个格式文件呢,实际上是可以通过这个class转换来的啊是这样一个情况,然后另外呢,我们在前面讲到,呃,我们说扎va虚拟级的这个架构的时候呢,我们提到了说指令集使用的是站的一种架构模型,而不是采用了寄存器,而我们这个大维西尼呢,它选用的就是寄存器的一种架构模型啊,那这种架构模型的好处大家还记得吗?
01:20
啊,它的执行效率是比较快的啊,但是它跟这个硬件呢,耦合度呢,相对来讲要诶高一些行,那这块呢,提到这个叫呃dex这个文件了啊,我们稍微带大家来看一下,这呢是我下载了一个网易新闻的一个APK啊,就是一个APP,呃,这个大家都比较清楚,在安卓系统上装的一个一个的APP的话呢,它都是一个点APK结尾的一个文件啊,那把这个文件呢,大家直接可以拖到你自己的这个手机上啊,就可以去这个安装好以后就可以执行了啊那这呢是一个这个APP的文件,我们把它这个名字改一下,它后边呢是一个APK结尾的,我改成一个zip格式的,改完以后的话呢,它就变成了一个压缩文件,然后我们做一个解压。
02:03
哎,大家可能原来没有做过这样的事情啊,那你可以下载一个啊演示一下。嗯。哎,这个解压的话呢,还稍微比较慢一些,因为里边这个文件呢比较细碎,我们一个呃APP当中呢,有很多小的一些图标哈,很多细碎的这个文件,诶打开以后这呢是我们具体的一个APP,呃,这个它的一个目录结构哈,打包以后的这个情况,这呢我们就不具体的去介绍了,那在这儿呢,大家会看到我们有这个dex格式的这个文件啊,就类似于咱们说字节码那个Del class这个格式的文件一样啊,它呢也是由我们这个字节码相当于是它的一个呃变形啊转化而来的。啊,是这样的一个情况啊,呃,所以说跟Java有一定的渊源啊,那具体来讲的话呢,实际上是当年的一个,呃一方面呢,是谷歌其实一开始呢,考虑用C语言作为它的一个编程语言,呃,但是考虑这个C语言呢,开发效率虽然高啊这个呃执行效率虽然高,但开发效率要低一些,那另外一方面呢,这个散公司呢,也有意呢向谷歌抛出橄榄枝,呃希望呢,把Java呢作为谷歌安卓系统的一门开发语言,那二者呢,这个情投意合啊,就走到一块儿去了,那确实呢,巩固了Java的第一的位置啊,现在呢,Java也牢牢占据着语言排行榜第一的这个呃位置啊,那当然另外一个方面呢,这个谷歌呢,虽然使用了Java作为开发语言,但是呢,它却不能够在Java的虚拟机上去运行,呃,他自己的这个程序啊,这也是多少有点背离这个Java的一个精神啊,行,那在这个安卓5.0的时候呢,他又提到了是支持叫提前编译啊,这呢提到了叫AOT啊提前编译的这样的一个技术。
03:44
这个提前编译呢,又有别于我们说的这个git即时编译器,呃,好处呢,就是相当于可以直接把我们写的程序的源文件啊,不经过磁解码文件直接呢,呃,编译成机器指令啊,这个相当于执行效率就更高了啊,当然也存在一些弊端,这个咱们后边呢也会介绍。
04:02
好,这呢,就是我们说的这叫deal维虚拟机,那除了我们上面介绍的这么多虚拟机,虚拟机之外呢,其实还有其他的一些具体的应用场景的一些虚拟机,这儿呢,我们就不再一一做介绍了啊,因为很多啊,那具体的GM的内存结构呢,诶取决于它具体的实现,呃,不同厂商的这个GM,或者是同一个厂商发同发布的这个不同的版本啊,就比如说BA公司发布的是吧?呃,不同的版本的话呢,它都可能会存在一些差异性,所以呢,咱们讲解GM这个课的时候呢,呃,一方面考虑到GM这个规范,那另外一方面呢,咱们把housewa虚拟呢,作为一个默认的啊虚拟机,所以我们主要还是基于houseport虚拟机进行我们课程的一个讲解啊,因为本身的houseboard也作为官方Oracle的JDK和open jdk的默认虚拟机,所以我们用它呢也没毛病。好,那么关于我们GM啊,各个产品的一些介绍呢,基本上我们就诶到此结束。
我来说两句