00:00
好,那我们接下来呢,再介绍两个概念哈,呃,第一个呢,叫做自解码,这个呢,大家已经非常不陌生了哈,这个我们这个解释运行的GM程序呢,都是基于这个自检码,我们这里边想这个说明的是呢,以后我们这个词呢,其实可以变一下,说Java区机呢,能够解释运行Java自解码文件,那以后呢,其实我们基于GM的跨语言的平台的这样一个特征,我们其实可以把它改成了叫GM子解码。诶GM这码也就是说呢,只要是呃,我们任何一个编程语言啊,遵循了Java虚拟规范,然后呢,你通过自己的编译器生成的自建码文件,遵循了Java虚拟规范的这个标准,那么都可以被我们Java虚拟机所解释运行啊,所以我们虚拟机其实识别的不只是障碍语言的自解码了,而我们称为叫呃,GVM诶字节码,诶就是这样的一个称谓啊,那其实我们刚才提到的呃,这提到了这个叫编译器啊,这叫编译器,然后呢,我们Java虚拟机呢,去解释运行资节码文件,那我们通常呢,还要遇到叫解释器或者叫GI it即时编译器,那这样呢,其实我们可以称为叫编译器的前端,那我们解释器和GI itt即时编译器呢,可以称为编译器的后端啊,其实统在一起呢,是呃,也可以整体上叫的话呢,说这叫变异器,然后这里边呢,也有变异器,哎,是这样子的啊,那其实在整个it领域里边,或者整个这个我们叫呃。
01:29
信息产业里里边哈,有三大技术难题,第一个呢叫CPU,第二呢叫操作系统,那其实第三个呢,就叫做编译器啊,是并行的三大难题,呃,大家平时可能在呃这个媒体层面呢,听的比较多的呢,是我们要有自己的CPU,我们要有自己的操作系统,那其实编译器呢,也是一大难题啊,是这样子,只不过它比较难哈,其实现在也很少有人去提这个问题而已,好,这个我们就过了,然后下个呢,叫做多语言混合编程。诶什么意思呢?基于我们GM这样的一个特征,呃,它可以实现这个跨语言的一个平台,那么现在呢,我们能看到呢,在GM这样一个平台上呢,进行多语言混合编程呢,会成为一个主流,而且呢是越来呃越明显的一个趋势,比如说呢,我们在并行处理方面呢,可以用呃,Clover,然后展示层呢用j Ruby或reals,中间层呢用Java,那应用层呢,根据不同的这个场景,我们使用不同的编程语言来完成就可以了,那能够实现这样的一个组合的原因是因为呢,呃大家都可以在GVM上呢进行解释运行,那相互之间呢,调用各自的API,就像调用自己的API一样方便,因为大家总归都要呃经过编译以后呢,生成相同规则,规范的自己码文件嘛。
02:47
像咱们Java语言呢,就可以去调用C语言,对吧?那不同的语言之间是可以相互调用的啊,又因为他们都可以在同一个平台上解示运行,所以这个事儿呢成为可能性,而且呢,我们也看到一种趋势,就是越来越多的编程语言都选择用GM作为它的解式运行的一个平台啊,是这样子的,那么GM呢,后续发展下面呢,提到了几个项目,呃,大家呢,如果听过咱们官网商务官网放的这个JAVA12 java13新特性的话,在13这套视频的最后提到了几个项目啊,这几个项目呢,共同推动的,呃,Java往前走,那其中呢,就涉及到了有一些项目是呃跟我们虚拟机相关的啊好,这我们就过了,然后下个呢,如何真正搞懂GM?
03:33
诶,我们其实刚才提到了很多都是一些描述性的,或者叫一些理论性的东西哈,那要想真正整明白GM,那你只想懂这个理论肯定是不够的啊,真的要想明白一门技术的话呢,那一定要去实践实践啊,就像你真的想懂如何去追一个女生的话呢,那你就得去实践,你学再多的理论呢,你实践没有也是白扯,对吧?实践追一个没追到,想一想为什么给你锯了,然后再追一个也没追到,又锯了,又追一个也没追到,呃,这得好好想一想啊,然后呢,学点理论知识,然后再去实践啊,真正实践好了,那才是真正懂哈,是这样子的哈,那扎尔逊机呢,我们说非常复杂啊,要想真正了解它的工作原理,最好的方式呢,就是自己动手编写一个Java虚拟机。
04:20
那自己动手编写个扎熏机,没想过这个事儿是吧?难不难呢?嗯嗯,可以说很难,也可以说不难,这个这叫天下事有难,易乎,为之则难者易易,不为则易者亦难易。当然我们可以这样来解释哈,说会者不难,难者不会啊,像你骑自行车一样,呃,你学会骑自行车了,你觉得这事儿很简单,眼往前看,脚下蹬,哎,他就走了是吧?想往哪拐,手往这边拧一下就行,当然你要对于不会的人来讲呢,这还是挺困难的一件事情,对吧?但是呢,本身要写这个虚拟机的话呢,呃,你要问这个问题,呃,其实答案确实是可以难,也可以不难,呃,怎么解释呢?主要是关注于你对Java虚拟机,你开发的用途是什么啊,那我们如果说,呃,很难,呃,你如果自己想编写一个Java虚拟,能够实现完整的虚拟规范啊,甚至能够达到商用的性能和稳定性,很难对吧,一个人搞不定。
05:18
但是如果说不难呢,呃,那是基于你如果不考虑这种规范和性能,只是呢,呃,运行简单的程序就可以了啊,了解一下Java几层的一个技术啊,那么他就不难。那这儿呢,呃,可以推荐,如果大家有兴趣的话啊,诶可以推荐一本书,叫自己动手写Java虚拟机啊,这个作者的话呢,他是用构语言开发的这个GM啊里边代码呢,这个我看了看,大概有一万多行,呃,如果大家要写的话呢,应该20天左右吧,那应该是可以搞得定呃,自己动手写扎va虚拟机的哈,呃,这里边作者比较讨巧的是,他其实关于垃圾回收这块呢,是用到了购物语言,因为购物语言本身它就具有呃比较完整的垃圾回收机制,那这是一个比较讨巧的做法哈,那如果呢,你要用C语言去写,大家可以想象一下,那会比较崩溃啊,因为内存呢,完全暴露给你。
06:13
啊,你需要自己呢去管理内存收集,所以呢,呃,C语言写的话呢,你懂的好,这呢就是我们想说的这个问题。
我来说两句