00:00
那么在清楚了这个Oracle对于JDK的一个发布周期之后呢,我们来谈一谈版本升级的一个破坏性,这个呢是大家一定要警醒的一个问题,下边这个图呢,非常的清晰的说明了这样一点啊,那么Oracle的官方是这样认为的,他说呢,与JAVA7到八到九相比说呢,JAVA9011这个我们知道呢,是以时间为驱动的这样一个版本了啊,那么JAVA9011每六个月更新一次,它的升级呢,说更像是呃八当中的一个小版本的一个迭代。啊8UPDATE20到UPDATE40这样的一个更相似,注意这里边它只是说到更相似,那么如果你看中它所谓的相似,呃,你会这个毫不犹豫的去从九更新到十,从十呢更新到11,包括呢,更新到12,更新到13,其实呢,你会发现他们之间还是很有区别的,现在呢,我们想说明的问题就是说这个更新跟这个更新相比啊,JAVA90 11,包括呢,12 13的更新是极具破坏性的,那么怎么来看呢?大家看这个表。
01:02
这儿呢,就是我们原来说的这个叫旧模型,就是以特性为驱动的,每隔几年会更新一次啊,通常呢是三年左右,那么新模型的话呢,就是我们看到呢,以时间驱动,每隔六个月要更新一次,那每隔三个月呢,再打一次补丁,所以呢,对于一个普通的版本,我们一般会看到这个这个0.10.2,那么后续基本上就没有了,因为呢,下一个版本呢,又会推出了啊是这样一个情况,那刚才呢,奥官网提到说我们这个以时间为驱动的这个版本的会版本呢,说它呢,更像是我们以前的从八呢更新到20啊,再更新到这个40,那其实大家会发现这两者还是有很大区别的,那主要区别呢,当然就集中在我们在这块区域了。这块区域你会发现其中有两个事儿,第一个呢叫做语言的变化,第二呢叫做Java虚拟机的一个更改,这个应该说呢是非常具有影响力的啊呃,这个我们下边呢也有描述。语言的变更和G源变更,这两者呢,都会对IDE和自解码库和框架产生重大的影响啊,语言的变化这个从语法规则上呢,做了一些调整,那么GM的一个更改有可能啊,对应的这个GM的话呢,我们就从啊一个比如houseport,我们切换成其他的这个虚拟机,这是其一,那以及的话呢,这个内部的包括垃圾回收器也可能会做一些大版本的一些优化,那GM那个更改呢,直接会影响到我们对次解码版本的一个更改。
02:30
因为我们知道GVM呢,它呃去解释运行这个编译好以后的自己码文件,我们需要有对应的自己码这个版本自己码库啊,这里边也提到这个ACM和这个BA body是吧?诶BA body呢,也是基于这个ACM呢是这个代码库啊紫金码库。那么如果这个自节码版本在我们切换这个11~12的时候呢,有过变化,GM有过变化,那么这个呢,影响将是非常重大的啊,就是相当于意味着大家在一个原有版本上能跑起来的程序,在新的版本上呢,就跑不起来了啊,就会产生具有破坏性的这个这个这个情况哈,好这呢是我们说的这个问题,呃,那同时的话呢,我们说到在这个新的开发规则当中,我们还有可能会弃用某一个Java的API啊,在这一点上啊,我们发现之前呢,呃,应该是这个事儿啊,之前就没有做过这样的事。
03:27
嗯,大家呢,做Java开发的应该知道,我们会用到一个注解叫deplicate,就是我们标识相应的一些类或者方法,包括构造器呢,它被弃用了,但是我们并不会在新的API当中,把旧的这些被弃用的API呢给它删掉,只会呢标识为一个弃用,那么这个事呢,在我们Java吧,之后呢,就会发生ya IG呢,我们会选择在某一个新的版本当中,把原有弃用的API呢,给它做一个删除啊,那么就会出现这样的问题啊,比如说大家呢,现在正在使用JAVA11,这也算是一个LTS啊,长期制的版本,那在三年以后的话呢,你会切换到,你可能会考虑切换到JAVA17,那切换完以后呢,你会发现有些代码呢就报错了,原因是因为我们在JAVA17当中根本不存在你11当中使用的这API。
04:18
啊,因为呢,我们可能在15当中标记为七用,在呃实三中标记为弃用,在15当中我就把这一篇呢给它删掉了,所以在实际当中,你根本就不会出现实际当中使用的这些API,这个事儿呢,影响其实也是比较大的。啊,这就是我们说的主要的两个点啊,语言变更和GM变更,以及呢相应的一些API的删除,这个呢,呃是极具破坏性的,所以呢,大家在升级版本的时候呢,一定要慎重。啊,一定要慎重。那下边的话呢,我们这个再来谈一谈哈,就是目前企业当中大家使用GDK版本的一个统计,嗯,咱们去年的时候呢,呃,商务也统计过,毕业生在企业当中使用GPK的版本,跟这个数据呢,基本上是一致的,所以我这块呢,就拿了一个开源中国,去年九月份啊,现在呢有所变化,肯定有所变化啊,但是整体上这个数据呢,基本上是这个保持一致的,呃,目前在企业当中大家使用版本最多的呢,应该是JAVA8啊,应该是VA8,那其次呢,像JAVA7JAVA6这个也都使用,基本上在五之前呢,已经很少了,或者说不会出现了,除非呢,你维护的这个项目呢,本身就是一个非常老的项目,所以呢,你才不会切换到新的GDK版本上,那如果是新的项目,或者这个呃,五之后的这些项目,基本上都是在新的这个GDK当中进行开发的啊,那这个。
05:44
因为这块数据当中没有统计11,呃,没有统计12啊,这个今年的这个数据呢,这个在网上找没找到啊,这个可以能够预见到的,就是正儿八呢,它的使用量呢,仍然是排第一的,那其后呢,至于说是JAVA7还是JAVA11呢,就不好说了,或者说呢,随着这个趋势来看呢,JAVA11的使用量呢,会慢慢的提升上来,那它应该会超过JAVA7,因为呢,JAVA8和JAVA11呢,都是LTS,也就是我们到目前为止,Oracle还会不断维护的这样的版本。
06:15
啊,也就是说大家呢,如果现在在公司当中去选择使用JDK的话呢,那建议使用的就是JAVA8和JAVA11,那JAVA12包括我们今天要讲的这个障23这个新态有哪些我们是需要了解的,但是呢,大家要不要用这个你要想清楚啊,那我下边做了一个类比,那障R1呢,属于我们的一个初代版本,具有里程碑式的一个意义啊,就相当于是我们一个呃农民,呃小姐姐是吧,这个没有这个农民的辛苦劳作,我们就不会有今天的那个美好生活啊,更别谈我们去现在去学这个编程语言了,对吧?那么张二八呢,啊,非常漂亮贤惠啊,这个就是我们现在企业当中使用最多的一个版本。那么JAVA11也是之后的另外一个LTS啊,非常的年轻啊,有活力也是可以选择的啊,就是JAVA8和JAVA11这两个呢,大家。
07:09
觉得哪个漂亮呢?其实都挺好是吧,哎,哪个都可以啊,就是JAVA8跟JAVA11都可以选择,那么JAVA12跟JAVA13呢,诶相当于就是这位小姐姐是吧?哎,穿着红色的这个衣服啊,一看就非常的有热情激情,让你有冲动想去更新啊,作为一个开发成员来讲呢,你对新技术呢,始终要怀有一种热情是吧?啊要有这种极客精神,我们想去呃,尝试新鲜的一些特性啊,这个,但是呢,我们要不要说用呢,这个再说,但是你要有这种研究或者这个呃关注的这个精神啊,这也就是我们今天要讲JAVA12和JAVA13的一个意义,而且呢,今天大家学习了JAVA12和JAVA13新特性之后,我们在之后的啊一个新的LTS版本当中,也一定会看到JAVA12和JAVA13的这个这个身影啊,比如说你现在的学习也不是白学,他一定会出现在一些好的东西,会保留在我们后续的这个LTS版本当中的啊呃,那么结论就是说,呃,你是选择JAVA12。
08:11
他和JAVA13这个小姐姐呢,还是选择这个JAVA11跟JAVA8呢,诶看大家的选择啊,不是说不让用,不是说不让选可以选啊行这呢就是我们说明的这样问题。
我来说两句