首先要明确一点,收费的是 OracleJDK,而不是 Java 语言。
目前 OracleJDK 11 的许可是 Oracle Technology Network License Agreement for Oracle Java SE ,其中声明了:Oracle grants You a nonexclusive, nontransferable, limited license to internally use the Programs, subject to the restrictions stated in this Agreement and Program Documentation, only for the purpose of developing, testing, prototyping and demonstrating Your Application and not for any other purpose.
这意味着对于开发、测试以及演示应用来说,使用 OracleJDK 依然是合法的,用 OracleJDK 进行开发的人大可不必担心。
当然,OracleJDK 11 只对于开发测试以及演示有着免费的授权,对于生产环境来说还是需要从 Oracle 获取授权,那么是不是说生产环境就必须付费使用 Java 了吗?当然也不是这样,Oracle 也提供了大部分以 GPL v2 with CE 协议开源的 OpenJDK,而 OpenJDK 是能够免费使用的。至于有些人担心 OpenJDK 和 OracleJDK 之间会不会产生兼容性差距,我们可以看看 Oracle 官方的说法:Oracle JDK Releases for Java 11 and Later。通过官方的介绍,我们可以知道,Java 11 开始 OpenJDK 与 OracleJDK 之间的差距已经微乎其微,最大的差别还是 OpenJDK 自带的 module 少于 OracleJDK ,以及 OpenJDK 不提供安装包,只有以压缩包形式发行的 JDK,在不需要 Oracle 商业支持的情况下,以 OpenJDK 替代 OracleJDK 是基本没有问题的。
总而言之,虽说 OracleJDK 开始收费,但是对于开发者来说影响并不大,对于不需要 Oracle 商业支持的生产环境来说可以使用 OpenJDK 作为替代,一些无脑带“Java 收费”节奏的人可以省省了。