(給ImportNew加星標,提高Java技能)
編譯:ImportNew/唐尤華
dzone.com/articles/ok-java-is-still-free-but-which-version-do-i-use-a
關於 Java 許可和發行版仍然有許多誤區,我也參與其中。在我任職的大學,關於如何選擇 Java 版本和確定更新策略仍然存在爭議。Oracle 渥太華總監 Donald Smith 對此進行了澄清,可能類似的澄清已經不下100次了。本文彙總了我對相關問題的總結。在開始之前,請先閱讀下麵幾篇文章:
讀完以後,咱們就開始吧。
1. 應該使用哪個 Java 發行版?
發行版除了最新的 JDK,還包含每季度的安全更新。它透過了 TCK 認證、質量測試,是一個可用於生產的開源 JDK。就 Java 11 來看,這個程式碼庫與非開源授權的 Oracle JDK 一樣。可以透過上面連結中的介紹瞭解二者的區別。當然,你仍然可以從 Oracle 技術網路(OTN)上下載 Java 並且免費用來個人開發或者培訓。儘管如此,如果對釋出 Java 產品有顧慮,可以使用 發行版,並推薦給你的客戶使用。
還有許多其他渠道得到 JDK,比如各種 Linux 發行版、硬體供應商、獨立軟體供應商(ISV)以及其他支援供應商,可以根據自己的需要進行選擇。稍後會對此詳細講解。
2. 長期支援(LTS)意味著什麼?
Oracle 對 LTS 版本提供付費支援,包括 Java 7、8和11,並持續相當長的一段時間。Java 11 的付費支援會持續到2026年。Oracle 還為像 Java 12 這樣的非 LTS 版本提供商業支援,前提是不被新版本取代。更多資訊,請參見
3. Java 6個月的版本迭代意味著什麼?
每年的三月和九月 Java 都會釋出一個新特性,這打破了像之前 Java 8 這樣的傳統釋出週期。Java 8 的最新版本是 212,這個數字不是釋出的版本號。儘管如此,仍然有許多 Java 8 版本包含了新特性。6個月的釋出週期現在用來釋出補丁、修複 Bug 和更新。
我在 Twitter 上與 Oracle Java 語言首席架構師 Brian Goetz 進行了簡短交流,他確認了 Java 向前相容的承諾。如果用 Java 8 開發了程式碼,可以放心地在 Java 13 上執行。如果你正在為一個 Java 11 專案尋找新的開發者,面試者告訴你他們透過了 Java 13 培訓,那麼可以招聘。
4. 業界不是不考慮使用 LTS 版本以外的東西嗎?
起初是這樣的,但這僅僅因為自身的誤解和受到錯誤的言論影響。就像過去聽說有新版本時,你就會更新到新的 Java 8 一樣,區別在於現在有一張可預測、有規律的時間表。這與現代應用開發實踐以及其他平臺的做法一致。這些平臺更希望看到頻繁更新但可管理,而不是每3到4年發生一次結構性改變。這有助於 Java 繼續成為雲端計算頭號開發平臺。
5. 我主要在 Web 伺服器上開發,它們不是都需要 Java 8 嗎?
目前,IBM Open Liberty 和 RedHat Wildfly 的最新版本都在 Java 12 上執行,其他版本也支援 Java 12。我的非正式測試都執行在 Java 12 編譯的 Servlet 和 JSF 應用上,但是 Maven 中編譯器會設定 target 設為 1.8。結果證明,即使伺服器、Payara 都在 Java 8 上執行也沒有出現任何問題。
6. 那麼其他的 Java 發行版呢?
Amazon、SAP、Azul、RedHat、Bellsoft 和 AdoptOpenJDK 等都提供 Java 發行版,這裡只列舉了一些。唯一顯著的區別在於, 只提供 .zip 或 .gz 檔案,其他會提供安裝包。它們幾乎都是從相同的原始碼構建的。Java 無需安裝,只要解壓然後配置應用程式、IDE 或者作業系統知道 Java 安裝路徑即可使用。安裝包的作用就是解壓,然後替你寫入系統配置。這些公司的發行版只是為 Oracle 付費版增加了一個選項,或者針對 Intel 或 AMD 以外的某個平臺提供特定版本,比如 ARM。這些公司已經做了很多年,比如 2008 年開始 Red Hat 就提供了 Java 6 的 OpenJDK 發行版。
7. 結論
如果你剛開始學習 Java 程式設計,就使用最新版。如果你正在使用 Java 開發,就升級到最新版。如果你擔心 Oracle 的授權協議或者更喜歡開源,就從 下載 Java,否則就從 OTN 下載。
致謝:本文撰寫時得到了 Donald Smith 的支援。
朋友會在“發現-看一看”看到你“在看”的內容