Java 11 的发布带来了重要的功能,例如 ZGC 和 HTTP Client,您应该考虑升级吗?
Java11最新版本带来了ZGC、HTTP Client等重要功能,包括总共 17 个 JEP(JDK 增强提案)。
除了这些重要的特性之外,Java 11还有哪些值得关注的点呢? Java现在更新得这么频繁。您应该考虑升级吗?工程师必须不断学习,他们能学习吗?让我们来看看!
JDK 11在不知不觉中发布了。从9开始,JDK就进入了阻碍人们学习的更新节奏。对于广大爪哇工程师来说,真是又爱又恨。 Java 的快速发展意味着它仍然能够继续做到这一点。维持公司的核心技术平台地位,保证了我们在Java方面的投资和工作岗位的安全,但同时也带来了学习和选择方面的困惑。
所以今天我们不做简短的介绍。我们来看看工程师乃至IT决策者最关心的问题:
- JDK更新这么频繁,我是否应该考虑升级?新的发布模式下企业IT策略需要做出哪些调整?
- JDK 11(或最新的 JDK 版本)除了很酷之外,还有哪些实际上值得在生产环境中使用的功能?工程师会效仿吗?
对于第一个问题,我非常有信心JDK 11将是一个公司不能忽视的版本。
首先,从时间上看,JDK 11的发布正好在JDK 8的免费更新到期之前。同时,JDK 9和10也相继成为“历史版本” ”,请参阅下面的 Oracle JDK 支持路线图: JDK 更新重要吗?非常重要,过去几年Oracle和OpenJDK社区提供了几乎免费的午餐,导致人们忽略了其背后的巨大工作和价值,包括但不限于: “简单就是便宜”?虽然 Java 的进步“很容易”获得,但不要忽视它的价值,这要归功于制造商和 OpenJDK。社区默默的幕后努力。 其次,JDK 11是长期支持版本(LTS,Long-Term-Support) 对于企业来说,选择11意味着长期、可靠、可预测的技术路线图。有人说这是针对付费订阅客户的。不订阅的话就不考虑11了吗? 不,请放心,11一定会得到OpenJDK社区的长期支持。目前 Oracle 提供 OpenJDK 构建。虽然后续计划尚未确定,但承诺“至少持续到明年”。即使后续的 JDK11 更新停止,像 Andrew Haley 这样的社区专家也明确承诺建立并领导“JDK-11 更新”项目并确保: “请让我向您保证一件事:或者无论如何,JDK LTS 都会发布将继续得到支持。我们都在 Java 上投入了大量资金,我们不会放弃它。” 因此 LTS 版本将是企业 IT 决策者版本的安全选择。 回到第二个问题:让我们看看 JDK 11 功能上的突破,这些突破可能会让我们觉得升级到 JDK 11 是值得的。 从 JVM GC 的角度来看,JDK 11 引入了两种新的 GC,其中包括可以说具有开创性的 ZGC。虽然这仍然是一个实验性功能,但就功能而言,这对于 OpenJDK 来说是一个巨大的突破。特定生产环境的苛刻需求提供了可能的替代方案。例如,对于一些企业核电站、存储等产品,如果能保证GC停顿时间不超过10ms,可靠性就会上升一个很大的台阶。这是我们过去通过GC调优很难做到的。问题是这是否可能。相信看完下面的信息你已经不再陌生了。 关于ZGC特性的解读已经有很多了,本文不再赘述。这里我主要介绍一下那些不起眼但更具有生产系统价值的部分。例如,对于G1 GC,通过升级到JDK 11,您可以比JDK 8免费享受它:并行Full GC、快速CardTable扫描、自适应利用率调整(IHOP)、并发标记阶段的类型卸载等。对G1的持续改进,包括串行Full GC等缺点甚至受到广泛诟病。你会发现 GC 配置和调优在 JDK11 中变得越来越有用。 云计算时代的监控、诊断和分析能力这是我个人认为比ZGC对制造实践更有意义的功能。 不知道大家有没有发现,Java应用场景在不知不觉中发生了翻天覆地的变化。从在一台机器上长时间运行的Java应用程序,发展到分布式、大型单一应用程序或小型功能和即时应用程序。无论是长时间运行等,应用场景都非常复杂。 我们还使用哪些其他工具来诊断 Java 应用程序? JConsole、JProfiler 还是各种“自研”工具?当前大多数工具都是基于单个 Java 应用程序的诊断视角。想象一下,我们的集群中有成百上千台机器或者容器,每台机器上有几个或者几十个Java进程,那么: JDK 11悄然给了我们更强大的核心能力,主要有两部分: JEP 328:Flight Recorder(JFR) 是Oracle刚刚开源的一个强大功能。我们知道,生产系统中有多种从不同角度进行性能分析的工具和框架,但大多数在容量、可靠性、成本等方面都不尽如人意。要么能力不全面,要么成本太高,要么甚至不可靠也会导致Java应用程序进程崩溃。机器。 JFR 是集成到 JDK 和 JVM 中的一组事件机制。通过精心设计和工程化的框架、硬件层面的极致优化以及生产环境中的广泛验证,可以实现极致的可靠性和低开销。在SPECjbb2015等基准测试中,JFR的最大性能开销不超过1%。因此,工程师可以将其用于大规模的分布式生产系统,基本没有心理负担。这意味着我们可以随时积极参与 JFR 进行特定诊断。 ,也可以让系统长时间运行JFR,以便在复杂环境下进行后续分析。您还需要担心重现随机问题吗? JFR 大大简化了问题。 在保证低开销的基础上,JFR的能力也让人印象深刻,比如: 所有这些都内置于 JDK 和 JVM 中,不需要额外的依赖项,并且可以开箱即用。 另一方面,还有同样不起眼的JEP 331:低开销堆分析。我们知道,有效了解 Java 堆上正在运行哪些对象分配是诊断内存问题的基本原则之一。 JEP 331来自Google等行业领先厂商的一线实践。通过获取对象分配的调用点,弥补了JDK在对象分配诊断方面的一些缺陷。工程师可以利用这种能力通过 JVMTI 改进自己的工具。 从Java类库开发的角度来看,JDK 11最大的进步也在于两个方面: 第一,它是现代少有的HTTP/2 Client API。 Java 工程师终于可以摆脱旧的HttpURLConnection了。新的HTTP API支持HTTP/2等领先标准,精简易用的API接口,性能与常规开源API(如Apache HttpClient、Jetty、OkHttp等)同等甚至更高。 。同时也是JDK在Reactive-Stream中的首次生产实践,大量使用Java Flow API等,最终让Java标准HTTP类库在扩展方面满足现代互联网的需求能力等方面。 第二是安全库和标准的大规模升级,特别是JEP 332:传输层安全(TLS)1.3。除了其重要的安全价值外,它还由中国安全专家范学雷领导。 JDK项目与之前的修修补补完全背道而驰,是一个规模非常大的项目。 另外,JDK还在逐步减员,或者说还清了JVM和Java规范等历史债务,比如 其中最值得关注的是JEP 335,它进一步明确了Graal很可能成为JVM向前演进的核心选择,Java-on-Java逐步一步成为现实。 JDK 11 你有什么遗憾吗?像Valhalla、Loom和Panama这样的项目中仍在解决的许多缺点,例如协程、值类型等,仍然遥不可及。也许令人高兴的是,我们可以看到 Java 正在接受它自己的缺点。 ,持续快速发展。 从1995年第一个版本发布到现在,Java语言已经走过了23年的风风雨雨。过去23年来,Java连续多年位居榜首,而近两年Java也出现了不可忽视的下滑。 Java 是最好的语言吗?不,每个领域都有更适合的编程语言,并不存在全能的存在。 Java语言有什么优势占据排行榜第一名? 首先,语法比较简单,学过计算机编程的开发者可以很快上手。 JVM 还可以保护开发人员免受许多复杂细节的影响。其次,他们能力优秀,在服务器端编程、高性能网络程序、企业软件事务处理、大数据、分布式计算、移动及嵌入式终端应用开发等各个领域都非常有竞争力。重点是它吸收了领先的工程实践,从嵌入式设备到超大规模软件系统的构建能力都得到了实践的充分验证。这一切使得Java成为商业软件公司的首选,也是众多互联网公司的最爱。时代变了,Java 已经而且必须改变。 转为半年发布一次后,Java 在合并关键功能和快速获取开发人员反馈方面继续表现得更好。我们可以清楚地看到不同厂商和社区对Java的投资增加。虽然JDK 11的最新版本不能说是突破性的进步,但它应该是JDK开发进程中的一个重要版本。升级 JDK 可以带来多项性能改进、广泛的进步以及核心功能的突破,所有这些都表明是时候开始评估和规划升级到 JDK 11 了。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。