You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何判断本地JDK11是免费版还是付费授权版?

如何区分JDK 11是OpenJDK(免费)还是Oracle JDK(商业付费)

当然可以!有好几类方法能从JDK文件夹的内容或运行输出里快速区分二者,我整理了几个最靠谱的:

1. 查看许可证文件

直接翻JDK根目录下的LICENSE或相关许可文件:

  • OpenJDK:许可文件里会明确标注是 GPLv2 with Classpath Exception,完全开源免费,没有商业使用限制。部分厂商的OpenJDK可能会有LICENSE.openjdk这类命名的文件。
  • Oracle JDK:许可文件(比如LICENSEOTN_LICENSE)里会提到「Oracle Binary Code License Agreement」,并清晰说明商业场景下使用需要付费授权,还会关联Oracle Technology Network的条款。

2. 运行版本命令验证

打开终端,切换到JDK的bin目录,执行以下命令:

java -version

或者:

javac -version

看输出结果:

  • OpenJDK:输出里会带有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官方发布的OpenJDK,输出里的实现者会是Oracle Corporation,但其他厂商(比如Eclipse Adoptium、Amazon Corretto)的OpenJDK会显示各自的厂商名称。
  • Oracle JDK:输出里会标注Java(TM) SEOracle 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文件,里面包含了版本的核心元数据:

  • OpenJDKLICENSE字段值为"GPLv2 with Classpath Exception"IMPLEMENTOR字段对应具体的发行厂商(比如"Eclipse Adoptium""Oracle Corporation")。
  • Oracle JDKLICENSE字段值为"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

火山引擎 最新活动