编译自
原文作者 Stephen
Colebourne 是一名
Java 开发者,同时也是一位知名的 Java 博主和会议演讲者。

图片 1

坐上长征三号也拼不过Java的升级速率,许多程序员们高喊,我可不可以坚持运用
Java 8?!可是对于已使用到 LTS 版本的 Java 11
开发人员,是不是还有必要往上强制升级?小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243
这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

距离 Java 11 的正式发布已过去一个多月,而 Java 12
也正在赶来的路上。根据此前开源中国发起的一项关于开发者使用的 Java
版本的调查,Java 8
仍然是开发者的主流选择,而 Java 11 是 Java 8 之后的首个 LTS
版本,所以有不少开发者表示会选择升级至 Java 11。按照 Java
的发布计划,Java 12 将于明年 3 月推出。那么问题来了,我们是应该采用 Java
12,还是坚持使用 Java 11 呢?

距离 Java 11 的正式发布已过去四个多月,而 Java 12
也正在赶来的路上。根据此前的一项关于开发者使用的 Java
版本的调查显示,Java 8 仍然是开发者的主流选择,而 Java 11 是 Java 8
之后的首个 LTS 版本,所以有不少开发者表示会选择升级至 Java 11。按照 Java
的发布计划,Java 12 将于明年 3 月推出,那么问题来了,我们是应该采用 Java
12,还是坚持使用 Java 11 呢?

可能你会觉得这是一个无关紧要的问题,但对于那些需要在 JVM 中使用 Java
的开发者,或是比较看重 Java
新特性的开发者,这是一项十分重要的决策。这篇文章将和大家就这个问题进行相关的分析。

可能你会觉得这是一个无关紧要的问题,但对于那些需要在 JVM 中使用 Java
的开发者,或是比较看重 Java
新特性的开发者,这是一项十分重要的决策。这篇文章将和大家就这个问题进行相关的分析。

图片 2

Java 发布计划

现在每六个月就会发布一个新的 Java 版本,所以尽管 Java 11
才发布不久,但距离 Java 12
的发布也就剩下不到五个月的时间。作为发布计划的一部分,某些版本会被指定为长期支持版本(LTS),它们会获得四年或更长时间的技术支持和安全补丁更新。所以这些版本通常会被称为“主要版本”
—— 不是因为它们拥有更多的功能特性,而是因为它们具有长期的技术支持。

预计 Java 11 的更新补丁(11.0.1, 11.0.2, 11.0.3 等)将比 Java 8
的补丁(8u20, 8u40, 8u60)更小更简单。因为 Java 11
的更新将更加集中在安全补丁上,不会像 Java 8
的更新那样带来内部的功能增强。Oracle 希望将 Java 12, 13, 14
等这些版本当做是小更新版本,类比成 Java 8 的话,即是 Java 11u20, 11u40。

Oracle 高级员工一再认为像 8u20 和 8u40
这样的更新常常会带来破坏性的变更,但本文作者表示这不是自己的经历,他记得的唯一有破坏性的变化是为 Javadoc
添加了 --allow-script-in-comments,但它也不是
Java 的核心部分。因此,他从不担心升级到最新版本带来的影响 —— 因为这是
Java 平台的核心优势。

下面深入了解一下为什么在旧的发布模式下,升级版本不会导致任何问题。先看一下新旧发布模式之间的差异:

模式

旧的发布模式

新的发布模式

升级系列

Java 主要版本

Java 更新版本

Java 版本系列

Java 补丁版本

频率

每隔3年左右

每6个月一次

每6个月一次

每3个月一次

版本

6 -> 7 -> 8

8 -> 8u20 -> 8u40

11 -> 12 -> 13

11 -> 11.0.1 -> 11.0.2

语言变化

JVM 变化

主要的功能增强

添加的 classes/methods

移除的 classes/methods

新的弃用

内部功能增强

JDK 工具变更

Bug 修复

Security 补丁

Oracle
的官方观点认为:与
Java 7->8->9 相比,Java 9->10->11
的升级和 8->8u20->8u40 更相似。

表格清楚地显示新模式下的 Java 版本发布都会包含许多变更,包括语言变更和
JVM 变更,这两者都会对
IDE、字节码库和框架产生重大影响。此外,不仅会新增其他 API,还会有 API
被删除(这在 Java 8 之前没有发生过)。

Oracle
的观点是,因为每个版本仅在前一个版本发布后的6个月推出,所以不会有太多新的“东西”,因此升级并不困难。虽然如此,但这不是重点。重要的是升级是否有可能会破坏代码。很明显,从
11 -> 12 -> 13 开始,代码遭受破坏的可能性要大于 8 -> 8u20 ->
8u40。

11 -> 12 -> 13 与 8u20 -> 8u40
等这样的更新主要区别在于对字节码版本的更改以及对规范的更改,对字节码版本的更改往往特别具有破坏性,大多数框架都大量使用与每个字节码版本密切相关的
ASM 或 ByteBuddy 等库。而 8u20 -> 8u40 仍然使用相同的 Java SE
规范,具有所有相同的类和方法,不同于从 Java 12 移动到 13。

除此之外,Oracle
的另一个声明也十分值得我们关注。声明透露出的消息是,如果坚持使用 Java 11
并计划在下一个 LTS 版本(即 Java
17)发布时再进行升级,开发者可能会发现自己的项目代码无法通过编译。所以请记住,Java
新的开发规则现在声明可以在一个版本中弃用某个 API
方法,并在下一个版本中删除它。

Java 发布计划

相距 Java 11 的宣布公布已过去了一个半月,而 Java 12
也已经来到的道上。按照先前开源中国参与的某项有关开发人员运用的 Java
版本的调研提示,Java 8 依然是开发人员的主流选用,而 Java 11 是 Java 8
之后的首例 LTS 版本,因此有许多开发人员表示会选择升到至 Java 11。依照
Java 的公布方案,Java 12 将于2019年 3
月推出,那么问题来了,我们是应当选用 Java 12,还是坚持运用 Java 11 呢?

采用新版本 Java 的注意事项

在本节中,将概述在采用新版本 Java 之前必须考虑的一些注意事项/风险。

被新版本系列“绑定”

如果采用了 Java 12 并使用新的语言特性或新的
API,这意味着实际上你已将项目绑定到 Java 的新版本系列。接下来你必须采用
Java 13, 14, 15, 16 和
17,并且必须在下一个版本发布后的一个月内采用每个新版本

使用了新版本,每个版本的使用寿命为六个月,并且在发布后仅七个月就过时了。这是因为每个版本只有在六个月内提供安全补丁,发布后1个月的第一个补丁和发布后4个月的第二个补丁。7个月后,下一组安全补丁会发布,但旧版本不能获取更新。

因此,你要判断自身的开发流程是否允许升级 Java
版本,时间窗口方面会不会太狭窄?

升级的“绊脚石”

实际使用中有很多阻止我们升级 Java 的因素,下面列出一些常见的:

  • 开发资源不足:你的团队可能会非常忙碌或规模太小,你能保证两年后从
    Java 15 升级到 16 的开发时间吗?

  • 构建工具和 IDE:你使用的 IDE 是否会在发布当天支持每个新版本?Maven?
    Gradle
    呢? 如果不是,你有后备计划吗?请记住,你只有1个月的时间来完成升级、测试并将其发布到生产环境中。此外还包括
    Checkstyle,JaCoCo,PMD,SpotBugs 等等其他工具。

  • 依赖关系:你的依赖关系是否都准备好用于每个新版本?请记住,它不仅仅是直接依赖项,而是技术堆栈中的所有内容。字节码操作库尤其受到影响,例如
    ByteBuddy 和 ASM。

  • 框架:这是另一种依赖,但是一个大而重要的依赖。在一个月的狭窄时间窗口内,Spring
    会每六个月发布一个新版本吗? Jakarta EE(以前的 Java
    EE)会吗?如果它们不这样做会怎么样?

云 / 托管 / 部署

你是否可以控制代码在生产环境中的运行位置和方式?例如,如果你在 AWS
Lambda 中运行代码,则无法控制。AWS Lambda 没有采用 Java
9或10,甚至没有采用 Java 11。所以除非 AWS 提供公共保证以支持每个新的
Java 版本,否则根本无法采用 Java 12。

如何托管你的 CI 系统?Jenkins, Travis, Circle, Shippable, GitLab
会快速更新吗?如果不是,你会怎么做?

对未来的预测

如果已经阅读了上面的列表,并且你的代码和流程可以应对。这十分好,但更重要的是要明白,你也在限制未来进行改变的能力。例如,你的代码可能今天不在
AWS Lambda 上运行,但未来三年呢?

为采用新版本进行规划

如果正在考虑采用新版本的
Java,建议你准备一份现在所依赖的所有内容的清单,或者可能在未来3年内会依赖的。你需要保证该列表中的所有内容都能正常工作,并与新版本一起升级,或者如果该依赖项不再更新,请制定好计划。作者提供了他的清单:

  • Amazon AWS

  • Eclipse

  • IntelliJ

  • Travis CI

  • Shippable CI

  • Maven

  • Maven plugins (compile, jar, source, javadoc, etc)

  • Checkstyle, 以及相关的 IDE 插件和 maven 插件

  • JaCoCo, 以及相关的 IDE 插件和 maven 插件

  • PMD 和相关的 maven 插件

  • SpotBugs 和相关的 maven 插件

  • OSGi bundle metadata tool

  • Bytecode 工具(Byte buddy / ASM etc)

  • 超过 100 个 jar 包依赖项

说了这么多,作者当然不是鼓励大家不进行升级,新语言特性带来的好处以及性能增强会让开发者受益,但升级背后的风险也应该考虑进去。

其他第三方产商的声明

Spring
框架已经在视频中表达了对
Java 12 的策略。关键部分是:

“Java 8 和 11 作为 LTS
版本会持续获得我们的正式支持,对于过渡版本,我们也会尽最大努力支持。如果你升级到
Java
11,我们非常愿意和你合作,但它们不会获得正式的生产环境支持。因为长期支持版本才是我们关注的重心,对于
Java 12 及更高版本我们会尽最大的努力。”

作为典型软件供应商的一个例子,Liferay 声明如下:

Liferay 已决定不会对 JDK 的每个主要版本进行认证。我们将选择遵循 Oracle
的主导并仅认证标记为 LTS 的版本。——
Liferay博客

现在每六个月就会发布一个新的 Java 版本,所以尽管 Java 11
才发布不久,但距离 Java 12
的发布也就剩下不到五个月的时间。作为发布计划的一部分,某些版本会被指定为长期支持版本,它们会获得四年或更长时间的技术支持和安全补丁。所以这些版本通常会被称为“主要版本”
—— 不是因为它们拥有更多的功能特性,而是因为它们具有长期的技术支持。

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243
这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

总结

相信肯定已经有开发团队采用了新版本的
Java,但希望他们是经过思考判断之后做出的决定。除了文章中提到的问题,还会有很多其他在升级前需要思考的因素,欢迎在评论中留下你的看法。

(文/开源中国)    

预计 Java 11 的更新补丁(11.0.1, 11.0.2, 11.0.3 等)将比 Java 8
的补丁(8u20, 8u40, 8u60)更小更简单。因为 Java 11
的更新将更加集中在安全补丁上,不会像 Java 8
的更新那样带来内部的功能增强。因为 Oracle 希望将 Java 12, 13, 14
等这些版本当做是小更新版本,类比成 Java 8 的话,即是 Java 11u20, 11u40。

或者你会感觉那是1个无关紧要的问题,但针对那些必须在 JVM 中运用 Java
的开发者,或是较为注重 Java
新特性的开发人员,它是一项非常关键的决策。这篇文章将和大家就这些问题开展有关的剖析。

Oracle 高级员工一再认为像 8u20 和 8u40
这样的更新常常会带来破坏性的变更,但本文作者表示这不是自己的经历,他记得的唯一有破坏性的变化是为
Javadoc 添加了 –allow-script-in-comments,但它也不是 Java
的核心部分。因此,他从不担心升级到最新版本带来的影响 —— 因为这是 Java
平台的核心优势。

Java 公布计划

下面深入了解一下为什么在旧的发布模式下,升级版本不会导致任何问题。先看一下新旧发布模式之间的差异:

如今每六个月就会公布1个新的 Java 版本,因此虽然 Java 11
才公布没多久,但距离 Java 12
的公布也就剩余不到二个月的时间。作为公布计划的部分,某个版本会被指定为长久支持版本,它们会得到4年或更长期的技术支持和安全补丁。因此那些版本一般会被称之为“关键版本”
—— 并不是由于它们有着更多的功能特点,只是由于它们具备长久的技术支持。

图片 3图片 4

预估 Java 11 的升级补丁(11.0.1, 11.0.2, 11.0.3 等)将比 Java 8
的补丁(8u20, 8u40, 8u60)更小更简易。由于 Java 11
的升级将更为集中在安全补丁上,不会像 Java 8
的更新那般产生内部的功能加强。因为 Oracle 期待将 Java 12, 13, 14
等那些版本作为是小更新版本,类比成 Java 8 的话,即是 Java 11u20, 11u40。

Oracle 的官方观点认为:与 Java 7->8->9 相比,Java
9->10->11的升级和 8->8u20->8u40 更相似。

Oracle 高级员工一再认为像 8u20 和 8u40
这样的更新经常会产生毁灭性的变更,但本文作者表示这不是自身的经历,他记得的唯一有毁灭性的变化是为
Javadoc 添加了 –allow-script-in-comments,但它也不是 Java
的关键部分。因而,他从来不担忧升级到最新版本带来的反应 —— 是因为它是
Java 平台的关键优势。

表格清楚地显示新模式下的 Java 版本发布都会包含许多变更,包括语言变更和
JVM 变更,这两者都会对
IDE、字节码库和框架产生重大影响。此外,不仅会新增其他 API,还会有 API
被删除(这在 Java 8 之前没有发生过)。

下边深层次认识一下为啥旧的公布模式下,升级版本不会造成一切问题。先看下新老公布方式两者之间的差别:

Oracle 的观点是,因为每个版本仅在前一个版本发布后的 6
个月推出,所以不会有太多新的“东西”,因此升级并不困难。虽然如此,但这不是重点。重要的是升级是否有可能会破坏代码。很明显,从
11 -> 12 -> 13 开始,代码遭受破坏的可能性要大于 8 -> 8u20 ->
8u40。

11 -> 12 -> 13 与 8u20 -> 8u40
等这样的更新主要区别在于对字节码版本的更改以及对规范的更改,对字节码版本的更改往往特别具有破坏性,大多数框架都大量使用与每个字节码版本密切相关的
ASM 或 ByteBuddy 等库。而 8u20 -> 8u40 仍然使用相同的 Java SE
规范,具有所有相同的类和方法,不同于从 Java 12 移动到 13。

图片 5

除此之外,Oracle
的另一个声明也十分值得我们关注。声明透露出的消息是,如果坚持使用 Java 11
并计划在下一个 LTS 版本(即 Java
17)发布时再进行升级,开发者可能会发现自己的项目代码无法通过编译。所以请记住,Java
新的开发规则现在声明可以在一个版本中弃用某个 API
方法,并在下一个版本中删除它。

采用新版本 Java 的注意事项

图片 6

在本节中,将概述在采用新版本 Java 之前必须考虑的一些注意事项/风险。

Oracle 的官方观点觉得:与 Java 7->8->9 相比,Java
9->10->11的升级和 8->8u20->8u40 更相似。

被新版本系列“绑定”

报表清晰地显示新策略下的 Java 版本公布都是包括很多变动,包含语言变动和
JVM 变动,这二者都是对
IDE、字节码库和架构造成重大反应。除此之外,不但会增加别的 API,还会有
API 被删掉(这在 Java 8 以前都没有产生过)。

如果采用了 Java 12 并使用新的语言特性或新的
API,这意味着实际上你已将项目绑定到 Java 的新版本系列。接下来你必须采用
Java 13, 14, 15, 16 和
17,并且必须在下一个版本发布后的一个月内采用每个新版本

小编分类整理了许多java进阶学习材料和面试题,需要资料的请转发此文章后再私聊小编回复就能领取2019java进阶学习资料和面试题。

使用了新版本,每个版本的使用寿命为六个月,并且在发布后仅七个月就过时了。这是因为每个版本只有在六个月内提供安全补丁,发布后1个月的第一个补丁和发布后4个月的第二个补丁。7个月后,下一组安全补丁会发布,但旧版本不能获取更新。

Oracle 的见解是,由于各个版本仅在前1个版本公布后的 6
个月发布,因此不易有很多新的“事物”,因而升級不太困难。尽管这般,但这并不是关键。关键的是升级能否有将会会损坏源代码。很显著,从
11 -> 12 -> 13 开始,代码遭到损坏的可能性要大于 8 -> 8u20 ->
8u40。

因此,你要判断自身的开发流程是否允许升级 Java
版本,时间窗口方面会不会太狭窄?

11 -> 12 -> 13 与 8u20 -> 8u40
等那样的更新关键差别取决于对字节码版本的变更及其对标准的变更,对字节码版本的更改往往非常具备冲击性,大部分框架结构都大批量应用与每个字节码版本息息相关的
ASM 或 ByteBuddy 等库。而 8u20 -> 8u40 依然应用同样的 Java SE
规范,具备全部一样的类和方法,有别于从 Java 12 移动到 13。

升级的“绊脚石”

此外,Oracle
的另外申明也非常值得我们关注。申明表露出的信息是,假如坚持应用 Java 11
并计划在下一个 LTS 版本(即 Java
17)发布时再开展在线升级,开发人员将会会认识自己的项目代码没法按照编译。因此请记住,Java
新的开发标准现在声明还可以在一个版本中弃用某个 API
方法,并在下一个版本中删掉它。

实际使用中有很多阻止我们升级 Java 的因素,下面列出一些常见的:

采用新版本 Java 的常见问题

开发资源不足:你的团队可能会非常忙碌或规模太小,你能保证两年后从
Java 15 升级到 16 的开发时间吗?

在本节中,将简述在采用新版本 Java 之前务必考虑到的某些常见问题/风险。

构建工具和 IDE:你使用的 IDE 是否会在发布当天支持每个新版本?Maven?
Gradle 呢?
如果不是,你有后备计划吗?请记住,你只有1个月的时间来完成升级、测试并将其发布到生产环境中。此外还包括
Checkstyle,JaCoCo,PMD,SpotBugs 等等其他工具。

被新版本系列“绑定”

依赖关系:你的依赖关系是否都准备好用于每个新版本?请记住,它不仅仅是直接依赖项,而是技术堆栈中的所有内容。字节码操作库尤其受到影响,例如
ByteBuddy 和 ASM。

如果采用了 Java 12 并使用新的语言特性或新的
API,这意味着实际上你已将项目绑定到 Java 的新版本系列。接下来你必须采用
Java 13, 14, 15, 16 和
17,并且必须在下一个版本公布后的半个月内选用每个最新版本。

框架:这是另一种依赖,但是一个大而重要的依赖。在一个月的狭窄时间窗口内,Spring
会每六个月发布一个新版本吗? Jakarta EE(以前的 Java
EE)会吗?如果它们不这样做会怎么样?

运用了新版本,各个版本的使用期为六个月,而且在发布后仅七个月就淘汰了。这由于各个版本只有在六个月内提供安全补丁,发布后1个月的第一个补丁和发布后4个月的下一个补丁。7个月后,下一组安全补丁会发布,但旧版本不能取得更新。

云 / 托管 / 部署

因而,你可以判定本身的开发步骤是不是准许升级 Java
版本,时间窗口方面能不能太狭窄?

你是否可以控制代码在生产环境中的运行位置和方式?例如,如果你在 AWS
Lambda 中运行代码,则无法控制。AWS Lambda 没有采用 Java
9或10,甚至没有采用 Java 11。所以除非 AWS 提供公共保证以支持每个新的
Java 版本,否则根本无法采用 Java 12。

版本升级的“绊脚石”

如何托管你的 CI 系统?Jenkins, Travis, Circle, Shippable, GitLab
会快速更新吗?如果不是,你会怎么做?

实际上应用中有许多阻拦我们升级 Java 的要素,下边列举某些普遍的:

对未来的预测

开发资源不够:你的团队将会会十分繁忙或规模很小,你会确保两年后从 Java 15
升级到 16 的开发时间吗?

如果已经阅读了上面的列表,并且你的代码和流程可以应对。这十分好,但更重要的是要明白,你也在限制未来进行改变的能力。例如,你的代码可能今天不在
AWS Lambda 上运行,但未来三年呢?

搭建工具和 IDE:你应用的 IDE 是不是会在公布当天适用各个最新版本?Maven?
Gradle 呢?
要不是,你有储备计划方案吗?请知道,你只有一个月的时间来进行升级、检测并将其公布到生产环境中。除此之外还包含
Checkstyle,JaCoCo,PMD,SpotBugs 这些别的工具。

为采用新版本进行规划

依赖关系:你的依赖关系是不是都提前准备好用以各个最新版本?请记牢,它不仅是直接依赖项,往往技术堆栈中的全部内容。字节数码操作流程库特别是在遭受影响,比如
ByteBuddy 和 ASM。

如果正在考虑采用新版本的
Java,建议你准备一份现在所依赖的所有内容的清单,或者可能在未来3年内会依赖的。你需要保证该列表中的所有内容都能正常工作,并与新版本一起升级,或者如果该依赖项不再更新,请制定好计划清单:

框架结构:也是另一种依赖,可是1个大而关键的依赖。在一个月的狭窄时间窗口内,Spring
会每六个月公布一个新版本吗? Jakarta EE(以前的 Java
EE)会吗?如果它们不这样做会如何?

Amazon AWS

云 / 托管 / 部署

Eclipse

你是不是还可以控制代码在生产环境中的运作具体位置和方法?比如,当你在 AWS
Lambda 中运行代码,则控制不了。AWS Lambda 没有选用 Java
9或10,乃至没有选用 Java 11。因此除非 AWS 保证公共保证以适用各个新的
Java 版本,不然没办法选用 Java 12。

IntelliJ

如何托管你的 CI 系统?Jenkins, Travis, Circle, Shippable, GitLab
会迅速更新吗?要不是,你会怎么做?

Travis CI

对将来的分折

Shippable CI

如果已经阅读了上边的目录,而且你的代码和步骤还可以面对。这非常好,但更关键的是要懂得,你也在限制将来开展改变的能力。比如,你的代码可能今天不在
AWS Lambda 上运行,但将来3年呢?

Maven

为选用最新版本开展整体规划

Maven plugins (compile, jar, source, javadoc, etc)

假如已经考虑到选用最新版本的
Java,提议你提前准备一份如今所依赖的全部具体内容的清单,或是将会在将来三年内会依靠的。你必须确保该目录中的全部具体内容都能一切正常工作,并与最新版本一块儿升级,可能假如该依赖项已不自动更新,请制订好计划方案。作者提供了他的清单:

Checkstyle, 以及相关的 IDE 插件和 maven 插件

Amazon AWS

JaCoCo, 以及相关的 IDE 插件和 maven 插件

Eclipse

PMD 和相关的 maven 插件

IntelliJ

SpotBugs 和相关的 maven 插件

Travis CI

OSGi bundle metadata tool

Shippable CI

Bytecode 工具(Byte buddy / ASM etc)

Maven

超过 100 个 jar 包依赖项

Maven plugins (compile, jar, source, javadoc, etc)

说了这么多,作者当然不是鼓励大家不进行升级,新语言特性带来的好处以及性能增强会让开发者受益,但升级背后的风险也应该考虑进去。

Checkstyle, 以及相关的 IDE 插件和 maven 插件

其他第三方产商的声明

JaCoCo, 以及相关的 IDE 插件和 maven 插件

Spring 框架已经在视频中表达了对 Java 12 的策略。关键部分是:

PMD 和相关的 maven 插件

“Java 8 和 11 作为 LTS
版本会持续获得我们的正式支持,对于过渡版本,我们也会尽最大努力支持。如果你升级到
Java
11,我们非常愿意和你合作,但它们不会获得正式的生产环境支持。因为长期支持版本才是我们关注的重心,对于
Java 12 及更高版本我们会尽最大的努力。”

SpotBugs 和相关的 maven 插件

总结

OSGi bundle metadata tool

相信肯定已经有开发团队采用了新版本的
Java,但希望他们是经过思考判断之后做出的决定。除了文章中提到的问题,还会有很多其他在升级前需要思考的因素,欢迎在评论中留下你的看法。

Bytecode 工具(Byte buddy / ASM etc)

这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。

超过 100 个 jar 包依赖项

加QQ群:611481448

讲过那么多,作者当然并不是激励大家不进行版本升级,新语言特点产生的益处以及特性提高会让开发人员获益,但升级后面的风险也应当考虑到进来。

别的第三方平台生产商的发表声明

Spring 框架结构早已在视频中表述了对 Java 12 的战略。重要部分是:

“Java 8 和 11 作为 LTS
版本会不断得到我们的正式支持,针对衔接版本,我们也会尽最大努力支持。当你升级到
Java
11,我们十分愿意找你协作,但它们不会得到正式的生产环境适用。由于长久支持版本才是我们关心的重心点,针对
Java 12 及更高版本我们会尽最大的努力。”

做为典型性软件供应商的1个事例,Liferay 发表声明如下:

Liferay 已决定不会对 JDK 的各个关键版本开展认证。我们将选取遵照 Oracle
的主导并仅认证标注为 LTS 的版本。—— Liferay 博客

总结

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243
这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

相信毫无疑问早已有开发团队选用了新版本的
Java,但期望他们是经由思索分辨以后作出的决策。除开文章中提及的难题,还会有许多别的在升级前须要思索的要素,欢迎在评论中留下你的看法。