00:00
行,这呢是我们说的这个第一个特性啊,然后第二个特性呢,叫模块化系统,这个呢是扎VA9当中非常重要的一个变化,或者说呢,我们首推的就是这样一个变化,叫模块化系统,这个呢,它起了个名字叫jig saww啊这样的一个项目,这个呢,这个saw呢,其实也是个单词,那这个单词呢,应该是这个叫这个积木啊,呃,这样的一个意思哈。哎,这个我调一下这个有道词典,你像呢,他起这个名字,有的时候它都有相应的一些这个意义啊,哎积木啊拼图啊,哎就是说哎,我们原来呢,你写一个项目的话呢,就整体一大块,比如说我们需要呢,你把这个呃,运行时的这个整个的API呢,都加载进去,真正提到这个R7点账。那现在的话呢,我们说希望把它打成一块一块的,需要哪个用哪个,哎,这就提到叫模块化系统,就像积木一样,诶所以这个叫j saw项目,这个项目的话呢,后期改名了啊叫啊moity啊,这个也是本身它也叫模块的意思啊啊改了个名字,那么这个模块化系统为什么要推出呢?呃,下边呢,提出了一些这个背景,比如说呢,Java呢,已经九五年推出的,到现在已经20多年了,呃暴露出一些问题,说Java呢运行的环境呢,比较臃肿啊,每次呢,我们去启动GVM的时候,都需要去加载我们这个RT点账。
01:19
这个RT点,这大家可能还不是特别很好的去理解这个事儿哈,你比如说我们在这个环境当中,我现在先切换成这个是八的啊,哎,我做一个OK,哎这呢不就能看到八的嘛,点开以后,哎,我们找一下这个叫RT点炸啊RT点炸的话呢,就是说我们要想运行整个这个环境都会加载进来RT尔炸里边你点开诶你会发现呢,我们这有这个Java浪包OIO包,Net包,Ma包这里边这不都是我们对应的这些点class文件吗?哎,像这个BAT这不有BAT这样一个类吗?哎,包括这个常见的string啊,Float啊,Object呀等等,这不都在这里边了。哎,就是整个呢,我们要想之前想运行一个程序呢,整个这个RT点账它其实还挺大的啊,哎,都需要加载到我们这个内存当中啊,就会显得稍微臃肿一些啊,哎不管你用不用,反正都加载了,哎就这个事儿,下一个呢,说当代码库呢,越来越大的时候呢,这个创建复杂盘根错节的叫意大利面条式的代码的几率呈几何级数的增长。
02:22
这个是外国人写的,所以他就写成意大利面条式的吧,是吧,你要这块写的盘根错节的这个山西面条式的代码是吧?啊成几何级数的增长啊,就吃面条嘛,就是错综复杂到一起是吧?哎,这样的啊,对兰州拉面似的这个代码啊,哎,就一个意思啊,哎,就是代码呢,盘根错节在一起呢,非常让人头疼,交叉依赖,呃,咱们现在可能还没有体现更多的这个交叉依赖的问题啊,后续呢,会有,呃,然后呢,接下来。啊,说这个提到这个问题,说每一个公共的类啊,它都可以被类类路径下的任何其他的公共的类呢所访问到,这样呢,就会导致无意中使用的并不想公开的一些API啊,如果你这个API呢是公共的,但是你又一定程度上又不想它公开被访问,这个呢,诶之前做不到,那现在的话呢,可以考虑去做这样一个事情,比如咱们原来用那个g unit啊,那直接呢,你就可以用unit里边圈test这样一个注解了,那后续的话呢,如果虽然导进来了,但是你不想让他用也是可以的。
03:22
啊就是这样,然后呢,具体来讲如何呢?讲模块化呢?呃,本质上来讲,模块的这个概念就是在package之外呢再包裹一层啊其实说白了就是咱们以后开发项目的时候呢,诶大家呢,可以针对一个大的,比如说电商,我们去提供不同的模块,诶这呢是一个支付模块,这个呢是专门的登录模块,这个呢是购物车模块,诶分成不同的模块,然后呢,一个人或者几个人是一个小的team去完成独立的一个模块,模块跟模块之间呢,相互调用依赖,诶这样的一种关系啊,那这样的话呢,会使得我们这个代码呢就更安全,呃,因为它可以指定哪些部分可以暴露,哪些部分呢,需要隐藏好处的话呢,不用多说啊,就过了啊。
04:03
那下边的话呢,我们就来演示一下怎么去体现这个所谓的叫模块化这样的一个功能,那我们在这块呢,来说一下这个问题啊,那现在呢,你想使用这个模块化这个功能,那显然呢,你这时候不能在这个八的环境当中了,怎么也得是个九是吧,那我们就放上这个九啊,那具体这个哎,Modus这个咱们现在是在这个13 13这块呢,你好歹也得用个九,当然你写11OK啊啊,这个没问题,至少也得是个九啊,OK1下行呃,完事以后这呢,我们想在这体现这呢是一个具体的模块了,那我们现在想说明的是模块跟模块之间的一种调用,那我们就需要再去新创建一个module哈。新创建一个module这块,你看至少得是个九啊,或者你11呃八就不行了,怎么也得是个九,然后next这个呢,我写成叫哎JDK。或者叫Java吧,JAVA9的一个test,哎,我这样写的啊。
05:01
跑哪儿去了,后边靠近。JAVA9太了啊,整这里边了是吧,这个把这个删掉啊,不在这儿,在这个功能下啊,诶新建一个具体的module,然后这是这里K9,然后next这呢,诶JAVA9的一个test finish好这就出来了,行,那在我们这个S2C下呢,那不妨我就在这里边啊,现在我们去创建一个具体的哎,Class,我们就叫做module的一个test。啊,这呢,我就相当于写了一个类,然后呢,我这有另外的一个模块,诶就module,然后在这个src下呢,我们此时呢,比如我去写一个包险,诶,Com点看at硅谷点,比如叫一个B,哎,这个包在这个包下呢,我们,哎首先呢,我去提供一个类,这个类呢,我们就写一个person类。哎,类里边我们去提供相应的一些这个属性哈,Private string name in型的age,这个咱们都很熟了,提供这个相应的,比如说先盖塞的方法。
06:06
啊,这个alt shift s提供构造器,比如空餐的一个al shift s代餐的一个。嗯,Auto shifts,然后这个图资人方法,哎,这个EX后的我就不写了啊行,这个类呢,我们就写好了,是处在这个模块下,这写了个person,那现在我们想干什么事呢?我想在我们另外一个这个模块,这个module test这样一个类当中去调用一下我们这个person,就比如说我们创建一个person的对象啊,P等于new一个person啊这里边比如说我们想调这个代餐的,哎,显然呢,目前是不OK的。啊,怎么就能去调了呢?哎,这个我们可以在当前这个src项,哎,咱们呢,去拗一个结构,就叫做module infer的一个章。啊,提供一下它,然后呢,在我们这个JAVA9T它的src下呢,也去提供一个。呃,Model info的一个Java。
07:00
他这块提示我这块不让创在src下是吧。新建一个,诶它这还提示这个不行啊,这呢是我们具体的一个module,然后我们看一下这个结构啊,这是九啊,这个呢是不是八的这个是吧,这个我们现在是不是得至少得是个九啊,哎这样子,然后做一个OK,然后这个时候的话呢,你在S2C下点右键,哎去new啊这不就可以创建了啊就刚才呢,我们用的这个版本不对,然后这呢也提供一个,那这两个里边怎么写呢?首先呢,在我们这个JAVA9TEST,你想把这个person呢给它暴露出去,哎暴露出去呢,在这里边你就写的叫export export什么呢,我们com.at硅谷点bin是吧,就这样写个B了,这是这个目录包呢,就暴露出去了,Export出去了,这个呢叫呃对外暴露,然后这块呢,你得表明你是不是要引进来啊,诶我们这就写叫request啊,要求谁呢,Request,嗯呢,我们导进来就JAVA9呗。
08:03
直接这样写。来导入它这样一个结构啊呃,目前写完以后JAVA9TEST module is not dependency。那我们在这呢,你先这样,我们看到out enter一下,哎,这个at depend,其实我们刚才这边已经写了啊,这个艾特它。这样洗了,然后这块你再看这个没事了,有是吧,就需要呢,我们去导入一下,在我们这个module里边,哎,你需要在这里边呢,去request,哎,导入我们这样的另外一个模块,然后呢,导入这个模块以后,这个模块呢,它对外暴露什么了,哎,是在这里边体现的啊,那我们在这个module这里边就可以用这个person了,那这个person呢,目前就是我们这呢,只显示这个包啊,但是这个包呢来自于哪,你就去看我们这里边就可以了,行,然后回过来我们看一下这个行不行啊,P点去s outt一下。执行一下。
09:05
呃,这里边呢,提到这个叫g unit啊,这提到另外一个问题了,这是有它了,是诶g unit这蹦到我这个里边了啊,因为呢,咱们现在呢,使用的是这种导入的方式,这个时候的这个指用力的话呢,要想用也出现同样的问题,原来咱们直接呢,就这样al enter导了一下是吧,现在的话呢,你也得需要呢,在我们这个model iner里边呢,你可以写一个啊叫requires,叫g unit。得这么着了,这个写完以后,哎,这个代码呢,他才不会报错了。啊,这也得是个导入了啊,行,这个重新再来测。哎,这呢就出来了,诶此时呢,相当于我们就能够调用另外一个包下这个功能啊,你要能暴露我这呢就能掉体会一下呢,就是这种模块化的这样一个特点啊,这个只unit的话呢,这是我们相当于原来你可以直接用的,现在的话呢,呃,你要想用的话,虽然说呢,呃你导到我们这个library这个下边了,但是要想用也必须呢,得在我们这块呢,相当于一个注册一样,诶它才可以去使用啊,诶这呢就是我们说的,这算是模块化这样的一个特点,这是我们这个新的一个特性啊。
我来说两句