背景

外媒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里面是没有的。解决方式也很简单,主要如下几种做法:

  1. 不要使用javafx.util这种OpenJDK里面没有的包;

  2. 下载javafx-sdk到服务器,编译时将javafx-sdk位置作为--module-path参数传入;

  3. 在pom里面显式添加javafx依赖,这样在服务器上用mvn编译时,会把它从maven中央仓库拉到本地打包到你的工程里。

<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>14-ea+7</version>
</dependency>

4. 本地编译好,直接用jar包布署。

除了这个问题之外,Oracle JDK构建过程是基于OpenJDK的,所以他们之间并没有技术差别。只是OpenJDK由于版本发布比较频繁,可能会遇到不稳定的问题。根据社区反馈,也有一些OpenJDK用户遇到了性能问题。而Oracle JDK作为商业软件,在稳定性方面要好很多。

甲骨文严查Java授权,换openJDK要避坑的更多相关文章

  1. Java 授权内幕--转载

    在信息安全性领域,授权是世界的的中心,因为它是控制个体(即人.进程和计算机)对系统资源的访问权限的过程.直到最近,在 Java 安全体系结构中相关的问题都是“这段运行中的代码的访问权限是什么?” 随着 ...

  2. Java避坑宝典《Java业务开发常见错误100例》上线了

    写这个专栏的缘起 之前我写过一篇博客:<朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑>,引起的关注还是挺多的.后来和极客时间的编辑一拍即合决定以这个为题写一个专栏.其实所 ...

  3. Android连接远程数据库的避坑指南

    Android连接远程数据库的避坑指南 今天用Android Studio连接数据库时候,写了个测试连接的按钮,然后连接的时候报错了,报错信息: 2021-09-07 22:45:20.433 705 ...

  4. 珍爱生命,远离JS=>JS避坑记

    JavaScript避坑记 转载请注明源地址: http://www.cnblogs.com/funnyzpc/p/8407952.html 上图=> 有意思的漫画,不知大家看懂了没,这里我想说 ...

  5. 双刃剑MongoDB的学习和避坑

    双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储,而value的值可以是字符串,也可以是文档.所以我们在使用的过程中非常方 ...

  6. spring-boot-starter-thymeleaf 避坑指南

    第一步:pom配置环境 先不要管包是做什么的 总之必须要有 否则进坑 <!--避坑包--> <dependency> <groupId>net.sourceforg ...

  7. CEF避坑指南(一)——下载并编译第一个示例

    CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司,如网易.腾讯都开始使用CEF进行前端开 ...

  8. 15. Go 语言“避坑”与技巧

    Go 语言"避坑"与技巧 任何编程语言都不是完美的,Go 语言也是如此.Go 语言的某些特性在使用时如果不注意,也会造成一些错误,我们习惯上将这些造成错误的设计称为"坑& ...

  9. 避坑之Hadoop安装伪分布式(Hadoop3.2.0/Ubuntu14.04 64位)

    一.安装JDK环境(这个可以网上随意搜一篇教程了照着弄,这里不赘述) 安装成功之后 输入 输入:java -version 显示如下说明jdk安装成功(我这里是安装JDK8) 二.安装Hadoop3. ...

随机推荐

  1. 反射操作dll类库之普通类和各种方法调用

    一.使用方法 查找DLL文件, 通过Reflection反射类库里的各种方法来操作dll文件 二.步骤 加载DLL文件 Assembly assembly1 = Assembly.Load(" ...

  2. mac 安装shell

    https://blog.csdn.net/weixin_41937552/article/details/108565705

  3. Thread 类中的 yield 方法有什么作用?

    使当前线程从执行状态(运行状态)变为可执行态(就绪状态). 当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢?可 能是当前线程,也可能是其他线程,看系统的分配了.

  4. Semaphore 有什么作用 ?

    Semaphore 就是一个信号量,它的作用是限制某段代码块的并发数.Semaphore 有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可 以访问,如果超出了 n, ...

  5. Linux 网卡配置参数

    网卡配置文件位于 /etc/sysconfig/network-scripts/ 目录下 网卡配置文件在RHEL5/6以eth为网卡文件的前缀,在RHEL7中以ifcfg为网卡文件的前缀 配置 解释 ...

  6. IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

     转:http://blog.csdn.net/csethcrm/article/details/37820135 IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不 ...

  7. Djnago中缓存配置(redis配置案例)

    Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) 配置文件 # 内存 CACH ...

  8. 媒体查询@media的使用

    媒体查询 参考:https://developer.mozilla.org...一个媒体查询由一个可选的媒体类型和零个或多个使用媒体功能的限制了样式表范围的表达式组成,例如宽度.高度和颜色.媒体查询, ...

  9. 使用 Vuex + Vue.js 构建单页应用

    鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...

  10. 夏日葵电商:连锁零售店小程序o2o系统解决方案

    公众平台"附近小程序"功能上线后,一个主体账号可以同时绑定N+个门店,这对连锁零售店铺来说是重磅福利呀,无论你是通过搜索还是线下扫码进入小程序,线上与线下都完全贯通了,线上多种入口 ...