00:01
好了,那咱们接下来咱就继续再往下了,那么上节课呢,我们最主要是讲了一下关于我们Java语言的特性这一块讲了三点啊,第一点是它的简单性,相对而言,第二点呢是关于Java的面向面向对象,第三点就是健壮性,那么在这个讲解的过程当中呢,我跟大家提了这么几个字眼啊。哪几个字眼呢,就是JVM呢,又加了这么一个东西,你要知道JVM它实际上是用C加加语言写的一个,呃,一个虚拟的一个电脑啊虚拟。然后呢,还有一个呢,叫做G是种不你有字眼啊,就以上啊,又说了几个关键关键的术语啊以上。讲解中啊,又描述了。这几个术语啊,这几个术语。一个是JBM。
01:02
啊。JM是什么呢?是C加加语言写的啊,一个虚拟的计算机啊,虚拟的计算机,虚拟机。GC是垃圾回收机制啊,垃圾回收机制,嗯。自动回收机制好了。那么再往下呢,咱们的这个。Java源这块啊,它是支持多线程的,那那这块我讲这个多线程你肯定听不懂啊,所以我就不讲了啊,后期呢,咱们在Java这个讲解的这个过程当中啊,我们会花费将近两天的时间去专门给大家啊va完全支持或者是完啊。完美支持什么呀,多线程并发。这个这个我给大家举个例子啊,什么叫多线程,比如说吧,比如说啊,呃,咱们从123306这个。
02:04
火车票的一个购票网站上就可以看到啊,就是多线程并发是什么意思,就表示你在买票的同时,你的朋友,你的亲戚啊,你的同学都可以去买票,对吧,他不需要说,呃,等你买完之后啊完之后我再去,我再去买。对吧,他不需要互相等待啊,他一个项目或者一个系统,它支持多个用户同时并发访问,同时去访问啊,非常典型的是什么?就是比如说像那个京东商城,它有一个什么功能,这个商品一般可能会有一个秒杀功能,对吧?啊规定哪年哪月哪日几十几分几秒开始秒杀,对不对,秒杀那在这个同一个时间点上呢,他可能上千人,上万人同时去抢这个商品,这个库存可能就只有五个。对吧,但是人呢,可能有100万对吧,那这100万人同时访问这个系统啊,那这个系统是支持支持多线程,一个线程就相当于是一个处理啊。一个线程就相当于是一个处理流程,一个线程就相当于是个处理流程,而Java呢,它是支持多线程这种机制的啊,完完全的支持多线程并发这种机制啊。
03:07
杜建成,可以提高程序的一个执行效率啊,对,后期我们会给大家详细讲,现在呢,先不用管它啊。行了,那咱们继续再往下了啊,那么再往下呢,这块呢,咱们,呃,这个点呢,就非常非常重要了啊,非常非常重要了,叫做可移植性啊,可移植性啊,或者是平台啊,大家看到了,我这个叫做加va语言特性当中啊重点两项,一个是性,一个是可移植性平台,这两个标成了红色,就代表这两个,大家要知道剩下的就算你没有听也无所谓,什么简单性啊,面向对象啊,杜建成啊,你没有听到也无所谓,但是提起这个健壮性,你要知道一个GC机制啊,可移植性和跨平台这块也是一个重点啊,大家听一听啊,它是怎么做到可移植性平台的。可移植性。啊,跨平台。
04:02
跨平台。就是说Java语言啊,Java语言只要编写一次,可以做到到处运行。例如Java程序。编写完之后啊,编写完之后。啊,可以运行在这个Windows操作系统上啊呃,不需要做任何什么呀改动。啊,改动。可以直接运行在什么呀,Linux操作系统上。啊,同样。也可以运行到什么呀,哎,Mac。OS上。
05:00
Mac OS上。就是果的这个设是感觉特别特别啊,特别别么,可性平台的一个理解,大家现在先这样去理解,就是我的程序只需要编写一次,它可以做到到处运行,我们叫跨平台,它可以在Windows上,也可以在Li上,也可以在Mac,呃,这个本上啊,Mac系统上可以去运行,这是没有任何问题的啊,就是一次编写到处运行,一次编写到处运行,这就是第一天开门的时候,有同学说的一句话啊,叫做一次编写到处运行。跨平台啊,平台改变了,但是程序不需要动啊,平台改变了。程序不需要改。啊,程序不需要改。那么这个是怎么做到的呢?我给大家呢,画个图吧。这个MS表示微软啊。
06:02
Microsoft Ms PI呢,这是表示画板啊,这样的话就可以打开这个,呃,画板可以在这画个图啊,咱们说一说啊,假如说程序谓程序程序。那么这个操作系统啊,它有很多操作系统啊,你比如说啊,给大家举个例子啊,啊,这是一个操作系统啊,这是一个操作系统,那么这个操作系统呢,我们就叫做Windows操作系统。啊,或者Windows OS。啊,这个O呢叫operation啊,Operation叫做操作,S呢叫system system是系统啊,OS就是操作系统Windows OS,那么这块呢,假如说它是一个这个这个。叫做。这个麦克的啊OS。就是我们苹果的啊系统,它苹果系统实际上是一个类这个Linux系统啊Linux系统。
07:06
那么我的这一段加码程序可以直接运行的,也就是说我这个程序啊,我写一份啊,我放到这儿可以运行,我放到这也可以运行啊,也可以运行,那它这种行为被我们称为什么呀?叫做平台啊,或者叫可移植,在你操作系统发生改变的时候,我们却不需要改动任何程序,这就是我们这个概念上的一个理解啊,叫做可移植或者跨平台一次编写道运行,那么它是怎么做到的呢?呃,在这里我要重点的给大家讲一讲,大家呢仔细听啊,注意听这一块,那么大家知道这个Windows操作系统和Mac OS Windows OS和Mac OS它两个操作系统原。来告诉我,执行原理一样吗?执行原理一样不一样?灵灵灵魂换上同学们,就是Windows OS和Mac OS,它们两个的系统的一个原理一样不一样,就是执行原理,在底层这个内核上的这个执行原理,它一样不一样。
08:05
同学们告诉我,一样还是不一样。它操作系统不一样啊,它的这个Windows OS,它这个和Mac OS它这个执行原理一样不一样。有没有同学回答一下啊,给配合配合咱们这个争取精彩一些啊,精彩一些。操作系统不一样啊,软件这个操作系统不一样,他们的执行原理一样吗。没有同学回答。当然是不一样的啊,当然是不一样的,那同学们有声音吗?现在我说话这个声音吗?嗯,是卡了吗?没卡吧?一样一样一样一样一样还是不一样啊。不一样啊,不一样Windows操作系统它是和这个Mac OS操作系统是不一样的啊,它一样的话就完了吗。
09:02
对啊。他们他们两家都是这这个这个都是这个系统都是收费的,谁也不肯不肯公开啊,他肯定是不一样的。对程序的执行肯定是。不一样的。延迟太高了。没卡。哦,行行行行行行。这个不一样啊,系统不一样。呃,就像一个是iOS系统,一个是安卓系统,这个这个这个苍生同学说的太对了啊,太对了,这个iOS和安卓怎么能一样呢,对不对,他执行程序的原理也不一样,那就怪了呀,那就怪了,那他是怎么做到的,说这个Java程序还不需要做任何改动,你说这个Windows执行程序的是一个方式,麦克OS执行程序它也是一种方式。对吧,那你说这个是怎么做到的呢?说这么神奇吗?这个加号同学写一写一下,然后呢,放到这儿,放这呢,哎,所以说大家注意啊,它没有那么神奇啊,没有那么神奇,实际上啊,实际上实际上在Java语言当中有一个机制啊,叫什么呀,叫做JVM。
10:06
叫做JVM啊。这是Java虚拟机,Java虚拟机用C加加语言实现的一个虚拟的电脑啊,用C加加语言实现的虚拟的计算机。啊,Java程序实际上并没有。并没有直接和操作系统打交道。大家这点要注意啊,就是说其实并不是大家想象的说我们这个加va程序叭就放这了,叭就放这儿了,不是这样的,不是这样的,没那么神奇,因为毕竟你这两个操作系统的机制是不一样的,所以你执行程序肯定是方式也是不一样的,而我一个相同的加法程序可以放到不同的环境中执行,这个不可能做到啊,谁也不可能做到,世界上没有这样的人啊,没有这样的人,那么Java虚拟机呢?哎,我们在上节课的时候就给大家提到过了啊,他是用C加语言实现的虚拟的计算机,Java程序实际上并没有直接不是直接放到这儿的,实际上在这个里面它有一个什么呀,有一个虚拟机。
11:15
啊,有一个JM。啊,有一个,然后呢,在这个。里面呢,它也有一个什么呢,也有一个GM啊,也有一个GM。啊,JMJMM对。啊,然后。对,底层执行都是零和一啊,但是它的执行原理不一样。那你如果说到根上,计算机它都是电流,电流这个东西它是01100110,对吧?啊,那你这个这个这个说到最最最最最底层,他们可能只都是操作二进制,但是大家想一想,在Mac OS里边这个二进制码的序列和这个Windows操作系统里边的二进制码的序列肯定是不一样的,对吧,那说到根上它都是二进制执行。
12:03
对不对,但是他肯定二级板的序列肯定是不一样的。啊,这个大家要知道啊,大家知道。行,那么每一个操作系统它的执行原理是不一样的啊,然后呢,这个地方实际上是有Java虚拟,这有Java虚拟,而我们的这个Java程序。啊,他很聪明啊,詹这个团队啊,他的成员很聪明,他怎么做呢,他把这个Java程序啊干什么呢。放到这个Java虚拟机里边。然后呢?哎,放到这个Java虚拟机里边,然后我们的Java程序和我们的Java虚拟机打交道。啊,这个是一份啊,这个是一份。或者说是一样的。啊,这个也是一样的。就说这个Java程序它是一样的。啊,拿过来。
13:02
一份Java程序可以到处运行。那么现在呢,我再问大家一个问题啊,问大家一个问题。我们这个Java虚拟机一样不一样,就比如说Windows上安装的这个Java虚拟机和我们的Mac OS上安装的这个Java虚拟机一样不一样。需不需要分版本,比如说这个上面是不是应该安装Windows版本的Java虚拟机,而这个上面是不是应该安装我们苹果Mac OS版本的Java虚拟机,是不是应该这样呢?对吧,哎,所以说这块呢,大家注意啊,实际上Java虚拟机并不是通用的。不是通用的啊。这个呢,可能是这个是。一样怎么可能一样呢?怎么可能一样呢,这个五中同学不可能一样啊,这个肯定是不一样的啊,这个是Windows版的。JVM这个是什么呢?是Mac版的。
14:05
GM啊,一个是Windows版,一个是Mac版的GM。啊,那因为你的JVM要和我们的Mac OS打交道,也就是说实际上你的程序和你的Java虚拟机打交道。啊,哎呀,这个不太好画啊,不太好画。哎,对,你的Java程序和你的Java虚拟机是打交道的啊,我慢点画啊是这样。而你的Java虚拟机是和你的操作系统打交道的啊,是这个意思。明白吧,哎,这个是我们的Java虚拟机,而这个呢,是我们操作系统啊,是我们的操作系统。那么这块呢,在最外层是什么?这个最外层呢,其实就是我们的硬件了。
15:04
啊,硬件。那这个位置就是我们的一个硬件了。啊,硬件。硬件不需要我说了吧。CPU啊。内存啊。硬盘呀,是不是我们的操作系统在和我们的硬件打交道啊,来换下颜色,就是这样的一个关系。啊,这样的一个关系。嗯。他们是这样打交道的啊,大家注意听就行了啊,注意听就是说实际上是我们的Java程序放在一个所谓的Java虚拟机当中,而Java虚拟机放在我们操作系统上,而我们操作系统实际上是放在我们这个硬件上,它的执行过程是什么呢?实际上是我们Java程序是一样的,然后我们Java虚拟机版本不一样,有Windows版,有Mac版,然后Windows版呢。他Java虚拟机。它运行在Windows操作系统上,而Mac版的Java逊运行在Mac系统上,而我们的操作系统最终在和我们的硬件进行交互,啊,在和我们的硬件进行交互,是这样一个交互过程。
16:07
啊,那么这块呢,其实大家也能够理解,我觉得啊,我也觉得这个应该是能够理解,你不可能说啊这么神奇,我加个程序只写一份啊,这个操作系统不一样,叭放上去,叭放上去就行了。对不对,那也太神奇了,因为Windows操作镜和Mac操作镜它执行执行原理不一样,它执行这个程序的方式是不一样的啊,那执行方式不一样,所以说它实际上它的一个原理是什么?就是Java虚拟机屏蔽了操作系统之间的差异啊,有一非常非常经典的一句话啊。非常经典的一句话就是Java虚拟机GM屏蔽了。操作系统之间的差异啊,之间的差异。来,我把这个图片呢,给大家先保存一下啊,别一会儿丢了来放到这个D盘下,然后cause,然后零二,然后这块的话,我放到document这块,然后呢PNG啊,然后接下来这边嗯。呃,Java怎么实现跨平台的?
17:05
啊,怎么实现跨平台呢。啊呃,来这个还没说到点上啊,稍等同学这个明强啊,你问的有点着急了啊,那么这个咱们这个Java虚拟机这一块啊。哎,它有不同版本,那Java是怎么来的呢?是通过安装JDK来的,注意啊,JM是怎么来的,是通过安装什么呢JDK。就是说在什么呀,在安装JDK的时候会自带什么呀。哎,会自带这个。JVM啊,会自带JVM。所以JDK也有不同版本。啊,这在这儿等着呢,所以JDK也有不同版本啊,有Windows版的JDK啊,有Linux版本的JDK啊,你可能需要从这个网上下载这个Windows版的JDK,下载这个Linux版本的JDK,你下载不同版本的JDK啊,然后装到你不同的系统上,这样的话你才会才会有这个这个这个这个不同版本的Java虚拟机啊Java虚拟机好了,这个呢,实际上是我们完成跨平台的一个重要的一个机制啊,那么现在我问大家一个问题啊。
18:25
这个JVM这种机制实现了什么呀,这个跨平台。啊,跨平台,呃,那么这种机制优点和缺点分别是什么?它的优点和缺点是什么?先说优点吧,优点没什么可说的,优点就是到处运行,就是一次编写到处运行啊,可以跨平台。这是它的一个优点,那缺点是什么呀?缺点是麻烦麻烦啊,呃,对于运行Java程序来对运行Java程序来说必须。
19:09
啊,必须先有一个GVM啊,就像你要想看视频啊,要想在网页上看视频,你必须先安装一个flash,是一样的啊是一样的,就是说大家要注意啊,就是说你在这个网页上,你打开之后,你要看视频,你一看视频一看。对吧,哎呀,安装什么flash启动什么很人啊,很因为没有这个SH运行不了啊,那么我们va程序这个va虚拟GM这种机制呢,它的它的机制就是它的也有优点,它的优点就是优点就是跨平台啊可移值,但是它有也有缺点,它缺点是什么呀?缺点就是说你要运行Java能必须得有一个,呃安装这个JDK啊,因为安装JDK之后,你JDK下边才会有这个啊JVM啊,才会有JVM。
20:05
呃,缺点是运行效率较低,不是啊,它不是运行效率较低啊,不是运行较它效率不低,效率不低啊,其实它的效率一点也不低,就是它的缺点就是麻烦麻烦啊来Java语言可以写编写可以编写病毒吗。大家想想,Java语言可以编写病毒吗?这个可以啊,没问题,没问题啊,但是很难让用户中毒啊,很难让用户中毒。这可以啊,没问题,但是很难让用户中毒,中毒的都是安装Java虚拟机的啊,就是中毒的一般都是Java程序员啊,一般的都是加法乘学啊。所以没有就很少啊,很少有人编写什么呀,Java的病毒脚本啊,Java的病毒脚本就是这样,那就这样手机咋又没声音了,哎,大家有声音吗。
21:08
Java语言可以编写脚这个病毒脚本啊,没有任何问题,但是你这个编写这个脚本没什么太大的这个作用啊,啊没有什么太大作用,因为因为你编写这个病毒带到病毒这种东西啊,它这个电脑病毒它具有一个特点就是传播性,对不对,那你如果说你这个程序是必须动,加上虚拟遗上,那不就尴尬了嘛,是不是,哎你就尴尬了,所以说这块的话,咱们要了解一下啊,知道这个Java语言的特性啊,Java言特性有很多很多,其中有个非常重要的特性叫可一致性和跨平台性,它的实现原理实际上就相当于是,呃,在不同的计算机上安装不同版本的Java虚拟机,而你的Java程序运行在Java虚机当中啊,Java虚拟当中。好了,那么这块呢,咱们就说到这儿啊,说到这儿。
我来说两句