概叙
科普文:【支持信创、宣传国产】Tencent Kona JDK11 正式开源_信创jdk版本-CSDN博客
科普文:【支持信创、宣传国产】ARM上最好用的JDK之毕昇JDK_华为毕昇jdk-CSDN博客
科普文:【支持信创、宣传国产】阿里jdk龙井Dragonwell_龙井jdk-CSDN博客
科普文:微服务之容器化【8种JDK性能测试:K8s上应该用哪种JDK?】_eclipse temurin kona bell-CSDN博客
Springboot应用的信创适配-补充_springboot信创替代方案-CSDN博客
前面有整理过三款国产jdk:考拉、龙井、毕昇,这里再来梳理一下和甲骨文版jdk的兼容性。
什么是JCK认证?
Java(TM) Compatibility Kit (JCK)
一个测试包,一组工具,和其它的一些需求,用来检查一个实现是否和Java平台规范和软件参考实现兼容。
JCK (或TCK for Java SE)用于验证一个Java的运行和开发环境是否符合JavaSE标准。
另一方面,JCK包含海量的测试用例,通过了JCK也代表了质量保证,其他组织可以放心地使用通过了JCK测试的Java虚拟机。
关于 JCK(Java Compatibility Kit)认证,它是 Oracle 官方提供的一种兼容性测试套件,用于验证 JDK 实现是否符合 Java SE 官方规范的兼容性要求。通过 JCK 认证意味着该 JDK 版本在功能、API 行为和兼容性方面与 Oracle JDK 保持一致,这对于确保代码的可移植性和兼容性是非常重要的。
JCK认证流程与要求
JCK认证需通过协议签署、测试执行、报告提交三阶段,并需持续维护兼容性。厂商需结合硬件特性优化JDK实现,同时承担法律与成本风险。
一、JCK认证核心流程
-
签署协议与获取授权
- 需与Oracle签署OCA(Oracle Contributor Agreement)协议,明确知识产权归属与认证责任。
- 法律协议约束:签署Oracle的OCA协议,明确知识产权归属及合规责任,可能涉及隐性成本。
- 向Oracle申请获取JCK测试套件(Java Compatibility Kit),该套件包含验证Java SE标准兼容性的测试用例。
-
运行测试与问题修复
- 测试范围:覆盖JVM核心功能(如GC、字节码执行)、API兼容性(如
java.lang
、java.util
)及安全特性(如JCE、TLS)。 - 测试工具:使用JCK提供的自动化测试框架,执行数万条测试用例,记录未通过项(如API行为差异、JVM规范冲突)。
- 问题修复:针对测试失败项,调整JDK实现(如修复内存管理逻辑、优化字节码解释器),确保与Java SE规范一致。
- 测试范围:覆盖JVM核心功能(如GC、字节码执行)、API兼容性(如
-
提交报告与审核
- 将完整的测试结果(包括通过率、修复记录)提交至Oracle审核,审核周期通常为2-4周。
- 通过审核后,获得Oracle颁发的Java SE兼容性认证证书,允许产品标注“Java Compatible”标识。
二、认证后的维护要求
-
持续兼容性保障
- 每个新版本发布前需重新运行JCK测试,确保功能迭代未引入兼容性问题(如新增API未破坏现有规范)。
- 针对Java SE安全更新(如CVE补丁),需同步集成并验证。
-
文档与社区支持
- 公开TCK(Technology Compatibility Kit)测试报告,供开发者验证环境兼容性6。
- 参与OpenJDK社区贡献,提交补丁以保持与上游代码的同步(如修复龙芯架构下的JIT编译器问题)。
三、认证的费用开销
要做JCK认证的,都需要给甲骨文交钱。JCK认证费用由厂商承担,用户无需直接支付。具体认证成本涉及测试授权、技术验证及法律流程,属于厂商内部商业范畴。
1. 认证费用组成
JCK认证费用通常包括以下部分:
- 测试套件授权费:需向Oracle获取JCK测试套件的使用权,具体费用需通过商业谈判确定。
- 技术合规性验证费:包括测试执行、问题修复及审核流程产生的成本。
2. 费用估算范围
- 厂商级费用:根据行业惯例,针对企业级JDK发行版的JCK认证费用可能在数十万至数百万人民币区间,具体取决于Oracle的授权协议条款及测试规模。
- 长期维护成本:通过认证后,需持续支付版本更新和安全补丁的兼容性验证费用。
- 厂商承担费用:如国产的龙芯中科作为JDK发行方,已公开声明其JDK版本(如8、11、17)通过JCK认证,相关费用由龙芯中科承担。
- 开源免费策略:用户可直接使用龙芯JDK而无需支付认证费用,厂商(龙芯中科)通过技术支持和定制服务实现商业化。(用了龙芯JDK,如何需要解决使用过程中的问题,龙芯中科是有偿服务)
JCK认证过的国产JDK
OpenJDK 官方上游项目:作为开源参考实现,OpenJDK 本身不会直接申请 JCK 认证。JCK 认证由各厂商基于 OpenJDK 定制的发行版(如龙芯 JDK、腾讯 Kona JDK11)自行完成。
基于 OpenJDK 的JCK 认证发行版
部分厂商基于 OpenJDK 开发的 JDK 发行版通过了 JCK 认证,例如:
- 龙芯 JDK:基于 OpenJDK 构建,支持 LoongArch/MIPS 架构,其 JDK 8、11、17 版本均通过 JCK 认证,符合 Java SE 标准。龙芯公司是全球少数几家取得了JCK授权的公司之一。龙芯OpenJDK通过了JCK的测试,意味着用户无需修改Java应用,就可将已有的符合Java SE标准的应用直接迁移至龙芯平台,也可在龙芯平台上开发新的Java应用。
未通过JCK 认证的 OpenJDK 发行版
- 阿里巴巴 Dragonwell:未明确标注通过 JCK 认证。
- 腾讯 Tencent Kona JDK:未明确标注通过 JCK 认证。
- 华为毕昇JDK :未明确标注通过 JCK 认证。
- 其他社区版本:部分开源或社区维护的 OpenJDK 发行版可能都未完成JCK认证。
考拉JDK:
- JCK认证:未通过。
- 说明:考拉JDK基于OpenJDK,但在兼容性方面可能存在一些差异,特别是在某些特定功能和API上。
龙井JDK:
- JCK认证:未通过。
- 说明:龙井JDK在性能和功能上进行了优化,但在兼容性方面可能与Oracle JDK存在差异。
毕昇JDK:
- JCK认证:未通过。
- 说明:毕昇JDK在性能和稳定性上表现良好,但在兼容性方面仍需谨慎。
建议- 兼容性测试:在选择国产JDK时,建议进行全面的兼容性测试,确保所有功能正常运行。
- 性能基准测试:比较不同JDK在实际应用中的表现,选择最适合的版本。
- 持续监控:在生产环境中,持续监控JVM性能,及时发现和解决问题。