00:00
各位老铁早上好,今天的话我们来谈第二道面试题,谈jdk j re j vm他们有什么样的关系,以及所谓的跨语言跨平台又是怎么回事,下面的话呢,我们一起来看一下啊,第一个的话呢,我们来看一下JDK,呃,JDK这里面的话呢,它是一个简称,全称的话呢,是Java开发工具箱,那里面包含两块东西,一块呢是我们要开发的一个开发环境,一个呢是运行环境。那所谓的运行环境呢,实际上就是大家看到的在后面这个叫做zre啊,Zre的话呢,全称就是Java运行环境,所以在这一头大家也到啊,就是ZDK啊,它里面的话呢,它很明显它包含了zre,对不对啊,然后我们再看zre这里面有什么呢?Zre里面有包含了Java虚拟机,还有一些基础类库,所以再往下走,就是我们的Z包含了Java虚拟机,OK,好,这一块呢,我们就是简单的把这三者的关系呢做一个梳理而已啊,如果说我们要去深入的去学习Java虚拟机的话呢,那么这个课程本身呢,都要聊的话,还可以足足聊几十个小时啊。
01:03
那Java虚拟机它是一个非常关键的一个设计啊,这个东西的话呢,它提供了什么呢?它提供了执行自解码文件的能力。那所以我们经常听到啊,这个Java说跨平台啊,那么实际上来说,它借助的关键的点是谁,就是Java虚拟机。来,同学们跟着我来看下一张图啊,这张图。这张图里面的话呢,首先我们看这里头啊,我把它稍微放小一点点啊,来看这头,大家看到呢,在这个地方的话呢,首先是会有我们什么是会有我们的这个,呃,Java的原文件,就是我们会去做一个编写,比如说编写一个hello word这样原文件是吧,然后经过翻译之后呢,经过编译编译啊编译之后呢,变成一个class文件。好,这个class文件就是一个自解码文件,它是一个本身来说的话呢,它是一个规范啊,就服一定的规范,然后这个规范这个文件之后呢,它可以跑起来,跑哪呢?可以跑各种平台,比如说咱们可以看到这些平台,比如说呢,在这里面的话,你可以跨平台跑论所所谓的跨平台就是什么?就是我就这么一份文件是吧,然后我能够在Windows上跑。
02:06
我也可以在Li上跑,对不对,OK,所以这个时候的话,能够到处去跑啊,跑这个地方,那么在这里面的话,大家可以注意看到,那但是注意我并不是直接往上跑,而是什么呢?需要借助一个东西,而这个东西就是我们说的Java虚拟机啊。那大家注意一个点是什么呢?我们经常说跨平台,跨平台指的是什么?指的是我们经过编写的Java文件之后,翻译出编译出来的这个class文件,这个class文件跨平台,但是本身我们的Java虚拟机是不跨平台的,大家可以看到这边特意写了这是Windows版的一个Java虚拟机,这个是Linux版的Java虚拟机,所以需要不同的版本去把我们的这个class文件翻译成不同操作系统的一个机器码。啊,所以有一个编译,还有一个翻译的过程啊,所以本身这个东西是不跨平台的。所以这点大家注意啊,好。OK,然后的话呢,在这里面的话,注意看一下啊,那这是第一个特点啊,第一个问题,那大家我们经常看到什么叫跨语言,诶跨语言的事情什么意思呢?来说一下快圆是这样的。
03:10
我们现在看到呢,感觉上以为Java虚拟机就只能跑Java语言,对不对,但实质上在设计这个东西的时候的话呢,它并不是这么设计的,他是认为这是一个规范啊,这是一个规范,然后呢,只要你开发了其他的语言啊,比如说其他语言,OK,好,非教语言啊,非教言不一定是非一定要教言其他语言,然后这个语言的话呢,它只要能够有相关自己的编译器,然后呢,把它编译成我们对应的这个符合规范的class文件,它就可以在我们的Java逊上跑了。所以叫跨语言,所以我们会看到先,现在市面上也有很多语言,它本身就属于这个Java虚拟机体系的语言,OK,所以你会经常听到,诶,这个语言也是属于Java虚拟机体系的啊。体系的一员,OK,那么很简单,就是因为呢,它也是能够编译成符合规范的这种class的自建文件,所以它当然就可以跑在我们对应的平台上了,OK啊,好,这就是我们说这个跨平台跨语言的一个特点啊。
04:11
好,这有个小东西呢,说明一下啊,就这大家可以看到这边的话呢,会有一个水印,那这个我重新没有再去改它了,这是因为当时呢,我在写这个文章的时候呢,我当时的命名就是叫叫666啊,后面呢改了一个名字啊,所以的话呢,这个水印是以前的水影,所以一直遗留到现在啊好,关于今天这道题的话呢,我们就给大家分享到这啊,咱们下道题再见。
我来说两句