您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    我们应该采用 Java 12 还是坚持运用 Java 11?(2)
    时间:2018-11-05 08:55 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    假设采用了 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,但希望他们是经过思索判别之后做出的决议。除了文章中提到的成绩,还会有很多其他在晋级前需求思索的要素,欢迎在评论中留下你的看法。

    编译自https://blog.joda.org/2018/10/adopt-java-12-or-stick-on-11.html

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

    【编辑引荐】

    开发者必备:2018安卓SDK工具引荐

    微软Visual Studio发布重磅特性:实时同步编程、共同调试

    用户阅读器假设禁用 JavaScript,谷歌将不再允许其登录

    从初级顺序员到编程大牛,只需求看10月的这十篇抢手文章

    微软能够是全球最大的开源贡献者, 但开发者似乎并不买账

    (责任编辑:admin)