00:00
大家好,我是尚屋的讲师孙文康,哎,大家呢也可以称呼我为呢康师傅,哎前几天啊,Oracle在官网发布了JPK14啊如期发布,哎,我呢把这里边这个新特性啊都看了看,一共呢是有16个大的变化。嗯嗯,那么接下来呢,给大家录了这套视频,呃,然后呢,大家一起来学习,方便呢,咱们商务的这个骨粉,或者是呃,广大的对Java的新特性呢,比较关注的同学呢,这个及时的了解我们诗词当中的新特性。我在这个十字的这个新的性前面加了个词,叫做超实用的。哎,不知道大家呢,有没有关注过,就是扎巴之后的这些新特性。啊,为什么我们提到JAVA8呢?因为JAVA8是咱们现在在企业当中,这个大家用的版本最多的一个这个JDK的版本。扎八之后呢,有90,十一十二十三对吧,那么从九开始,每隔半年Oracle就要更新一个版本,那那就意味着每个版本的新特性啊,其实都比较有限。不知道大家呢,提前有没有关注过啊,如果没有关注过,你想学习的话呢,大家可以到商务的官网,或者呢是鼓励学院,或者呢是哔哩哔哩等第三方平台呢,你可以去搜索这个咱们商务的这个视频,那那么之前这个每个版本的新特性呢,这块我都录过,诶都讲过。
01:16
哎,那么在看到JAVA14的新特性的时候呢,我就特别想加个词,这个词呢就叫做超实用。如果说大家呢,在JAVA8之后到13新特性呢,你没有关注过,那么我建议你呢,先不要着急看,建议你先来看一看我们这一套JAVA14的新特性叫超实用,其中有一些新特性呢,在之前的版本当中,比如说十二十三当中是作为实验性的这个内容引进来的,那么在JAVA14当中做了一个扩展,做一个确定,同时的话呢,在垃圾回收器方面,比如说并行的垃圾回收器啊,Powerline g Co,还有呢,叫zero g Co的g Co是吧,他们之间的一个搭配使用被废弃了。啊,然后以及呢,CMS被删除了,那像这样的内容啊,我们也需要去关注,因为呢,在gbm面试当中是经常经常会被问到这个垃圾回收器的,那如果说你比较清晰的知道新的版本当中的一些垃圾回收器的变化,那在面试当中呢,肯定是要加分的,而且呢,其实这些变化,如果大家你关注这些的一个发展历程的话呢,其实这些变化呢,也基本上是我们能够确定下来,它肯定是要变的,就是你不会觉得很突然,怎么会要把它删掉,不会是这样子的。
02:24
啊,因为你肯定很清楚它的这个JC的一个发展历程嘛,对吧?哎,包括呢,我们说的新的这个叫JJC啊,就是在我们今天的个课程当中啊,也要给大家讲解到,所以这个超实用的话呢,应该从两个角度来说,第一个角度的话,就是我们API层面,语法层面呢,确实呢,有一些新的东西进来了,比如说呢,我这里提到了叫instant so。还有比如说呢,我们如何在程序当中更快的去排控制帧的异常啊,比如说这个record这个结构的一个引入,去替代我们定义特殊的这个数据类,对吧,包括Switch表达式,这个在十二十三当中也提到过,在我们这个14当中啊,做了一些确定,那还有呢,叫做textbo,叫文本框,在14当中啊又做了一个功能的拓展,哎,我这里列出来这五个呢,只是在代码层面呢,可能咱们直接能看到效果的,在这个有一些呢,看不到效果的,比如这个JC方面的一些变化啊,这个呢,我们也会讲到这两块都是我们超实用的体现。
03:19
啊,建议大家呢,要学一学,尤其呢是咱们对这个新特性比较关注啊,尤其呢是这个想了解一下这个Java是吧,未来的一些走向的,那么当你把几个新特性的版本一个一个的走一走的时候呢,其实这个脉络啊非常清晰啊,是这样子的。咱们这条视频呢,从这样几个角度我给大家讲解啊,第一个就是新特性的一个概述,从整体上我们来看一看这些新特性,那第二个呢,就是叫环境安装啊,你如果想演示这些代码的话呢,那肯定是要安装环境了,对吧?哎,不管是要听一听了,这里边很自然的就涉及到JDK14的安装,以及呢,基于JDK14能够适配的最新的,哎,这个这个集成开发环境,这呢,我们以IDEA2020的一这个版本呢为例给大家呢做讲解,OK,那实用的新特性,这也是咱们这个课程的一个中心内容,那下边的话呢,还涉及到其他的一些特性,那么对于其他的特性呢,大家了解一下就行,没必要呢去关注,对吧,每一个JDK的版本呢,都有一些细一个比较细小的一些特性,这个呢你你看一下就行,重要的一些特性呢,就那么几个。
04:21
哎,做个重点关注,最后的话呢,我们回顾一下过去,展望一下未来看一下啊,这个以前的JAVA8 java11,我们如何看待这两个长期的LTS版本,那么未来的话呢,JDK14之后呢,我们还有15,十六十七,那17的话呢。这个大家应该算过是吧,11咱们说是一个LTS,这个LTS呢,大家应该都清楚吧。叫做长期支持的版本,对吧,就是奥委会官网呢,会这个长期的进行一个维护,那非LTS的话呢,就是六个月更新这个,这个就要被替换掉了,那11呢,是我们这个算是目前为止最近的一个LTS了,那么未来三年三年的话呢,正好六个版本,就是这个时期的时候呢,是一个新的LTS的版本。
05:06
啊,那大家呢,可能有的同学会想说,我就装个11,大不了我就以后装17,或者呢,我就关注一下十一十七的新特性,中间的这个从12呢,一直到16这个新特性我都不关注行不行,其实也可以对吧?嗯,但是的话呢,这个17的话呢,它的新特性也不是很突兀的就加进来的,它一定是前面这样一些版本的一些迭代,那么在14这个版本当中,我们就看到了其中有一些新得性啊,是肯定未来要加进来的了。啊,因为我对这块比较了解嘛,所以大家呢,把这个课听一听,没有问题的啊,这个物有所值是吧,这个前面的话呢,这个11呃,十二十三包括十你没看就没看了,没关系啊。好,那么在讲解我们具体的一个新特性之前啊,咱们先给大家一个方法论。啊,一个方法论就是未来的课程,你可能不一定是听我来讲这个新特性了,你也会如何呢?呃,去学习一个新特性的版本,从哪一个角度呢去看对吧?诶也就是说呢,我们,呃从哪几个角度。
06:06
哎角度去学习,哎这个新特性。诶,这应该是哪几个角度是吧。这呢,就属于方法论的这个层面了。OK,那那我们应该怎么去看待这个问题呢?或者大家呢,之前你们学习这个心得兴的时候,你都是怎么来学习的呢?我这呢,捋潮了,捋出来了三条主线,第一条主线呢,诶我称为呢,叫做语法层面的变化,诶称为这个语法层面。嗯嗯,我们知道Java语言,咱们说从九五年吧,呃,算是开发出来一直到现在呢,都有25年的这个时间了,嗯,这个以前呢,我们说出来的时候呢,说Java是一门纯粹的面向对象的语言啊,这好那好对吧,那么已经25年了,时间也不短了,那后续呢,也推出来了一些,当然了也有一些是比这个Java还要早的,比如说像Python语言对吧,像Python呀,Skyla呀,包括呢,像安卓开发的coline啊等等,包括go语言呀,我们会发现呢,这些语言当中有一些非常轻巧的一些语法结构,诶Java呢,也需要呢向他们进行学习,所以呢,我们会看到啊,这个Java呢,在不同的这个小版本当中,都会在这个语法层面呢做一些迭代,做一些变化。
07:24
啊,我们给大家举例子啊,比如说大家呢,现在对这个拉姆达表达式,就是JAVA8中这个心得性呢,应该都有所了解,对吧,那么拉姆达表达式呢,就属于语法层面的变化。很显然了,对吧,还有呢什么,比如说我们提到这个叫诶Switch,哎,这个Switch的话呢,我们在JAVA12 java13当中提到过它的叫Switch表达式,那么JAVA14呢,把它就确定下来了,这个Switch表达式还比如说呢,我们在这个往前推一推,像这个JDK5当中,是我们Java历史当中这个第一个啊里程碑是这个版本提到了叫自动的装箱,诶这个我用逗号吧,哎,自动装箱,自动拆箱。
08:05
还有呢,我们说这个叫使用,嗯innu这个关键字呢,来定一个枚举类对吧?还比如什么呢,我们提到了这个叫哎叫泛型,哎泛型的话呢,我们用一对这个监括号,这个监括号呢,我们也称为呢,叫做诶钻石操作符,诶这个是英文格式下的对吧?这呢也属于这个语法层面的变化,还有什么呢?比如说这个接口中的叫默认方法,这个静态方法,还有呢,诶Java这是在JAVA8当中规定的,JAVA9当中又提到结口中的叫哎私有方法,这呢都属于这个叫语法层面的变化。语法层面的变化呢,是需要大家进行关注的,就是因为语法变了嘛,哎,你需要呢,真正的自己去写一写,去练一练,哎去体验体验,然后去记一记,这就叫语法层面的变化,那除此之外呢,我们还涉及到呢,叫A层面的变化,API层面我们知道呢,Java在每一个JDK版本当中,通常都会加一些A减一些API,这个所谓的减呢,其实是分成两个层面的意思,第一个呢叫哎depreated就属于呢叫废弃,诶这个不能叫废,叫这个过时是吧。
09:14
过时的话呢,大家应该都清楚,就是我们在使用的时候呢,他会给我们拿一条线,不建议我们使用,就相当于我们类似于这个PPT里边这样一个标识一样,但是还可以用,这叫过时,还有一个呢,叫做废弃,废弃呢在以前我们GD版本当中是不会出现的,就是顶多呢就过时就完了,不愿意用,当然呢,我们这个新的这个GD版本呢,我们说每半年呢就更新一个版本,那有可能在前一个版本当中新加了一些API,下个版本中直接我们就废弃了。就是呃,都不等你过时了,直接就废掉。这个会有这样的一些影片了,那更多呢,咱们需要关注呢,就是新增加的一些影片。对吧,也就是说在API层面呢,也会有一些变化,那么典型的变化呢,比如说还是我们JAVA8当中提到了叫词政API,真的都属于这个一大块的API了,还有呢,我们叫新的日期时间的一,还有呢,比如我们提到过这个叫这个类呢,是在八当中引进来的,用于解决这个控制帧的异常。
10:13
嗯,那么后续呢,在这个九十十一当中也会有一些更新,对它中的一些方法呢,进行了一个升级啊,再比如说提到我们说这个叫string结构。哎,同学,String有啥可说的啊,String的话呢,就有一个大的变化,嗯,在正儿八经之前呢,我们说string底层咱叫字符串嘛,就是字符构成的一个串。那它底层呢,很显然,我们说就用一个叉形数组对吧,哎,这呢,每个位置呢,就是个串嘛,哎,就是个叉嘛。就是大家夏天这块吃羊肉串一样,每一块呢就个羊肉啊,滋布串,每一个呢就是个叉,我们说很好理解,底层呢就是差形数组。但是呢,我们说在这个JAVA9当中啊,底层呢,就从差异数组改成了叫bad数组,或者准确的说呢,叫bad数组还不行,应该是叫bad数组加上这个字符集。
11:00
哎,为什么这样子呢?咱也知道啊,这个一个A,呃,在内存中呢,是一个字符,一个字符呢,我们要用两个字节去存的话呢,那咱们明明知道在文件存储当中,一个A呢,它叫97,其实呢,一个字节就能存的下,我们没必要在内存中是不是用两个字节去存啊,所以这块的话,我们就考虑到咱底层呢,就用bad数组了,那对于像这个汉字,比如中国的中,那么照样呢,还是用这个两个字节来存储这样一个字符,所以呢,是BAT数组加上一个字符集。这呢是一个很大的变化,大家在面试的时候呢,其实是可以提到这样一个点的,没有问题对吧,还比如说呢,我们在这个呃,十一十二当中,或者这个13当中,对这个string底层一些方法呢,进行了一些升级,还扩充的一些方法,大家呢,都可以来看一看这个底层啊,你就知道了。这是一个啊呃,另外的话呢,还有比如说这个在集合框架这个,由于呢,我们说接口中可以去定义这个叫默认方法和静态方法,咱们呢,会看到在集合这块collection里边呢,它就会增加所谓的静态方法,哎所谓的默认方法包括呢,我们说的那个比较器啊,Compor是吧等等,哎,这个也是同样的道理,这呢都属于叫API层面的变化,我们关注的可能更多的是它增加了哪些API,增加了哪些具体的方法,对吧?是这样子的啊,那那么对于API层面这个变化呢,其实我个人觉得呢,相较语法呢,也要稍微简单一些,因为你知道呢,Java的整个这个套路是什么,就知道我们做新的这个事呢,我们可以有新的方法,新的API可以去实现。
12:29
嗯,也稍微的练一练就可以,那新的语法呢,是真的得写一写,你得记一记对吧?啊,因为它这个格式呢就变了,这呢是我们说的这个第二个层面,前两个层面呢,对于咱们平时开发来讲,影响还是比较大的。影响是比较大的,那么第三个层面呢,是对咱们这个面试的时候呢,影响会比较大的,这就涉及到呢,叫做底层优化,正常来说呢,我们写的是上层的这个程序,底层这块优化了。你要说我low一点,我就我就不管了,你该优化优化这个我运行比原来快了,快了就快了,好像说呢,对我们影响其实不大,对吧?但其实呢,在面试当中,或者说我们如果想对知识上了解的更深的话呢,你需要去关注一下JDK每个版本的更新当中,他比较关注的是哪些层面的一些优化,其实这里边我们所谓的优化啊,大家应该都比较清楚,咱们Java程序呢,这个要想去执行,在它编译成最起码文件以后呢,后续的工作是不是全部都交给交给这个GM了,对吧?那么其实我们这里边所谓的底层优化呢,就是GM的一个优化,那GM当中呢,我们涉及到呢,就在内存中去分配数据啊,内存分配数据的话呢,这里边又涉及到过,比如说在JAVA8中,我们提到过这个圆空间。
13:40
它这个出现去替代咱们原有的这个叫,呃,叫这个永久带对吧?包括呢,像这个RI原来呢,在JDK7当中,咱们都存在这个叫Z串常量池里边走串常量池呢,放在应用带,那么在扎VA7,呃,刚才说的是之前是吧,那扎VA7的时候呢,就放到我们这个堆空间当中了啊,那么这个JAVA8的时候呢,把这个应用带呢干掉了,换成这个原空间了,那么为什么要换这呢?都是属于我们底层的一些优化对吧?底层一些优化这呢是涉及到这个存储数据这个层面的啊,那么我们数据存完以后呢,是不是还要运行完以后要进行垃圾回收吧,那其实我们基本上会看到在每一个。
14:19
JDK版本的更新当中都会涉及到这个JC的一些变化叭,如说这个JC一些垃圾回收器的一些这个废弃,一些过时啊,一些组合的一些删除等等,那么今天呢,咱们讲这个JAVA14的新得性,大家就会看到这里边一些变化,对于面试来讲还是比较重要的啊,这比较重要的一些点啊,这个一个呢是JC的一个删除,那同时的话呢,也会增加一些新的JC,我们可以看看都有哪些JC。目前呢,咱们知道在这个开发当中,咱们GM底层默认的都是g first,就是G垃圾回收器,对吧,那么未来的话呢,还会有新的垃圾回收器,典型的里边提到叫ZJC。在我们这个14的新德型当中也会提到这呢是一个JC的变化,那么JC变化呢,自然而然的,这个JC的我们要想进行调约的话呢,它的这个参数是不是也会做一些变化呀,你看你要是去掉了一些这个垃圾回收器的话呢,相应一些参数呢,我们就删掉了啊,新增加的我们或者说新增加的它还处于一个实验阶段,我们需要呢,使用哪些参数这个去使用这个新的这个垃圾回收器,对吧?这都是这个参数的一些变化。
15:24
OK,还有什么呢?比如说我们这个GS的这个叫执行引擎,当然这个呢,大家了解一下就行啊,比如这个JD6当中,我们用的是叫reno,在JK8当中又引入的这叫呃。那么那号呢,在后续的版本中还更新过啊,更新了两个版本以后呢,又被干掉了啊这个等等这呢,都属于我们偏底层的一些变化,那么底层这块呢,大家,呃,这个功利一点讲,你可以考虑一下在面试当中怎么去打这些问题,主要呢关注的就是GM的一些变化。啊,这样的变化,当然了,你也可以出于爱好呢,我们去看一下底层呢,它大体的方向是在哪里,为什么要做变化,那么如果大家把几个版本呢,这个捋一下的话呢,你会发现呢,其实这个脉络啊是非常清晰的,也就是说呢,大家今天学习的JAVA10字的新性,其实后续的一些版本呢,这个变化迭代,哎,大家呢,基本上也大概心里有数。
16:16
啊,OK,是这样子的,那如果说后续的还去更新,在今年的九月份呢,就推出JK15了,大家呢,就可以通过这样几个角度去学习JAVA15的这个新特性,哎,主要重心呢,关注的其实是前两个,那第三个的话呢,你可以把JC再合起来。就可以了啊行这呢,我们是先做一个概述。
我来说两句