热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java12马上要发布了,程序员集体大喊:我可以坚持使用java8吗?

坐上长征三号也拼不过Java的升级速率,许多程序员们高喊,我可不可以坚持运用Java8?!可是对于已

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

java12马上要发布了,程序员集体大喊:我可以坚持使用java8吗?

相距 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高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

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

Java 公布计划

如今每六个月就会公布1个新的 Java 版本,因此虽然 Java 11 才公布没多久,但距离 Java 12 的公布也就剩余不到二个月的时间。作为公布计划的部分,某个版本会被指定为长久支持版本(LTS),它们会得到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 高级员工一再认为像 8u20 和 8u40 这样的更新经常会产生毁灭性的变更,但本文作者表示这不是自身的经历,他记得的唯一有毁灭性的变化是为 Javadoc 添加了 --allow-script-in-comments,但它也不是 Java 的关键部分。因而,他从来不担忧升级到最新版本带来的反应 —— 是因为它是 Java 平台的关键优势。

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

java12马上要发布了,程序员集体大喊:我可以坚持使用java8吗?

java12马上要发布了,程序员集体大喊:我可以坚持使用java8吗?

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

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

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

Oracle 的见解是,由于各个版本仅在前1个版本公布后的 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 之前务必考虑到的某些常见问题/风险。

被新版本系列“绑定”

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

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

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

版本升级的“绊脚石”

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

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

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

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

框架结构:也是另一种依赖,可是1个大而关键的依赖。在一个月的狭窄时间窗口内,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 上运行,但将来3年呢?

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

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

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 及更高版本我们会尽最大的努力。”

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

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

总结

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • JVM钩子函数的应用场景详解
    本文详细介绍了JVM钩子函数的多种应用场景,包括正常关闭、异常关闭和强制关闭。通过具体示例和代码演示,帮助读者更好地理解和应用这一机制。适合对Java编程和JVM有一定基础的开发者阅读。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
碎蜂CYM夜一
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有