产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

红帽高级总监谈 OpenJDK 的未来:Java 的未来从未如此光明

  • 2018-12-02
  • 本文字数:2947 字

    阅读完需:约 10 分钟

红帽高级总监谈OpenJDK的未来:Java的未来从未如此光明

随着 Java 11 的发布,Java 最终完成了到 OpenJDK 一等项目的过渡。使用专有 OracleJDK 二进制文件的日子已经结束了。对 Java 开放性和免费的关注自然而然将 Oracle 以外的公司的贡献带入到了聚光灯下。最近,InfoQ 采访了 Red Hat 中间件产品管理高级总监 Rich Sharples,讨论了 OpenJDK 和 Red Hat 的参与情况。


InfoQ:在很早之前,Red Hat 就一直是 OpenJDK 的贡献者。你能谈谈你和这个项目之间的历史渊源吗?


Rich Sharples:Red Hat 于 2007 年 11 月 5 日宣布与 Sun Microsystems 达成广泛的贡献者协议。这项协议包括了 Red Hat 工程师参与 Sun 领导的所有开源项目。同时,Red Hat 签署了 Sun 的 OpenJDK Community TCK 许可协议,成为第一家签署该协议的主要软件供应商。Red Hat 还与 Sun 分享开发人员的贡献,共同创建 OpenJDK 社区以及促进创新。Red Hat 是继 Oracle 之后 OpenJDK 的最大贡献者之一。


Red Hat 通过上述举措深度参与 Java 生态系统,这在 Red Hat 收购 JBoss 之后的时期起到了非常重要的作用。2009 年,Sun 被 Oracle 收购,Sun 和 Red Hat 之间已经建立起来的关系在 Oracle 眼皮底下继续发展。


自 2007 年加入 OpenJDK 项目以来,Red Hat 持续为上游 OpenJDK 社区做出贡献,并将 OpenJDK 打包进了 Red Hat Enterprise Linux 中。Red Hat 曾在 2013 年领导 OpenJDK 6 的开发(支持到 2016 年),并在 2015 年接管了 OpenJDK 7 的管理权。Andrew Haley 在 Red Hat 开发者博客的这篇文章中详细介绍了我们接管的工作。


和 OpenJDK 7 一样,OpenJDK 6 被打包进了 Red Hat Enterprise Linux 5、6 和 7 当中。Red Hat Enterprise Linux 6 和 7 还支持 OpenJDK 8。Red Hat Enterprise Linux 7.6 支持 OpenJDK 11。除了为一系列 Red Hat Enterprise Linux 版本提供支持外,我们还一直为 OpenJDK 发行版提供全生命周期支持。


最近,OpenJDK 7 的生命周期被延长至 2020 年 6 月,OpenJDK 8 被延长至 2023 年 6 月,旨在为用户提供足够的时间将工作负载迁移到 OpenJDK 11。


除了为 Red Hat Enterprise Linux 上的 OpenJDK 提供发行和生命周期支持外,Red Hat 的开源 Java 中间件产品也支持 Red Hat Enterprise Linux 的 OpenJDK,让户能够从单个供应商获得从操作系统到应用程序服务的完整技术栈支持。其他的 Red Hat 产品也运行在 OpenJDK 上。我们是一个为全球依赖开源软件运行应用程序工作负载的客户提供支持的领先厂商。


InfoQ:我们来谈谈目前的状况。目前看来,Red Hat 有多少工程师正在参与 OpenJDK 的工作(全职和兼职)?主要参与哪些方面的工作?


Sharples:出于政策方面的考虑,我们不方便公开 Red Hat 在特定项目上的投入情况。


Red Hat Java 平台团队首席工程师 Andrew Haley 多年来一直是 OpenJDK 管理委员会的成员,同时也是 AArch64 移植项目的负责人。此外,Andrew 还是 JDK 7 项目的负责人,并打算在 Oracle 支持周期结束后申请负责 OpenJDK 8 和 11 的开发。


InfoQ:在具体技术方面,你认为 Red Hat 在哪些领域做出了最大的贡献?哪些技术组件可以体现 Red Hat 的强大领导力?


Sharples:Red Hat 领导了 64 位 ARMv8 的移植,即 OpenJDK 的 AArch64 项目,并将它并入上游的 OpenJDK 项目中。目前,我们正在与 OpenJDK 社区合作开发一个新的超低停顿时间的垃圾回收器,名字叫作 Shenandoah,它处于 OpenJDK 主线之外——但在 Red Hat Enterprise Linux 7 中得到完整的支持。这项工作计划在 OpenJDK 12 中并入主线。


InfoQ:目前,OpenJDK 垃圾回收方面的情况非常有意思。例如,截止 JDK 11,G1 最终成为一个成熟的垃圾回收器。Red Hat 有 Shenandoah,而 Oracle 一直在开发 ZGC。你能评论一下 Red Hat 在 GC 方面的参与情况吗,特别是关于 G1?你如何对比 Shenandoah 和 ZGC?你能否估计一下 Red Hat 认为 Shenandoah 会在什么时候成为一个生产就绪的垃圾回收器?


Sharples:目前,我们主要参与的仍然是 Shenandoah GC。此外,在 Hotspot 的 GC 接口开发方面(尽管对用户不可见)也进行了非常重要的协作,Red Hat 正积极参与其中。


过去,GC 代码与 Hotspot 代码交杂在一起,但现在每个 GC 的代码都很好地分离出来了。Shenandoah 与 G1 共享了一些代码,所以需要做一些改进和 bug 修复。值得注意的是,G1 采用了最初出现在 Shenandoah 中的一些特性,例如多线程 Full GC,以及最近的空闲未提交堆(heap uncommit on idle)。


ZGC 和 Shenandoah 的目标非常相似(减少收集大堆的停顿时间),但它们遵循的是非常不同的实现策略——Shenandoah 使用 Brooks Pointers,而 ZGC 使用彩色指针和多内存映射。


ZGC 在吞吐量和停顿时间方面做得更好,而 Shenandoah 具有更好的人体工程学,这意味着它在一些恶劣的情况下(例如满堆或堆分配激增)会运行得更好。ZGC 不能(按照设计)使用压缩的 oops,这意味着它在中型(<32GB)的堆上有一定的弱势。此外,Shenandoah 在小堆上运行良好,这让它有可能会成为增长型应用程序的理想 GC,但并不保证会这样。


据我们所知,Shenandoah 已经是 JDK-8u 发行版(Red Hat Enterprise Linux >= 7.5)的一部分。我们目前正在努力让 Shenandoah 进入上游(JDK 12)。如果我们做到了,它将成为一个实验性特性。我们现在还不敢说这个实验性标志什么时候将从上游 OpenJDK 发行版中移除。


InfoQ:显然,最近的一个重大新闻是 Red Hat 被 IBM 收购。这将给 Red Hat 与 OpenJDK 之间的关系带来什么样的影响?


Sharples:关于与收购有关的内容请参阅我们发布的新闻和 Jim Whitehurst 的博文。


InfoQ:你认为 OpenJDK(以及 Java/JVM 生态系统)最激动人心的部分是什么?你认为哪些技术是我们的读者在未来 12 到 18 个月内最应该关注的?


Sharples:Java 必须超越当前的位置,也就是作为大规模关键业务应用程序的可扩展语言运行时,并与更轻量、更灵活的语言和运行时展开竞争——特别是在内存占用和延迟非常敏感的云原生环境中。


Java 社区继续在 JVM 层面进行创新。除此之外,Graal 和 Substrate VM 已经认识到,在容器和 DevOps 环境中,JVM 的平均运行寿命要短得多。单体应用程序一次在 JVM 上可以运行数月,而持续交付环境中的容器化微服务可能一次只运行数天或数小时,而在无服务器环境中,它们可能只运行几秒(甚至几毫秒)。


值得注意的是,不仅仅是 JVM 令人感到兴奋,更广泛的 Java 生态系统也正极力追赶。除了优化 JVM 本身以及不断引入像 Thorntail 这样的新的轻量级和灵活的运行时之外,Eclipse MicroProfile 及其规范也有助于将开发传统单体应用程序的 Java EE 开发人员带入轻量级微服务领域。


Red Hat,以及 Fabic8 Maven Plugin 和 Spring Cloud Kubernetes 等工具,一直在引领 Kubernetes、Istio 和 OpenShift 原生 Java 应用程序的开发。这极大简化了微服务架构,而在几年前,它们需要很多单独管理的独立基础设施服务。整个 Java 生态系统在持续快速地向前发展。


我们也在考虑针对专门工作负载(如 AI 和机器学习)的芯片架构(如 ARM 和 GPU)和云架构的新元素,如边缘设备、网关、移动设备和可穿戴设备。


InfoQ:还有其他想对我们读者说的吗?


Sharples:人们对 Java 兴趣程度从未如此强烈,Java 的未来也从未如此光明。


查看英文原文:


https://www.infoq.com/news/2018/11/red-hat-openjdk-gc-Nov18


2018-12-02 12:243561
用户头像

发布了 731 篇内容, 共 449.3 次阅读, 收获喜欢 2002 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

ipfs挖矿市场即将爆发 ipfs挖矿原理是什么?ipfs挖矿值得投资吗?

IPFS挖矿值得投资吗 ipfs挖矿原理是什么

微信朋友圈的高性能复杂度分析

晓波

架构实战营

10. 大数据--人工智能的基石

Databri_AI

人工智能

网络安全学习:内网渗透案例,打破渗透瓶颈

网络安全学海

黑客 网络安全 信息安全 安全漏洞 内网渗透

为什么要招聘有经验的人?

石云升

职场经验 9月日更

Vue进阶(九十一):自定义指令

No Silver Bullet

Vue 9月日更

Python代码阅读(第24篇):根据筛选函数将列表元素分成两组

Felix

Python 编程 Code Programing 阅读代码

模块二作业

potti

架构实战营

Promise.allSettled() 原理解析及使用指南

devpoint

异步 Promise 9月日更

ipfs分布式存储技术的优势在哪里?ipfs即将取代http是真的吗?

区块链 分布式存储 IPFS ipfs到底能否取代http?

fil大涨:fil币价格行情怎样?投资fil靠谱吗?Fil多长时间能回本?

区块链 FIL币价格今日行情 fil挖矿靠谱吗 fil挖矿多久能回本? 投资filecoin

银行对公业务数字化迎来新机遇

CECBC

网络攻防学习笔记 Day126

穿过生命散发芬芳

主机安全 9月日更

【VueRouter 源码学习】第二篇 - 路由的配置和使用

Brave

源码 vue-router 9月日更

关于提升视野的一些想法

姬翔

9月日更

Java + opencv 实现年龄识别

张音乐

Java OpenCV 9月日更 年龄识别

微信朋友圈高性能复杂度分析

缘分呐

微信朋友圈 高性能架构

CPU 功能

Changing Lin

9月日更

微信业务架构分析

黑鹰

微信业务架构

css中background简写顺序,css权重应该怎么计算

你好bk

CSS 大前端

Linux内核时钟机制及调度算法

hanaper

GitHub上霸榜多时的“大哥”!竟是Alibaba内部被疯狂转载的Spring全能指南?

Java 编程 架构 面试 springboot

java疫情上报打卡小程序源码(毕设)

清风

毕业设计

LeetCode刷题35-简单-搜索插入位置

ベ布小禅

9月日更

头一次见,阿里大牛把计算机网络协议讲得这么有趣,已火爆Github

Java~~~

Java 架构 面试 网络协议 计算机

Socket接口固定QPS性能测试实践

FunTester

socket 性能测试 接口测试 测试框架 FunTester

ipfs矿机工作原理是什么?ipfs矿机怎么买?

ipfs矿机怎么买 ipfs矿机工作原理是什么

【Flutter 专题】57 图解页面小跳转 (三)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

量化策略交易平台开发,马丁策略交易系统源码搭建

13530558032

北鲲云超算平台能够为药物研发提供哪些层面的解决方案?

北鲲云

模块七作业

king

红帽高级总监谈OpenJDK的未来:Java的未来从未如此光明_编程语言_Ben Evans_InfoQ精选文章