00:00
那接着呢,我们来说呃,JAVA9的下一个特性,呃,我们说Java呢,终于有了re PL工具,叫做g shel命令啊,那如果刚才说这个模块化的话呢,这个褒贬不一啊,有呢说是具有划时代意义,有的说呢是鸡肋啊,有的呢还是看热闹的。啊,那从我个人的角度来讲的话呢,呃,模块化是一个好东西,但是呢,呃,只通过JAVA9这样一个版本的迭代,想把它优化到最优,呃还不行,那需要后续的版本不断的去迭代,才能够体现出来模块化的这个优良特性。啊,这个还需要后续做很多的工作啊,那我们拭目以待,那么下边我们要说的这个新特性呢,叫做re PL工具J是L命令,这个命令的话呢,也是我们Java酒当中最主要的一个特性之一啊呃,这个特性的话呢,应该说大家还都是比较赞同的,那我们来看一看它的一些情况,首先呢,官方的这个特性的说明,这个是222,这个呢,这一批大家呢,可以按照CTRL键点击进来,诶查看一下我们这个特性的一个说明啊这呢我就不看了啊,因为提前我已经把这里边重要内容呢给大家做了一个。
01:07
摘录啊,就看我们后边这个说明就可以了。那像我们这个Python和skyla这个语言啊,这两个语言呢,目前都比较火啊,Skyla的话呢,在我们这个大数据Spark这个体系当中,Spark的源码呢,都是用skyla来写的啊,啊,那开发这个大数据这个项目呢,你也可以就用skyla这个语言啊去做也没问题啊,Python的话呢,是做这个目前比较火的人工智能数据这个抓取啊,数据分析啊这样的一个主体的语言啊,这两个语言目前都比较火,但是这两个语言的话呢,在之前就已经有了我们这个RPL啊,所谓的re PL就是read evaluate print loop,它的首字母就是求值呃,读取。然后求值,这个求值完以后呢,进行一个输出啊,接着再去循环做刚才这样的一个过程啊,我们把它称作叫做交互式的编程环境。啊,简单来讲的话呢,就是我们可以在这个命令行编写相关的Python或者SC这个语句呢进行执行,那Java的话呢,我们知道原来是不可以的。
02:09
什么意思呢?比如说大家呢,啊,我现在呢,想让你去计算一下,说这个或者不计算,让你输出一个吧,什么呢,输出一个这个九九乘法表。啊,结构乘法表,这个一乘一啊二乘一二乘二,一直到这个九这样的,那你要做的事呢,你需要呢,先创建一个文件,Java文件,在Java文件里边声明一个类,然后呢写一个方法,方法里边呢去写我们这些代码。啊,这个过程的话呢,其实是挺繁琐的哈,那如果我们就想执行这样的操作,能不能在这个命令行去做这样的事情呢?哎,现在说呢,可以了,我们就可以用这个这shell命令啊shell的话呢,知道我们在Linux里边呢,叫shell编程,那这呢相当于是Java的一个shell命令,OK,那我们可以呢,打开咱们的啊这个安装的这个目录啊,知道吧。找到了咱们这个JDK9在它的这个,并目下大家呢,去找有我们这个。
03:05
啊,这是。好在这里啊,有我这个命令啊,那又因为呢,咱们已经配了环境变量了,所以呢,这个时候我打开这个命令行窗口。打开以后,这时候呢,大家只需要去输入叫做G会车。稍等片刻我们呢,就能够进入这个gel的一个编程这个环境当中了,好那这呢,我们就来演示一下这个Java,这个jelll,我们都可以做什么样的这个事情,好那我们就进来了啊进来以后的话呢,它这已经提示我说你可以呢输入这个help呢,是显示一些相关的这个帮助文档的说明,那我们就help啊intro回车,好这呢给了我们一段文字啊说呢你可以使用这EL工具呢。嗯,执行Java代码,从而呢,立即获取结果。啊,说的非常明确,我们不需要呢,再像原来一样去创建文件,创建类声明方法做执行。
04:00
啊,这个时候我们可以直接呢,在命令行的方式呢,去做一些相关操作,比如下面提到了这样的一些情况,好,那我们来一个最简单的C点二点。Print。先输出一个hello word。好,这时候我要点回车了啊。是不是真的执行成功了,这在我们GDK9之前的版本当中是不可能见到这样的事情的,那最后这个分号的话呢,呃,其实大家呢,应该是写上的啊,但是如果你要是没写的话呢,它也能够识别出来这是一个小点了啊,除了这个输出之外呢,我们还可以去定义变量,比如说我印的一个I等于一个十。啊,In的J等于20啊,我in的K呢等于I加上接啊,那我们这呢也可以system.out点哎,Print line k。哎,站长就可以执行出来结果。啊,这呢,相当于是咱们这个基本的一个使用了啊输出语句啊,上面也提到了可以有输出语句,然后呢,可以去定义这个变量啊变量的运算,哎都可以,那其实我们还可以呢,来定义方法,比如说啊我现在public。
05:15
嗯,然后呢,Would,我起个方法叫at一个I一个接好,然后呢,大括号回车一下,嗯,我在这里边呢,我就see some.out.print line I加上接。分号,然后呢,再一个大括号收入。啊,这呢,提示我说我定义了一个方法,那然后呢,大家看我int一个M等于I的方法,写一个二十三十。好。嗯,啊,In的M不对了,为什么呢?因为我这个方法没有写这个反馈值哈,应该咱们直接拿来调这个方法了,二十三十好分号这样。哎,大家看这时候我们这个方法呢,相当于就执行成功了。哎,这个很明确啊,我们现在定义方法,然后呢,调用了这个方法,行,那还可以做什么事呢?这个方法我写完以后,我还可以再定义一个方法,跟它同名同参数。
06:11
啊,大家应该很清楚,在我们Java当中呢,同名同参数呢,那我们认为其实就是相同的方法吧,那我们看看能不能允许我这样去定义。比如说public,嗯,我写一个word,我还叫这个A了哈,Int I接是不是就跟我们刚才那个方法的方法名和形态里边都一样好,然后这个时候我在这个里边怎么写呢?我system.out点。Print I加上接我再加上一个十,比如说。回车收出来收起来,那这时候呢,他没有报错啊,而是提示呢,说我修改了之前的这个方法。啊,现在这个方法呢,对之前这个方法是一个覆盖了,那我们来调用一下啊I我写一个十,写一个40好。
07:01
大家想想,这个结果应该是多少?哎,是不是就应该60了,十加上40,再加上我们的十就是60。哎,这就就我们说的这个基本的一个变量的定义,哎,方法的定义和方法的一个覆盖啊,这样的一个情况啊。行,嗯,那除了这个之外的话呢,我们说还能讲些什么呢?哎,我们来看一下这个文档里边啊,提到一个可以导入包的一个情况啊,是这个意思,比如说呢,我们在这个调用过程当中需要用到的一些相关的类,是一些这个不常见的这个包当中的,我们呢,可以做一个import。啊import,比如说张二点优秀包下的所有的结构。啊,这呢,我们就进行了一个导入,那下面的话呢,你就可以去使用YouTube包下相关的一些类或者接口。哎,是这个情况啊,那这里呢,我们需要多说一句,大家看我呢,按住一个斜线,然后呢,我写入叫imports。
08:01
哎,分号一下啊,然后回车。啊,那这时候呢,我就不要加分号了啊,然后回车。哎,大家看到这样的一些import,这是什么意思呢?呃,它其实想说明的一个问题是,我们默认情况下,也就是说呢,大家实际上哈,你不用写这样的一个语句了。啊,你不用写的时候呢,它默认其实已经在这里面了啊,也就是说呢,在我们这个J下呢,大家直接可以使用咱们U下相关的一些类活接口,比如说list,比如说a release啊,都是OK的啊,啊那L包下,Ma包下,Ma包下等等等等这样的一些包属于默认我们就可以使用了。有同学可能看到这里边,诶怎么没有浪包呢,哎,浪包呢,肯定也在啊,哎,这个属于默认的情况下,它这个都懒得写了,就像咱们现在上边用的这个system,那不很显然就是浪包下的,哎,浪包下也可以用。好,这呢是咱们说的这个叫关于导入的这个情况啊,那除此之外还有哪些情况呢?那这呢,咱们可以再说明一个命令,比如我点一下这个斜线,大家呢按tab键。
09:06
啊,这个Q左边这个tab键哈,哎,你相当于是给我们做了一个补全。它能够将所有的斜线后边这些操作呢指令都给我们列举出来。啊,这其实相当于有点什么意思了呢,像咱们这个Linux里边使用这个tab进行补全一样啊,啊比如说你看我这写一个SYS,我点一个tab键。哎,他就知道我要的是system啊,点O忘了后边怎么写了type键啊,点print type见啊做了一个相关的这个补全。啊,输出一个I。哎,上面我们定义过这个变量I啊好,这呢就是相当于一个tab键的一个使用补全代码,然后呢,我们再回到刚才这个斜线这块啊,通过这个斜线呢,我们发现呢,有这样的一些常见的指令,刚才呢,其实咱们已经用过几个,比如说help用过了。比如说这个imports,这个用过了,那还有什么呢?嗯,比如说这里有一个叫list。
10:03
啊,举个例子哈,斜线list回车。哎,大家看这是什么。那这呢,实际上就是我们刚才上面的相关的这些操作输出的语句定义的变量定义的方法。对吧,那这个方法呢,我们看到也是已经覆盖以后的这个方法。那这呢叫做list,列举当前的一些啊,之前我们这个session当中的这些指令的操作啊,还有什么呢?还有一个叫呃,VS叫variables,就是我们在上边这个当前的session当中定义步的一些变量。啊,还有这个叫methods。哎,Method就是我们刚才定义的这些方法。哎,这就我们刚才说的这样一些命令啊,嗯,还比如说的话呢,我们这有一个叫edit,注意看啊,这个叫edit,我点一下斜线edit。啊,我这后边还可以写个A回车。
11:01
诶大家看这时候呢,调用出来一个新的一个编辑框,这个编辑框里边呢,就将我们这个爱的方法呢列举出来了,也就是说呢,大家如果想修改这个爱的方法,比如我们在这儿啊,咱把这个十呢改成100。啊,然后这块有一个叫accept啊,点击一下。那这个时候你再点一下这个是吧,那此时呢,我们再去调用I的方法十二十啊执行,这时候呢,就是我们修改以后的方法了。啊,那也就是说大家其实不用说非得在我们这个里边重新写一个,你可以呢,调我们这edit啊就OK了,那我光写杠edit回车,那就将我们刚才呃,当前这个session当中所有的这个之前写过这个代码呢,就都列举出来了。啊,这是我们说这个叫edit这样的一个命令。啊,ID的这样一个命令行,这呢,我们相当于是做了一个这个哎演示啊,嗯,那还有什么呢,说可以从外部文件去加载这个代码。
12:02
啊,大家看啊,我在咱们当前这个JAVA9这个目录下啊,这是回头要发给大家的这样一个目录啊,我这有一个hello word.java文件。啊,有这个文件,好,我这样做啊。嗯,把这个路径先CTRLCL一下,在我们这里边呢,我需要用一个命令叫做杠open。在这里。好杠open,然后呢,右边我这个时候呢,给它粘贴过来,嗯,它下边的一个文件叫做hello。哎,word.java文件好回撤。诶大家看到呢,我们这个里边这个结构呢,做执行了输出,说马上2018年了,上硅谷呢,祝所有的股粉元旦快乐。那我们将这个文件呢,打开这呢,实际上就是我之前已经写好的相关的这个Excel里边能够识别的这样的一些指令。啊,说白了就是我们可以把这些指令呢,给它持久化保存起来,然后在需要的时候呢,大家直接通过我们这里边儿这个open命令进行一个执行就可以了,啊,这是咱们说的这个事情。
13:10
好,再往下这呢,提到一个叫数减异常。那大家学过这个异常处理的时候呢,关于受检异常叫check exception啊,应该比较了解了,或者呢,你也可以理解为就叫做编译是异常,这想说明什么问题啊,大家注意,比如说咱们先回到这个IDE这个层面。哎,然后呢,我们在这个呃,Module test这个类里边的测试方法当中,我们写这样的一个代码,呃,URL这个呢,是我们在这个网络编程当中,咱们呢用到的这样的一个类啊,呃,使用一个R代表了我们一个网络当中的资源地址啊嗯,然后呢,我们写上HTTP。啊,WWW点艾特硅谷点。在com啊这呢是我们具体的一个啊,网络中中的这个资源地址了,那很显然呢,我们刚才创建的这个对象呢,是有异常的,哎,我们把光标放在这out enter一下,这呢就提示我们的异常,我们选择check catch的方式进行一个处理。
14:11
啊,那也就是说呢,如果我们不处理这个异常B呢,是不通过的。哎,编译是不通过的啊,那我们现在的这个异常的话呢,我们点进去看了一下,它也是一个IE啊,是一个IO的exception啊,IO异常呢,就是我们所谓的叫收检异常啊,或者叫编译式异常啊,是这样个情况,也就要求我们在编译之前必须呢,要对这个异常进行一个处理。行,那同样的这个操作呢,大家来看啊,我们在这个呃J这个命令下,咱们呢,也写刚才相同的这个代码,等于new一个URL啊,然后HTTP这个呢,大家不要丢了,HTTP这是我们的这个协议啊啊艾特硅谷点com。好,分号结束,大家注意了,按说呢,我们这个减这个命令,我们现在要一执行,按说也应该报一个异常了啊,因为的话呢,我们这个。
15:08
这个在编写的时候呢,说一定要处理,否则的话呢,编译不通过,但是此时大家注意我回车。诶,你会发现呢,并没有出现这个异常。哎,并没有出现这个异常啊,那原因在哪呢?就相当于他这儿呢,已经帮我们把这个异常呢,已经做了一个这样的一个处理了。啊,本来呢,强迫我们要补回一个I exception,但却没有出现,因为呢,只是要在后台被我们隐藏了,哎,就是这样个情况啊行,那刚才呢,通过我们这样的一些这个说明,呃,大家呢,应该比较清楚了,我们相关这shell中常见的一些命令的使用。啊,掌握这些呢,应该就差不多了啊,最后呢,我们还可以退出这shell的这个命令啊斜杠,然后呢,你可以点下tab键啊再熟悉一下,其中呢有一个呢叫ex。哎,然后回车,哎,再见。
我来说两句