如何判断本地JDK11是免费版还是付费授权版?
如何区分JDK 11是OpenJDK(免费)还是Oracle JDK(商业付费)
当然可以!有好几类方法能从JDK文件夹的内容或运行输出里快速区分二者,我整理了几个最靠谱的:
1. 查看许可证文件
直接翻JDK根目录下的LICENSE或相关许可文件:
- OpenJDK:许可文件里会明确标注是
GPLv2 with Classpath Exception,完全开源免费,没有商业使用限制。部分厂商的OpenJDK可能会有LICENSE.openjdk这类命名的文件。 - Oracle JDK:许可文件(比如
LICENSE或OTN_LICENSE)里会提到「Oracle Binary Code License Agreement」,并清晰说明商业场景下使用需要付费授权,还会关联Oracle Technology Network的条款。
2. 运行版本命令验证
打开终端,切换到JDK的bin目录,执行以下命令:
java -version
或者:
javac -version
看输出结果:
- OpenJDK:输出里会带有
OpenJDK字样,比如:
如果是Oracle官方发布的OpenJDK,输出里的实现者会是openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)Oracle Corporation,但其他厂商(比如Eclipse Adoptium、Amazon Corretto)的OpenJDK会显示各自的厂商名称。 - Oracle JDK:输出里会标注
Java(TM) SE和Oracle Corporation,比如:java version "11.0.16" 2022-07-19 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.16+11-LTS-199) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16+11-LTS-199, mixed mode)
3. 检查根目录的release文件
JDK根目录下有个纯文本的release文件,里面包含了版本的核心元数据:
- OpenJDK:
LICENSE字段值为"GPLv2 with Classpath Exception",IMPLEMENTOR字段对应具体的发行厂商(比如"Eclipse Adoptium"或"Oracle Corporation")。 - Oracle JDK:
LICENSE字段值为"Oracle Binary Code License Agreement",IMPLEMENTOR为"Oracle Corporation",还会有JAVA_VERSION_LTS="true"这类标识,同时文件里会隐含商业使用的限制说明。
4. 观察文件夹结构与附加内容
- Oracle JDK:可能会附带一些商业相关的工具或文档,比如早期版本里的
javafx-jmods包、带有Oracle商标的README.html,甚至安装程序残留的文件。 - OpenJDK:结构相对简洁,只有核心的JDK运行时和开发工具,没有额外的商业专属组件。
这些方法里,运行java -version和查看LICENSE/release文件是最快速准确的,基本不会出错。
内容的提问来源于stack exchange,提问作者Ryan Lundy




