虽然 OpenJDK 项目推动了 Java 的发展,并且其源代码和发行版通常可以免费使用,但却不提供商业支持。我们来审视一下自我支持(自行构建 OpenJDK 发行版,或是使用免费发行版)的可行性,以及公司可以如何从 OpenJDK 提供商的商业支持中获益,以实现其应用程序的 DevOps 和安全性目标。
紧跟季度更新
OpenJDK 社区通常每季度发布一次更新。这些更新带来了重要的改进,例如,安全补丁、性能更新、错误修复和新功能。如果依赖全天候商业支持,您可以确保所有安全补丁、错误修复和增强功能都是最新的;相对地,如果您正在考虑自我支持,请计算下载 OpenJDK 源代码、自行构建 JDK 并严格地对其进行测试(通过 TCK 测试,评估其针对数千款应用程序是否具有合适的覆盖率)所需的时间和资源。相比之下,这些附带商业支持的 OpenJDK 发行版具有全天候的正式支持渠道,包括电话、电子邮件,或由支持工单 SLA 提供保障的电话。此外,商业支持还会主动向您通报非周期性的错误修复,并对症状问题提供深入的根本原因分析,您仅通过 Oracle Java 错误数据库报告错误将无法获得此类益处,因为 OpenJDK 社区无法就何时解决问题做出保证。
以向后移植安全性修复作为最佳实践
如果您采用自我支持方案,并自行构建 OpenJDK 发行版,就应当向后移植安全性修复,在运行较旧版本的 Java 应用程序时,这一点尤为重要。安全性修复旨在修补软件中的漏洞。通过将新版本(例如 Java 17 或 Java 21)中的安全性修复向后移植到早期版本的 OpenJDK(例如 Java 6、7 或 8),可确保系统有能力应对已知的威胁,保持安全性。如果不向后移植,可能会使系统暴露在这些漏洞中,让攻击者有机可乘。
出于各种原因,如兼容性问题、稳定性或与升级相关的成本考量,您的企业可能需要在旧版 Java 上运行应用程序。Oracle 已停止对 Java 6 和 Java 7 等使用广泛的旧版本提供优先支持,但您可能希望继续使用这些平台。然而,风险问题仍然是需要首先关注的因素。使用提供商业支持的 OpenJDK 版本,您将可以继续运行旧版本的 Java,并且无需在安全性上做出妥协。此外,由于您运行的软件符合企业的数据安全规定,合规部门也将对这一举措感到满意。
如果您正在使用 Oracle 停止支持的 Java 7 或更早版本,将很容易受到严重安全漏洞的影响。
始终如一的安全敏锐度
若想实现始终如一的安全性、坚实稳固的功能、积极主动的防护、保持对旧版系统的支持并节约成本,稳定而安全的 OpenJDK 版本将起到决定性作用。请务必了解一下,商业提供商如何提供向后移植的安全性修复。鉴于任何更改都可能危害应用程序的稳定性,OpenJDK 提供商的商业支持套餐应该会提供两种更新版本:关键补丁更新 (CPU) 和补丁集更新 (PSU)。这样做可以最大限度地确保安全性,同时兼顾在有限的测试范围中进行快速部署的需求。如需更多信息,请阅读我们的《PSU 和 CPU 说明》支持章节。
选择捆绑技术更为明智
商业支持套餐可以在单个捆绑包中提供多项技术,比起分别购买这些技术的支持服务,它在节约成本和优化性能方面更具优势。捆绑在一起的技术通常经过挑选和配置,可与 OpenJDK 出色地配合,进而节省安装、配置和故障排除所需的时间和精力。这种做法可以显著提高效率,并降低出现兼容性问题的风险。
得益于商业支持,您还将定期收到针对这些捆绑技术的更新和补丁,确保您可以从最新的功能、改进和安全性修复中获取益处。当技术作为商业支持套餐的一部分,被捆绑在一起时,支持提供商通常会负责维护这些技术,并提供支持。Oracle 的 JavaFX 就是旧版捆绑包的一个例子,它与 Java 8、9 和 10 捆绑。
然而,JavaFX 目前已被排除在 OpenJDK 主项目外。如果您运行的是 Java 8、9 或 10,可能需要正式的 JavaFX 技术支持。最重要的是,在使用旧版 Java 捆绑包时,如果您遇到问题,只需进行单点连络,这将简化排除和解决故障的过程。
防范开源代码
通过使用开源软件,开发团队提升了生产力和效率。然而,如果您在自己的软件应用程序中使用了包含 GPL(GNU 通用公共许可证)源代码的软件,按照 GPL 的要求,您必须公开合并后的整个代码库,以供审查和复用。因此,若不采取适当的预警措施,可能会引发巨大的知识产权风险。这通常被称为“GPL 污染”。鉴于 OpenJDK 广泛使用 GPLv2 许可证,如何最有效地保护您的 Java 代码免受 GPL 污染?
只有利用明确包含 Classpath Exception 的 API 访问 GPLv2 代码,才能保护应用程序免受额外许可要求和 GPL 污染的影响。然而,验证 Classpath Exception 合规性是一项复杂的任务,并且在每次构建和每次更新中,您都必须重新验证其合规性。OpenJDK 中并非每个文件都包含 Classpath Exception,而一个特定的 Java 版本可能包含数以万计的源文件。需要仔细分析,确保应用程序可以访问的所有 API 都包含 Classpath Exception。OpenJDK 的发行版本经常未在所有 API 中包含 Classpath Exception,让使用该发行版的代码遭受到 GPL 污染。
Azul 会扫描 Azul Platform Core 和 Azul Platform Prime 每个版本中的每个源文件,确保客户代码不受污染,避免开源许可对客户软件施加要求。因此,Azul 的 JDK 是唯一提供完整知识产权保护,保证不受 GPL 污染影响的 OpenJDK 发行版。
若想实现始终如一的安全性、坚实稳固的功能、积极主动的防护、保持对旧版系统的支持并节约成本,稳定而安全的 OpenJDK 版本将起到决定性作用。
内部支持与 Java 商业支持
如果您经过计算,发现采用 Java JDK/JVM 内部支持方案将产生过高的成本和风险,决定探寻 OpenJDK 商业支持方案,请记住,并非所有 OpenJDK 商业支持供应商都能为您提供相同级别的服务和功能。请在招标书中评估支持计划和 SLA 细节,包括是否保证每季度更新,是否提供向后移植的稳定安全版本,是否具有技术捆绑包,以及能否防范开源许可证污染。
Azul 是一家领先的 OpenJDK 提供商,提供 Java 商业支持以及 Azul 迁移研讨会服务,其中包括 ITSM 工具构建的 JDK 清单、迁移路线图和资源步骤。无论您是寻求咨询服务、额外人员配置、项目管理支持还是全面交付,Azul 的 Java 迁移服务都能帮助您填补团队的不足。