天天看點

Oracle JDK 和 Open JDK 的差別

Oracle JDK 和 Open JDK

Oracle JDK Open JDK
來源 Oracle團隊維護 Oracle和Open Java社群
授權協定 Java 17及更高版本 Oracle Java SE 許可證 Java16及更低版本甲骨文免費條款和條件 (NFTC) 許可協定 (oracle.com) GPL v2許可證
關系 由Open JDK建構,增加了少許内容
發行周期 6個月,每兩年一個LTS 6個月
是否收費 2021年9月起Java17及更高版本所有使用者免費。 16及更低版本,個人使用者、開發使用者免費。 2017年9月起,所有版本免費
LTS 目前7,8,11,17 無,但是有社群編譯的其他支援
對文法的支援 一緻 一緻
性能 最佳 接近,幾乎無差

LTS生命周期

版本 開始日期 結束日期 延期結束日期
7(LTS) 2011年7月 2019年7月 2022年7月
8(LTS) 2014年3月 2022年3月 2030年12月
主要特性

1. Stream API 流

2. 新的日期和時間API,LocalDate、LocalDateTime

3. Lambda文法

4. 函數式接口

5. 接口可以添加非抽象方法,default關鍵字

6. JVM移除永久代,增加元空間

11(LTS) 2018年9月 2023年9月 2026年9月
主要特性

1. 子產品化 (jdk9)

2. 預設G1垃圾回收器(jdk9)

3. 局部變量類型推斷(jdk10)

4. 移除Java EE(jdk11)

5. 合并javac和java指令(jdk11)

17(LTS) 2021年9月 2026年9月 2029年9月
主要特性

1. 試驗ZGC,需要在JVM配置()jdk11)

2. 文本塊更新(jdk13)

3. switch支援lambda(jdk13預覽,jdk14)

4. ZGC 可用于生産環境(jdk15)

5. record(jdk14,15預覽,jdk16)

6. Realed class密封類(jdk15,16預覽,jdk17)

7. 統一日志支援異步日志重新整理(jdk17)

21(LTS) 2023年9月 2028年9月 2031年9月

其他的可選 Open JDK發行版

名稱 支援團隊 官網
AdoptOpenJDK (推薦) Amazon,Microsoft,IBM,Red Hat,Pivotal(EMC和VMware) https://adoptopenjdk.net/
Alibaba Dragonwell (龍井) 阿裡巴巴 https://dragonwell-jdk.io/
Dragonwell Dragonwell https://github.com/Tencent/TencentKona-8/wiki
Microsoft JDK Microsoft微軟 https://www.microsoft.com/openjdk
畢昇JDK 華為 https://www.hikunpeng.com/developer/devkit/compiler/jdk
Amazon Corretto Amazon亞馬遜 https://aws.amazon.com/cn/corretto

商業收費問題

Oracle JDK 和 Open JDK 的差別
Oracle JDK 和 Open JDK 的差別
  • 什麼時候又開始免費了

2021年9月起 java 17 及更高版本所有使用者免費, 16及更低版本,個人使用者,開發使用者免費

  • 什麼時候開始收費

Oracle JDK從2019年4月16号開始商用商用商用收費了

  • 哪個版本開始收費

2019年4月16日當天,Oracle釋出了Oracle JDK的8u211和8u212兩個版本 (屬于JDK8系列) ,并從這兩個版本開始将JDK的授權許可從BCL換成了OTN!也就是從這兩個版本開始 商用收費了!

  • 啥叫商用收費

商用收費就是當你使用 Oracle JDK 8u211及以上版本進行具有商業用途(盈利目的)的應用或工具的開發時是要收費的,這時是要先向Oracle繳費取得授權的!當然,一開始你沒繳費取得授權就直接用了,Oracle也是不知道的啦!但當你的産品應用或工具越做越大,越來越有名氣和市場影響力時,說不定哪天就收到了Oracle發來的律師函,會搞得你公司不要不要的,甚至破産!

  • Oracle JDK的最後一個免費版本是哪個呢?

是2019年1月15日釋出的Oracle JDK 8u201和8u202!

  • 說好的 最後一個 免費版本,為什麼寫了兩個版本号 8u201和8u202呢?我到底要用哪一個?

這就涉及到Oracle跟Oracle JDK的使用者之間的一個小小的約定或小常識了!

從 2014 年 10 月釋出 Java SE 7 Update 71 (Java SE 7u71) 開始,Oracle在釋出Oracle JDK關鍵更新檔更新 (CPUs:Critical Patch Updates) 的同時一般會釋出相應的更新檔集更新 (PSUs:Patch Set Updates)。

Oracle JDK CPUs 包含安全漏洞修複和重要漏洞修複,Oracle 強烈建議所有Oracle JDK使用者及時更新到最新的 CPU 版本,Oracle JDK CPUs 版本号采用 奇數編号!

Oracle JDK PSUs包含相應 CPUs 中的所有修複 以及其他非重要修複,僅當您受到Oracle JDK CPUs版本之外的其他漏洞的影響時才應當使用相應的PSUs ,Oracle JDK PSUs版本号采用 偶數編号!

是以,一般情況下我們隻要下載下傳 奇數編号 的最新版本更新就行了

版本釋出時間

版本 名稱 發行日期
JDK 1.0 Oak(橡樹) 1996-01-23
JDK 1.1 1997-02-19
JDK 1.1.4 Sparkler (寶石) 1997-09-12
JDK 1.1.5 Pumpkin (南瓜) 1997-12-13
JDK 1.1.6 Abigail (阿比蓋爾–女子名) 1998-04-24
JDK 1.1.7 Brutus (布魯圖–古羅馬政治家和将軍) 1998-09-28
JDK 1.1.8 Chelsea (切爾西–城市名) 1999-04-08
J2SE 1.2 Playground (運動場) 1998-12-04
J2SE 1.2.1 none (無) 1999-03-30
J2SE 1.2.2 Cricket (蟋蟀) 1999-07-08
J2SE 1.3 Kestrel (美洲紅隼) 2000-05-08
J2SE 1.3.1 Ladybird (瓢蟲) 2001-05-17
J2SE 1.4.0 Merlin (灰背隼) 2002-02-13
J2SE 1.4.1 grasshopper (蚱蜢) 2002-09-16
J2SE 1.4.2 Mantis (螳螂) 2003-06-26
Java SE 5.0 (1.5.0) Tiger (老虎) 2004-09-30
Java SE 6.0 (1.6.0) Mustang (野馬) 2006-04
Java SE 7.0 (1.7.0) Dolphin (海豚) 2011-07-28
Java SE 8.0 (1.8.0) Spider (蜘蛛) 2014-03-18
Java SE 9.0 2017-09-21
Java SE 10.0 2018-03-21
Java SE 11.0 2018-09-25

名詞解釋

  • Java與JDK的差別

 JDK是個Java開發的工具包,Java是門程式設計語言。

  • JDK8與JDK1.8的差別

 JDK8或者JDK1.8是由于自從JDK1.5/JDK5命名方式改變後遺留的新舊指令方式問題。是以 Java 8, JDK8或者JDK1.8也是同一個東西。

  • JDK與J2SE的差別

 JAVA 就是指 JDK 開發工具,是以我們可以了解為 JAVA 等價于 JDK。JAVA 有3個版本:J2SE J2EE J2ME,而J2SE是标準版本,J2ME 是手機方向的,J2EE 是網站開發方向的。

  • JDK、JRE、ServerJRE

Software Developers: JDK (Java SE Development Kit). For Java Developers. Includes a complete JRE plus tools for developing, debugging, and monitoring Java applications.

Administrators running applications on a server: Server JRE (Server Java Runtime Environment) For deploying Java applications on servers. Includes tools for JVM monitoring and tools commonly required for server applications, but does not include browser integration (the Java plug-in), auto-update, nor an installer.

End user running Java on a desktop: JRE: (Java Runtime Environment). Covers most end-users needs. Contains everything required to run Java applications on your system.

JDK

JDK(Java Development Kit)又稱J2SDK(Java2 Software Development Kit),是Java開發工具包,它提供了Java的開發環境(提供了編譯器javac等工具,用于将java檔案編譯為class檔案)和運作環境(提供了JVM和Runtime輔助包,用于解析class檔案使其得到運作)。如果你下載下傳并安裝了JDK,那麼你不僅可以開發Java程式,也同時擁有了運 行Java程式的平台。JDK是整個Java的核心,包括一堆Java工具tools.jar和Java标準類庫。

JRE

JRE(Java Runtime Enviroment)是Java的運作環境。面向Java程式的使用者,而不是開發者。JRE是運作Java程式所必須環境的集合,包含JVM标準實作及 Java核心類庫。它包括Java虛拟機、Java平台核心類和支援檔案。它不包含開發工具(編譯器、調試器等)。

Server JRE

Server JRE是專為伺服器端程式量身打造的, 隻包含JRE/JDK中最常用的那部分功能.。為了做到簡單,Server JRE不使用安裝包, 而是一個綠色版的壓縮檔案。

從使用情況來看,伺服器部署使用server jre比較好,精簡了javafx一些圖形界面才用到的東西

Server JRE 包括 JVM 監測工具和伺服器應用程式所需的常用的工具。JRE包括浏覽器內建 Java 插件。