JDK11都发布了,你还在用JDK6?

Posted Tomcat那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK11都发布了,你还在用JDK6?相关的知识,希望对你有一定的参考价值。

9月份, Oracle 发布了JDK 11。相比带来的新特性,大家关注更多的反而是「Java不再免费」这个事情。前面转载过一篇杨晓峰老师的文章,详细描述了关于 「免不免费」这件事,不了解的读者可以移步这里


我们都知道,每次 Java 的大版本发布,都会带来许多新的特性,甚至是激动人心的特性。我们来简要回顾一下,这些年来从JDK 1.5 开始,那些影响我们开发的特性。


  • JDK 1.5 

    • 泛型,枚举,自动装箱拆箱

    • 增强for 循环、新的并发库

  • JDK1.6

    • JDBC 4.0

  • JDK 1.7 

    • try with resource

    • 集合增强

  • JDK 1.8

    • 接口的默认方法

    • Lambda

    • 函数式接口

    • stream

  • JDK 1.9

    • Jigsaw 即平台模块化

    • JShell


  • JDK 10

    • 本地变量类型推导

    • G1的并行GC


  • JDK 11

    • ZGC


我们看到,这些新的特性,有语法层面的,也有虚拟机层面的增强。虚拟机的增强,有些是做为默认的配置,在我们安装了新版本之后,就会无形中受益。而由于语法的向下兼容,所以即使我们低版本开发的应用,也可以跑在高版本的虚拟机上,这就导致,虽然我们用着新的虚拟机,却还是按原来的习惯进行开发,正所谓「穿新鞋,走老路」。


但是做为开发者,我们对于新的特性,新的规范等的了解,还是有必要的。至少像语法层面上的增强,学习这些语法方面的新特性,在开发过程中,会节省时间,提升生产力。像容器类增加了 of 这一类的方法,coding的时候都能少写几个字母。 

另外一方面,在看到别人代码的时候,至少也知道这是写的啥。


我自己之前仅知道JDK1.8带来的新特性有哪几个大的方面,Lambda一点也没看过。两年前,我们在做一个新项目的时候,依赖了一个其他团队开发的组件,API、工具、注解等都是基于JDK1.8,组件内大量的 lambda 使用。当时调用时,感觉源码都快看不懂了 :-) 。后来借着机会,了解了 Java 里的函数式开发, lambda 的使用等等。

11月初的时候,去参加 SpringOne 大会,现场的Josh Long 等演讲者现场演示 Spring 的响应式开发, 其中有使用到 Spring 5的 Webflux。 这也算Spring 5大版本的最主要特性,如果不是之前看过几个demo,大概了解过,可能真不知道现场演示的 Flux、Mono 都是在干嘛。


当然这种参加大会,项目使用,阅读源码等,都是一种不错的方式,相当于借着这些契机发现自己不了解的新内容。


虽然这些语法层面的内容增强,看似不去了解暂时也不影响我们的开发。但有的时候,新的语法特性甚至可以说是「翻天覆地」。比如JDK8引入的 Lambda 这方面,『函数式编程思维』一书的开篇,链锯和斧头的说法很是形象。


假设你自己是一名伐木工人,手里有当地最好用的斧子,所以你的工作效率是最高的。有一天,林场里来了一个推销的,他推销一种新的砍树工具-「链锯」,并且把这个工具极力夸赞。并且最终说服你买了一把。

但你不知道该怎么用,所以估摸着按照自己原来擅长的砍树方式,把链锯大力地挥向树干,而不知道发动它。

此时,你得出了「链锯不过是个样子货罢了」的结论,并把它扔到了一边,重新捡起你用习惯的斧子。就在这个时候,有人在你面前,把链锯发动了……


一时不去了解似乎也没什么影响,也许就像上涨的潮水一样,如果我们不去学习,在未来某天潮水顺流下来的时候,我们忽然发现自己没有船。


当然,有些时候,受限于「人力与维护成本」,「项目环境」等因素,有些团队会偏向于使用较旧的开发版本,来保证兼容与稳定;也有一些时候,是因为在等其他人先吃螃蟹,等一些生产环境使用的先行者;也有时候是因为我们开发者自己「」。JDK1.6用的好好的,半点问题没有,没有升级的必要;也有时候是整个工具链必须依赖旧的版本,要升级需要全部升级。比如你项目里用到了lambda,但是 CI的工具还没有升级,不识别这个语法,可能就 build 不成功。


如果各种外在条件都不具备,那就尽量自己本地写写Demo, testcase。混个脸熟。

以上写的这些,主要用来共勉,咱要保持对新事物的热情。在平时的开发之外,看到开发相关的内容,可以「顺手」了解一下,如果有主力语言的新特性,可以尝鲜试试,丰富下生活。让自己跟上「潮流」,做个潮人。





送书时间


上面提到的储多 JDK 版本的新特性中,JDK 8 应该算是一个分水岭,在此之前的内容,没了解可能真没影响多少,但从 JDK 8 的 lambda、stream 加入之后,整个语法层面上都有了不小的变化。


感谢图灵教育的支持,这次送出的书是图灵教育出版的JDK 8学习相关的书『Java 8实战』 ,豆瓣评分9.1。


送书规则

留言内容:可以描述自己的工作生活中如何了解了学习新的知识,拓展自己的视野的。


由于奖品有限,曾经获得过赠书的读者除外,请见谅。



关注『 Tomcat那些事儿  』 ,发现更多精彩文章!了解各种常见问题背后的原理与答案。深入源码,分析细节,内容原创,欢迎关注。

                       转发是最大的支持,谢谢


更多精彩内容:

一台机器上安装多个Tomcat 的原理(回复001)

监控Tomcat中的各种数据 (回复002)

启动Tomcat的安全机制(回复003)

乱码问题的原理及解决方式(回复007)

Tomcat 日志工作原理及配置(回复011)

web.xml 解析实现(回复 012)

线程池的原理( 回复 014)

Tomcat 的集群搭建原理与实现 (回复 015)

类加载器的原理 (回复 016)

类找不到等问题 (回复 017)

代码的热替换实现(回复 018)

Tomcat 进程自动退出问题 (回复 019)

为什么总是返回404? (回复 020)

...

以上是关于JDK11都发布了,你还在用JDK6?的主要内容,如果未能解决你的问题,请参考以下文章

JDK8都10岁了,你还在用for循环遍历list吗?

有多少小伙伴用着JDK8却写着JDK6的代码?早学早享受,晚学被卷走……

Jenkins 也宣布弃用 JDK 8,你还在用JDK8吗

Jenkins 也宣布弃用 JDK 8,你还在用JDK8吗

还在用JDK7,JDK11马上就要发布了,你慌了吗?

JAVA 8 啥时候出