OpenJDK 配置使用

OpenJDK 是 JDK 的开放源码版本,以 GPL 协议的形式发布,而 JDK 则是采用 JRL 协议,对商业使用进行收费。


▎JDK Versions


> OracleSDK / JavaSE

根据付费商业许可(但可供开发使用) , 适用于那些不想使用 GPLv2 + CE,或者将 Oracle JDK 与 Oracle 产品或服务一起使用的用户。


> Oracle OpenJDK

Oracle 自身还维护着另一个协议的 Java 版本:OpenJDK,像是 RedHat 和 CentOS 的关系。

1
2
3
4
5
$ java --version

openjdk 14 2020-03-17
OpenJDK Runtime Environment (build 14+36-1461)
OpenJDK 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)

> AdoptOpenJDK

- AdoptOpenJDK builds

该版本也是免费的、完全无品牌的 OpenJDK 版本,基于 GPL 开源协议(+Classpath Extension),以免费软件的形式提供社区版的 OpenJDK 二进制包,公司也可安全且放心使用。与由 Oracle 的 OpenJDK 构建版本不同,这些版本会提供更长的支持,像 Java 11 一样,至少提供 4 年的免费长期支持(LTS)计划。

AdoptOpenJDK 是一个由社区驱动的项目,如果其他群组在 OpenJDK 的源码仓库中创建和发布了安全修复程序,它们也会提供构建。 IBM 和 Red Hat 也曾表示他们打算提供这些安全补丁。

1
2
3
4
5
6
7
8
9
10
brew tap AdoptOpenJDK/openjdk
brew search openjdk


Where version is:

adoptopenjdk
adoptopenjdk11-openj9
adoptopenjdk12
adoptopenjdk13

▎macOS x64 OpenJDK 安装

Make sure you have downloaded the latest macOS x64 jdk binary to a directory that will not move or be deleted, and use Terminal/Command Prompt to cd into it.

手动下载安装

提取 .tar.gz。将下载好的文件放到:/Library/Java/JavaVirtualMachines

使用 homebrew
1
2
brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk13

该安装方式并不会自动配置 ENV,需要按下面方式指定配置:

将指定版本的 Java 添加到您的PATH中:
1
export PATH=$PWD/jdk-11.0.2+9/Contents/Home/bin:$PATH
1
2
3
4
5
6
# Set PATH for JAVA
# ===================
# export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.1.jdk/Contents/Home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
export CLASS_HOME=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
检查Java是否正确安装:
1
2
3
4
5
$ java --version

openjdk 14 2020-03-17
OpenJDK Runtime Environment (build 14+36-1461)
OpenJDK 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)

▎支持开源软件的哲学思考

软件产业已经普通认同开源软件推动了行业的发展。 由于其开源自由的性质,OSS 许可证允许人们修改和改编其他人的软件,而不用担心会受到惩罚。

许多人也喜欢 OSS 软件中 的 像啤酒一样免费 的性质,但这给作者带来了巨大的成本! 像其他任何人一样,软件开发人员需要生存。 像 Oracle 供应商 (每年至少投入上千万美金) 投入大量的资金 到 Java SE 的开发上,他们也需要获取相应的补偿。

所以,尽管你不会被强制付费去使用一个软件,但有时我们最终用户也应该思考一下如何能支持 Java SE 生态系统,以确保它有一个持久的未来!