热门标签 | 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,但期望他们是经由思索分辨以后作出的决策。除开文章中提及的难题,还会有许多别的在升级前须要思索的要素,欢迎在评论中留下你的看法。


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


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Spring Batch中多线程配置及实现例子
    本文介绍了在Spring Batch中开启多线程的配置方法,包括设置线程数目和使用线程池。通过一个示例演示了如何实现多线程从数据库读取数据并输出。同时提到了在多线程情况下需要考虑Reader的线程安全问题,并提供了解决方法。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • JVM:33 如何查看JVM的Full GC日志
    1.示例代码packagecom.webcode;publicclassDemo4{publicstaticvoidmain(String[]args){byte[]arr ... [详细]
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社区 版权所有