关于JDK是否收费,我也有过疑问,查了一些资料,就在这里做一个简要的说明。

  首先要明白JDK的发布模型。两年多以前,2017年9月21日,伴随着JDK9的发布,JDK就开启了新的发布模式(如下图所示)。JDK分为OracleJDK、OpenJDK。

OpenJDK

  OpenJDK的lience是GPLv2+CPE,可以免费使用。从JDK9开始,OpenJDK每6个月发布一次,也就是每年的3月份、9月份各发布一次,称为feature release。JDK9就是在2017年9月份过GA的。

  除了feature release之外,OpenJDK每个季度会提供一个update release。分别在1月份、4月份、7月份和10月份。所以每个feature release之后,都会有两个update release。

  再说一次,OpenJDK可以免费使用。

OracleJDK

  使用OracleJDK需要commercial license,这个不是免费的。OracleJDK每3年发布一次LTS(Long Term Support)版本,Support的期限是8年。2018年9月发布的JDK11是第一个LTS版本,support到2026年9月。同样,OracleJDK每年也有4个update release。

  因为OracleJDK每3年发布一次LTS版本,所以下一次LTS将在2021年9月份发布。

OpenJDK与OracleJDK的区别

之前有一些commercial features没有包含在OpenJDK中,例如:

  Java Flight Recorder: http://openjdk.java.net/jeps/328

  Java Mission Control: http://openjdk.java.net/projects/jmc/

  Application Class-Data Sharing: http://openjdk.java.net/jeps/310

  ZGC: http://openjdk.java.net/jeps/333

但是现在这些commercial features已经贡献给了OpenJDK社区,所以从JDK11开始,OpenJDK与OracleJDK基本完全一样。但是它们之间仍然有一些差异,具体查看下面的文章:

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

JDK11收费吗?

OpenJDK是免费的。对于想要不断体验新特性的developer来说,是理想的选择。

OracleJDK不是免费的。对于企业用户来说,可能不是太愿意频繁升级,那么就选择OracleJDK。

OracleJDK 收费是针对 公司、商业用途的,如果只是个人学习Java的话,这些是没什么影响!

另外,Oracle 曾在今年四月就宣布,自 2019 年 1 月起,Java SE 8 公开更新将不向没有商用许可证的业务、商用或生产用途提供。

但我们细读这句话,就会懂得 收费的并不是JDK8 , 而是JDK8后续的update (更新) 。

什么是update? 如果你下载过JDK, 就会看到那些8u191, 8u192这样的东西,191,192就是update 的编号。

这些update中通常会包含对JDK bug的fix ,或者一些功能的改变,增强, 拿update 172为例:

  1. 这个update 修改了下面两个方法的文档,让文档描述和方法的实现一致:

     java.awt.Toolkit.getImage(URL u)

     java.awt.Toolkit.createimage(URL u)

  2. 增加了在Windows8 及以上版中,对Swing/AWT 文本组件自动显示触摸键盘的功能

  3. 36个Bug Fix

假设JDK 8u192是2018年的最后一个update , 你下载并且安装了,那可以继续免费使用下去,没有任何问题。

但是从2019年1月开始,如果你还想获取JDK的update , 对不起,你需要付费订阅。

这个订阅服务的价格是这样的:

  对于PC, 每用户每月是2.5美元,对于服务器/云部署,每个processor 每月是25美元, 当然,数量多的话可以打折。

References

  https://www.oracle.com/technetwork/java/javase/eol-135779.html

  https://www.oracle.com/technetwork/java/javase/downloads/index.html

  https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

  https://www.infoq.com/news/2017/09/Java6Month

  2019年1月起Oracle要对JDK8就要收费了!

共同学习,共同进步,若有补充,欢迎指出,谢谢!

JDK的收费问题的更多相关文章

  1. 今天IT告告诉我,我电脑上的java jdk属性收费滴!需卸载

    敲着代码,IT突然跑来说,你电脑的Jdk版本属于收费版,目前需要卸载!啊哦...手贱!每次有更新我都更新了,Java要收费老早之前耳闻了,但是俺很少做java,一般都在.Net,所以忽略鸟.. 于是G ...

  2. Oracle JDK究竟从哪个版本开始商用收费?

    经常被问到Oracle JDK是不是要钱了?收费了?从哪个版本开始商用收费? 木有错,Oracle JDK从2019年4月16号开始商用商用商用收费了!有图有真像: 2019年4月16日当天,Orac ...

  3. JDK环境部署

    JDK环境部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 说起JDK想必大家并不陌生,作为运维的小伙伴,谁不层接触过Java程序员呢?而且在搭建服务上时也必须得接触他,比如to ...

  4. GitHub标星120K+的JDK并发编程指南,连续霸榜GitHub终于开源了

    前言 在编程行业中,有一个东西是和广大程序员形影不离的,在最一开始接触编程就是配置它的运行环境,然后java / javac,对,这个东西就是jdk 昨天项目刚上线,可以稍微休息一下了,但是猛的闲下来 ...

  5. 腾讯牛逼!终于开源了自家的 Tencent JDK——Kona!!.md

    是的,继阿里 2019/03 开源基于 OpenJDK 的长期支持版本 Alibaba Dragonwell 之后,腾讯也发布了自家的开源免费的 JDK 版本--Tencent Kona,必须替小马哥 ...

  6. Oracle 要慌了!华为终于开源了自家的 Huawei JDK——毕昇 JDK!

    没错,自阿里.腾讯之后,华为也终于开源了自家的 JDK--毕昇 JDK! 免费!免费!免费!!! Oracle 要慌了? 毕昇 JDK 毕昇 JDK 是华为内部 OpenJDK 定制版 Huawei ...

  7. JDK下载地址 Oracle JDK下载 地址 (已解决)

    现在JDK开始收费了 Oracle官方对JDK的管理也变得严格了,现在想要在官网下载jdk需要先注册Oracle账号,这倒是小事但是网页反应慢注册填写内容复杂导致很多人不想注册. 不过有的人提供了公开 ...

  8. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

  9. 对 Kotlin 与 Java 编程语言的思考

    从长远来看,排名前10的也基本上是Java.C.C++.Python.C#.VB.PHP.JavaScript.至于Kotlin的排名,11月份在编程语言仅排41名,Ratings仅有0.216%. ...

随机推荐

  1. SQL 查询建表SQL

    1.新建一个查询语句,按执行按钮 2.结果页面会显示一条sql语句,复制该语句即可建表 3.建表测试

  2. pycharm2017注册码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  3. bootstrap基础学习【网格系统】(三)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 关于Angular+ngx-perfect-scrollbar自定义各大浏览器滚动条样式的解决方法

    资料: http://manos.malihu.gr/jquery-custom-content-scroller/  (此项是结合Jquery使用的,在此并未采用) https://www.npmj ...

  5. jq+js获取到table标签中的value

    前端jsp页面,(这里接收后端的参数方式没有放在上面) <table> <tbody id="fPzQwQwzbrList"> <tr id=&quo ...

  6. [CF798D]Mike and distribution_贪心

    Mike and distribution 题目链接:http://codeforces.com/problemset/problem/798/D 数据范围:略. 题解: 太难了吧这个题..... 这 ...

  7. Python if __name__ == '__main__': 理解

    if __name__ == '__main__':是为了区分.py文件是自己直接被执行还是被其他文件调用. 当.py文件直接被执行时,默认的是 __name__ = '__main__',因此条件成 ...

  8. Python+requests维持会话

    Python+requests维持会话 一.使用Python+requests发送请求,为什么要维持会话? 我们是通过http协议来访问web网页的,而http协议是无法维持会话之间的状态.比如说我们 ...

  9. (六)mybatis 全局配置文件讲解

    目录 properties (属性) settings 全局参数配置 typeAliases 别名设置 typeHandlers 类型处理器 mapper (映射器) 细节 properties (属 ...

  10. Thinking In Java 4th Chap5 初始化和清理

    类的构造器名必须与类名一致,且无返回类型,通过参数类型的不同(即使顺序不同也行)可以重载构造器,也可以以此技巧重载方法 this关键字:表示对“调用方法的那个对象的引用”,也可将当前对象传递给其他方法 ...