Java 25 岁了,想必比在座的各位还大?(你发任你发,我用 Java 8)

我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。java

Java 都已经 25 岁了,想必比在座的不少同窗年龄还大吧。git

你发任你发,我用 Java 8

在 JDK 版本的世界里,历来都是 Oracle 发他的新版本,咱们继续用咱们的老版本。4 年以前用 JDK 7,后来终于升级到了 JDK 8。自从升级了没多久,JDK 就开始了半年发一个新版本的节奏,陆续发布了 9 、十、十一、十二、13,别着急,还有 14,直到前几天(2020年5月28日) 日,连 JDK 15 的抢先试验版都出来了,不由要说,Java 你真行。程序员

2020年2月,由 Snyk 和 The Java Magazine 联合推出发布的 2020 JVM 生态调查报告 显示有 34% 的用户使用 Oracle JDK,57% 的用户使用 OpenJDK。其中 Java 8 的使用者依然维持在 64% 过半数的水平。github

要知道 2018年,有 70% 的用户使用 Oracle JDK,21% 的用户使用 OpenJDK。其中 Java 8 的使用者占到了 79%。web

这都两年过去了,可见 Oracle 的收费政策吓走了很多开发者,转而投向 OpenJDK 的怀抱。而 Java 8 的使用者减小了 15 % ,也不算不少,这 15% 应该是开始使用 JDK 9 或 JDK 11 去了。但 Java 8 依然过半啊,因此说,如今用 Java 8 也不用慌,毕竟大多数人和我同样也都还在用 Java 8,真香。编程

不瞒你说,还有人在用 Java 1.七、1.6 甚至1.5

都已经 JDK 15 了,为何还有这么多公司使用旧版本。后端

好比我吧,我只是本身私下里研究一下 Java 11 新特性,公司仍是用 Java 8。安全

不瞒各位说,用 Java 8 已经算是很是优秀,很是有上进心的了,有的公司还在使用 7,更有甚者还在用 6,你说是否是很 6。不是道听途说,我认识的人里面就有用 JDK 1.6 的,感受不是在同一个世界。编辑器

之因此会出现这种情况,是由于升级版本耗时费力,最重要的是有可能影响服务的稳定性,虽说 Java 是向后兼容的,可是谁知道是否是有坑在里面。在没有重大安全漏洞或重大性能提高的状况下,大多数公司仍是以稳定性为主,既然 Java 8 已经能知足业务需求了,那就用它好了。函数式编程

为何抱着 Java 8 不放

如今又增长了缘由,就是从去年 1 月份开始对 Oracle JDK 的商业用途收费了,用着 Oracle JDK 的厂子更有理由不升级了,为了节约成本啊,对不对。

收费是近两年对 Oracle JDK 的一大改变,还有一个就是发版方式的改变。

收费

从去年1月份开始,Oracle JDK 开始对 Java SE 8 以后的版本开始进行商用收费,确切的说是 8u201/202 以后的版本。若是你用 Java 开发的功能若是是用做商业用途的,若是还不想花钱购买的话,能无偿使用的最新版本是 8u201/202。固然若是是我的客户端或者我的开发者能够免费试用 Oracle JDK 全部的版本。

发版方式

在 JDK 9 发布以前,Oracle 的发版策略是以特性驱动的,只有重大的特性改变才会发布大版本,好比 JDK 7 到 JDK 8,中间会发多个更新版本。而从 JDK 9 开始变为以时间驱动的方式。发布周期为6个月一个大版本,好比 JDK 9 到 JDK 10,3个月一次补丁版,3年一个 LTS(长期支持版本)。

发版时间稳定了,使用者就能够相应的根据发版节奏调整所使用的 Java 版本了。可是付费使用好像又增长了成本,一直无偿使用的东西,忽然收费了,好像有点接受不了,尤为对于小公司而言。

上面所说的都是 Oracle JDK 。那么若是既想要更新版本又不想花钱怎么办呢,固然也是有办法的。能够选择 Open JDK。

Open JDK 是彻底开源免费的,由 Oracle 以及 Redhat 等开源组织维护。Oracle JDK 只是一个 Open JDK 的发行版。他们两个的关系就好像是原生安卓系统和各个手机厂商定制的操做系统的关系。Oracle JDK 就对应原生安卓系统,好比小米的 MI UI 就对应 Oracle JDK。另外,除了 Oracle JDK,还有其余的 Open JDK 的发行版,好比 AWS 的 Amazon Corretto,阿里巴巴的 Alibaba Dragonwell 等等。

红帽将接替 Oracle 维护 JDK 的长期支持版,好比 OpenJDK 8 和 OpenJDK 11,而且它和 Oracle JDK 的差异已经很是小了,能够放心使用。

然而,对于新版本的新特性,我也只是看一看,学一学,而后专心的用 Java 8 开发。

这就像是一个谜

有些现象就更有意思了,虽然说不少公司都已经在用 JDK 8了,可是呢,不少同窗仍是把它当作 JDK 1.7 来用,为何这么说呢,JDK 8 的新特性,对不起,一个不用。

JDK 8 的新特性有以下几个:

Lambda 表达式 − Lambda 容许把函数做为一个方法的参数(函数做为参数传递到方法中)。

方法引用 − 方法引用提供了很是有用的语法,能够直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可使语言的构造更紧凑简洁,减小冗余代码。

默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。

新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。

Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。

Date Time API − 增强对日期与时间的处理。

Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。

就说 Stream API 吧,这么好用的 API,对集合的过滤、筛选、类型转换简直是友好方便到不行,结果呢,仍是不少同窗压根儿就没用过。

另外,日期的处理,好比 LocalDate、LocalTime 等,也都比以前的 API 好用不少,但是呢,仍是不少同窗不用,宁愿用着以前已经用 @Deprecated 注解为过时的方法。

附上我最多赞的一篇关于 Lambda、函数式接口、Stream API 的文章,这两天在掘金很热的呦!

8000字长文让你完全了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

最后,祝愿

不知道我还要用 Java 多久,也许两年,也许五年,也许十年,也许是一生吧。祝愿 Java 常在常新,帮你涨薪水。


壮士且慢,先给点个赞吧,老是被白嫖,身体吃不消!

我是风筝,公众号「古时的风筝」。一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!你可选择如今就关注我,或者看看历史文章再关注也不迟。

相关文章
相关标签/搜索