JDK8之後,在java語言這條路怎麼走?

三升水發表於2021-04-20

前言

自2017年9月以來,Oracle按照免費的開源許可證(類似於Linux的許可證)提供JDK版本 。從Java SE 11(2018年9月,LTS)開始,Oracle不僅為開源許可下的所有使用者免費提供免費發行版,而且Oracle還提供了商業支援的發行版幷包含在Oracle產品中。有關更多資訊,請參見“適用於Java 11及更高版本的Oracle JDK版本”。

Java SE 8已完成舊版本的“公共更新結束”過程。Oracle將繼續通過java.com為個人,開發人員和其他使用者無限期提供Java SE 8的免費公共更新和自動更新。Oracle不打算通過自動更新功能將桌面從Java SE 8遷移到更高版本。

潮流中基石

首先,我們要搞明白JDK是什麼。JDK是Java語言的軟體開發工具包,它包含了Java的執行環境(JVM)、Java基礎類庫和Java工具。沒有JVM,根本無法跑Java程式;沒有Java基礎類庫,Java就是無根之木,無源之水;沒有Java工具,Java原始碼就無法編譯成位元組碼。

很多人對Java工具不甚瞭解,我簡單的說一下吧。Java工具主要有三類:
(1)面向Java原始碼的工具,例如可以編譯Java原始碼的javac.exe工具,使程式碼編譯之後可以跑在JVM上
(2)面向JVM的工具,例如對JVM監控或者調優的工具jvisualvm.exe
(3)常用的小工具,例如用於生成金鑰的keytool.exe工具

紛亂中的分支

  • OpenJDK

    開放原始碼,開放創新,開放標準

    在Java平臺、標準版和相關專案的開源實現上進行協作。

  • AdoptOpenJDK: https://adoptopenjdk.net

免費提供預構建的OpenJDK二進位制檔案

Java™是世界領先的程式語言和平臺。AdoptOpenJDK使用基礎設施、構建和測試指令碼從OpenJDK™類庫和OpenJDK或Eclipse OpenJ9 VM的選擇中生成預構建的二進位制檔案。
所有AdoptOpenJDK二進位制檔案和指令碼都是開放原始碼許可的,可以免費使用。

免費、開源、新鮮出爐的

微軟的Java從Azure到Minecraft, 跨越SQL Server到Visual Studio等等程式碼,我們使用的Java場景超乎想象。

OpenJDK的微軟版本是一種新的免費的長期支援發現版,也是微軟為Java生態體系提供合作和貢獻的新方式。

  • Amazon - Corretto : https://aws.amazon.com/corretto/

    OpenJDK的免費、多平臺和生產級別的發行版

    Amazon Corretto是Open Java Development Kit(OpenJDK)的免費,多平臺,可立即投入生產的發行版。Corretto帶有長期支援,其中包括效能增強和安全修復。亞馬遜內部在數千種生產服務上執行Corretto,Corretto被證明與Java SE標準相容。使用Corretto,您可以在流行的作業系統(包括Linux,Windows和macOS)上開發和執行Java應用程式。

  • Azul Zulu:https://www.azul.com/downloads/zulu/

    Azul 是業界唯一專注於 Java 和 Java 虛擬機器 (JVM) 的公司。它打造了具有完善技術支援、符合標準的執行時系統,可幫助基於 Java 的企業推動其業務。

    配有業界一流支援的Azul Java平臺產品,100%專注於Java, 可使Java成本降低多達90%。降低成本並處理更高的工作負載和波動性,包含及時且經濟的安全更新的OpenJDK™ 版本。

  • BellSoft Liberica:https://bell-sw.com/java.html

Java平臺和應用專家

一個免費的、受支援的、100%開源的二進位制發行版,由TCK for Java SE spec驗證。
給定的下載頁面包含Liberica JDK 8、9、10、11、12、13、14、15和16的開源版本,所有這些版本都與Linux、Windows、Solaris、Alpine和macOS相容。由我們的服務和產品所檢驗。

用於雲的生產級別 JDK

多年來,阿里巴巴已經編寫了超過10億行Java程式碼。在採用OpenJDK執行這些應用程式的同時,我們發現有必要針對大規模Java應用程式部署對其進行定製。我們的定製已經在我們的環境中經過了良好的測試。我們現在正在向Java社群貢獻我們的一些工作。

Alibaba DragonWell作為OpenJDK的下游版本,是阿里巴巴內部的OpenJDK實現。它針對執行在10萬多臺伺服器上的線上電子商務、金融和物流應用進行了優化。Alibaba DragonWell就是以極大的伸縮性執行這些分散式Java應用程式的引擎。

該專案包含OpenJDK專案的下游版本。它用於為希望使用OpenJDK執行應用程式的SAP客戶和合作夥伴構建和維護一個SAP支援的OpenJDK版本。

我們想強調的是,這顯然是一個“友好的分支”。SAP致力於確保Java平臺的持續成功:

自2001年以來,我們是JCP執行委員會的成員。在JSR 379 (Java SE 9), JSR 383 (Java SE 18.3), JSR 384 (Java SE 11), JSR 386 (Java SE 12), JSR 388 (Java SE 13), JSR 389 (Java SE 14), JSR 390 (Java SE 15)和JSR 391 (Java SE 16)的專家小組。

SAP是OpenJDK專案(目前在PowerPC/AIX和s390移植專案中處於領先地位)最大的外部貢獻者之一(參見Java 11、12、13、14、15、16的固定比率)。

我們打算在上游專案中引入儘可能多的特性,並使這個專案的差異儘可能小。

多種選擇的時代

隨著Oracle JDK發行和支援的變化,使用Oracle JDK與Oracle OpenJDK構建與其他提供商提供的OpenJDK構建的權利存在相當大的不確定性。有多種獲取免費更新(包括安全性)和(新的和現有的)付費支援模型的方法,可以從各個供應商處獲得。

出於各種原因,有些人希望繼續使用Java SE 8。

  1. 從2019年4月更新開始,Oracle JDK 8將具有商業使用限制。至少到2020年12月,Oracle JDK仍將免費提供個人桌面使用,開發,測試,原型製作,演示以及與某些型別的應用程式一起使用。在這些日期之後,使用者可以進入付費支援計劃,也可以使用其他提供商的Java SE 8 / OpenJDK 8二進位制檔案。
  2. 您還可以繼續使用在舊許可證 下載的Oracle JDK 8的先前版本,而無需自行承擔更新的風險。
  3. 如果您沒有使用Oracle JDK 8,那麼您當前的Java SE 8 / OpenJDK 8提供程式將提供更新和/或付費支援計劃供您選擇。

尤其是從Java SE 11開始,Oracle JDK管理版本和更新的方式正在發生變化。

我應該使用哪種Java發行版?

在Sun / Oracle時代,通常是Sun / Oracle基於OpenJDK源產生專有的下游JDK發行版。最近,Oracle決定僅在附帶商業支援的情況下進行自己的專有構建。他們還在其https://jdk.java.net/網站上慷慨地釋出了OpenJDK構建。

從JDK 11開始發生的事情是從單一供應商(Oracle)思維方式轉變為您選擇一種提供商的思維方式,該提供商在您喜歡的條件下為您提供產品的發行版:他們為之構建的平臺,釋出的頻率和及時性,支援的結構方式等。如果您不信任任何現有供應商,甚至可以自己構建OpenJDK。

OpenJDK的每個構建通常都由相同的原始上游源儲存庫(OpenJDK“專案”)製成。但是,每個構建都是非常獨特的-免費的或商業的,有品牌的或無品牌的,純淨的或捆綁的(例如,BellSoft Liberica JDK提供捆綁的JavaFX,從JDK 11開始從Oracle組裝中刪除了JavaFX)。

如果沒有環境(例如Linux)和/或許可證要求定義了特定的發行版,並且您想要最標準的JDK構建,則最好的選擇可能是使用Oracle的OpenJDK或AdoptOpenJDK。

相關文章