關於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
共同學習,共同進步,若有補充,歡迎指出,謝謝!