背景
外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。
甲骨文针对标准版Java(Java SE)有2种商业授权。2019年4月甲骨文宣布Java SE用户需要付费订阅,才能取得授权及更新,包括Java SE 7、8或11、12。但到同年9月该公司又宣布了免费Java授权方案,针对Java 17版本提供每季更新,并在2021年的新版本提供多1年免费支持,但这项方案并不溯及既往,旧版Java用户即使安装修补程序也是需要付费。
报道指出,最近一些美国企业收到甲骨文授权管理部门的消息,询问Java授权数量。此外甲骨文也从数据库、中间件或应用授权,来推敲用户的Java授权是否为虚报。例如,数据库的数量可以反映 CPU 数量,Java SE 订阅价格的其中一个收费标准为每个 CPU 每月收费 25 美元,因此就可以反映出 Java SE 订阅数量是否符合要求。
在这个背景下一些企业已开始用 OpenJDK 开源替代方案应对甲骨文的审计。但是OpenJDK与甲骨文标准版之间存在差异。今天咱们就来聊聊这些差异。
JDK和OpenJDK的区别
关于JDK和OpenJDK的区别,可以归纳为以下几点:
授权协议的不同
OpenJDK采用GPL V2协议,而JDK则采用JRL。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
OpenJDK不包含Deployment(部署)功能
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。
OpenJDK源代码不完整
这个很容易想到,在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部分就是JMX中的可选元件SNMP部分的代码。因此这些不能开放的源代码将它制作成插件,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码(OpenJDK6),促使OpenJDK更加完整。
部分源代码用开源代码替换
由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。
OpenJDK只包含最精简的JDK
OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。
不能使用Java商标
这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。(未验证)
OpenJDK之坑
一个在 Java SE 中稳定运行了一年多的项目,最近在OpenJDK上部署测试。一个案例失败。原因是缺少javafx.util。
这里的javafx.util包在jdk 1.8的类库里面有,但在OpenJDK 8里面是没有的。解决方式也很简单,主要如下几种做法:
-
不要使用javafx.util这种OpenJDK里面没有的包;
-
下载javafx-sdk到服务器,编译时将javafx-sdk位置作为--module-path参数传入;
-
在pom里面显式添加javafx依赖,这样在服务器上用mvn编译时,会把它从maven中央仓库拉到本地打包到你的工程里。
<!-- java项目 fhadmin.cn-->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>14-ea+7</version>
</dependency>
4. 本地编译好,直接用jar包布署。
除了这个问题之外,Oracle JDK构建过程是基于OpenJDK的,所以他们之间并没有技术差别。只是OpenJDK由于版本发布比较频繁,可能会遇到不稳定的问题。根据社区反馈,也有一些OpenJDK用户遇到了性能问题。而Oracle JDK作为商业软件,在稳定性方面要好很多。
相关推荐
java17 openjdk17
OpenJDK是Java的开源实现,由甲骨文公司发起,现在由全球开发者社区共同维护。OpenJDK包含了JDK的核心组件,如Java虚拟机(JVM)、Java语言规范、类库和工具。其与Oracle JDK的主要区别在于许可协议,Oracle JDK采用...
Java 1.8.0 开源版 OpenJDK 是一个广泛使用的开源 Java 开发工具包,它是 Oracle JDK 的一个自由且开源的实现。OpenJDK 由 OpenJDK 社区开发并维护,旨在提供一个符合 Java SE 标准的开放源代码实现,允许开发者在...
安装包:java-7-openjdk-amd64.tar.gz 使用方法 1. 拷贝至服务器/个人电脑 2. 解包 mkdir /opt/jdk/ tar -zxvf java-7-openjdk-amd64.tar.gz -C /opt/jdk/ 3. 配置编译环境 JAVA_HOME=/opt/jdk/java-7-openjdk-amd...
OpenJDK是一个开放源代码项目,由甲骨文公司(Oracle)和其他贡献者共同维护。它实现了Java平台标准版(Java SE)规范,包括Java虚拟机(JVM)、Java类库以及编译器。OpenJDK不仅为开发者提供了免费的Java开发和运行...
Java OpenJDK 1.8 for Linux 是一个广泛使用的Java开发和运行环境,尤其在CentOS 7.5操作系统上。这个版本的JDK(Java Development Kit)是Oracle公司发布的一个开源实现,它包含了编译、调试、运行Java应用程序所需...
在Windows操作系统上安装Java开发工具,特别是OpenJDK 8和11,是软件开发者日常工作中常见的步骤。本文将详细讲解如何使用msi(Microsoft Installer)文件和zip文件进行安装和解压OpenJDK,以及这些操作对于后端开发...
Java 1.7 开发工具包(JDK)在 Ubuntu 14 及其后续版本中的安装指南 在 Ubuntu 14.04 及更...请注意,使用较旧的 Java 版本可能存在安全风险,因此在生产环境中谨慎使用,并确保定期更新其他系统组件以保持系统安全。
OpenJDK是Java Development Kit(JDK)的一个实现,由甲骨文公司(Oracle)赞助并维护,但其源代码开放,允许社区参与开发和改进。这个版本号1.8.0.275-1.b01.dev.redhat代表着特定的更新和修复,是针对Windows x86_...
OpenJDK(Open Java Development Kit)是Java Development Kit(JDK)的一个开源实现,由甲骨文公司发起并维护,其目标是提供一个免费、开放源代码的Java SE平台。这个压缩包"基于Java的OpenJDK Java开发环境.zip...
Java 1.8.0 OpenJDK 是一个广泛使用的开源Java开发工具包,适用于Linux x86_64架构的系统。OpenJDK是Java Development Kit(JDK)的一个实现,由Oracle公司发起并维护,它遵循GNU General Public License (GPL)条款...
Java 11 OpenJDK 11.0.8.10-1 是一个针对Windows操作系统的开源Java Development Kit(JDK)版本。OpenJDK是Java平台标准版(Java SE)的一个开源实现,由Oracle公司发起并维护,旨在提供Java编程环境。此版本号11.0...
Java 8 开发工具包(Java Development Kit,简称JDK)是Java编程语言的重要组成部分,它包含了一系列用于开发和运行Java应用程序的工具。OpenJDK 是一个开源版本的 JDK,由 Oracle 公司主导并维护,它遵循GNU ...
OpenJDK 由 Sun Microsystems 开始,后来被甲骨文(Oracle)接手,并继续在开源社区中发展。OpenJDK 包括 JRE(Java Runtime Environment)和 JDK,其中 JDK 提供了编译器、调试器和其他开发工具。 3. **RPM 文件**...
Java 1.8.0 开源版本OpenJDK在Linux x86_64平台上的应用及JPS命令详解 Java开发工具包(Java Development Kit,简称JDK)是Java编程语言的重要组成部分,用于开发和运行Java应用程序。在这个场景中,我们关注的是...
- OpenJDK 是一个开源项目,其代码基于甲骨文的 JDK,并由社区维护。虽然一些特性可能稍有延迟,但大多数功能是相同的。 2. **macOS 系统中的 Java 安装** - 在 macOS 上安装 OpenJDK,通常可以通过 Homebrew 包...
Java 8 OpenJDK AMD64是Oracle公司开源的Java Development Kit(JDK)的一个实现,主要用于开发和运行Java应用程序。这个版本针对AMD64架构(也称为x86_64或x64),是64位的操作系统。"java-8-openjdk-amd64.tar.gz...
Java OpenJDK 8u341 RPM 安装包,可以通过RPM方式安装Java