1. 程式人生 > >新手上路之如何選擇Java版本

新手上路之如何選擇Java版本

@[TOC](如何選擇Java版本) 每一次JDK上新總有一群人炸開了鍋,什麼上新時間太快啦,根本來不及學呀,什麼的。 確實從Java9開始,往後Java團隊就像生產隊的驢一樣以每年兩版的量更新著Java的版本,目前為止Java15都已經問世了。 這一陣仗直接“勸退”了很多萌新。在剛開始學,還什麼都不懂的我看到這個更新速度的時候,直接嚇得瑟瑟發抖。當時就感覺,天啦擼,我Java8都還沒學完,java9、java10、java11等就跟買一送一似的出來了,這要學到什麼時候是個頭啊。 尤其是在看見很多萌新問,下載JDK要下載哪一版比較好的時候,有人開玩笑似的說下最新版……我心裡哇涼哇涼的。 拜託大佬們不要開這種玩笑啊啊啊,像我這種萌新會很受傷的——不過大佬們好像也看不到這篇文吧,就當我發牢騷好了。 初入Java坑,有那麼多版本的Java,想了解清楚自己到底該下什麼版本這個問題,首先得了解清楚LTS與非LTS的區別 # LTS與非LTS 每一次去官網下載JDK的時候,當你進入到Java SE下載頁面的時候,就能看到頁面推薦的三個版本的JDK:最新版JDK、JDK11以及JDK8。尤其是JDK11旁邊還特地標了一個(LTS) ## LTS 根據官方公佈的[Oracle Java SE 支援路線圖](https://www.oracle.com/java/technologies/java-se-support-roadmap.html)描述可知: 對於Java SE 8之後的產品版本,Oracle將每三年指定一個版本作為長期支援(LTS)版本,全稱Long Term Support,根據官方計劃通常在釋出後:提供五年的首要(高階)支援,五年之後提供三年的擴充套件(延長)支援。 Java SE 8就是首個LTS版本,目前同樣為LTS版本的還有2018年九月釋出的JDK11 從2020年五月13日釋出的[Java Platform Group產品管理部落格](https://blogs.oracle.com/java-platform-group/java-client-roadmap-updates)中可以得知Java SE 8的商業支援和更新從2025年3月擴充套件到至少2030年12月(比Java11的支援時間都長呢),而且2020年12月起,Oracle無限期擴充套件了個人(非商業)使用Java SE 8的更新的可用性。 ## 非LTS 非LTS版本被認為是最新LTS版本的累積實施增強集合。一旦提供了新功能,任何以前的非LTS版本都將被視為已取代。例如,Java SE 9是非LTS發行版,並立即被Java SE 10(也包括非LTS)取代,Java SE 10反過來又立即被Java SE 11取代。然而,Java SE 11是LTS發行版,因此即使Java SE 12已釋出,Oracle客戶仍將獲得Oracle Premier Support和定期更新版本。 ↑是的,上面這段話是我扒的[Oracle Java SE 支援路線圖](https://www.oracle.com/java/technologies/java-se-support-roadmap.html)裡面的原話。 2017年起Oracle就將Java SE的釋出頻率提高到每六個月一次,多在每年的三月和九月,且非LTS的每一版的支援時間也只有六個月。 這是個什麼意思呢?或許這裡直接上一張圖會更直觀一些: ![](https://img2020.cnblogs.com/blog/2227100/202012/2227100-20201202185729307-368453244.png) 所謂沒有對比就沒有傷害,非LTS版更像是實驗版,每一版都會把上一版取代,就像實驗不停的優化的過程,直到出現了一版LTS。 它定然是總結了前幾版非LTS的優點與不足,而推出的穩定版。LTS與LTS之間是不能被取代的,就像JDK8與JDK11之間的關係一樣,雖然JDK11在JDK8之後推出,但從目前為止的Java SE支援路線圖可以看出,顯然JDK8目前為止更受歡迎。 當然說這一段話也並沒有讓你在JDK11與JDK8之間選擇JDK8的意思。相反,由於Java的向下相容能力,只要你使用的不是JDK8獨有的方法或類,在JDK11中一樣能執行。反正Java始終對個人(非商用)提供免費支援,個人覺得:我們用於學習的話,自然是最新的LTS版最香咯。 # Java CPU與PSU 簡單來說,CPU是奇數版,比如:Java SE 8u201。PSU是偶數版,比如:Java SE8u202。 那奇數版更好呢,還是偶數版更好? 這一點官方資料[Java CPU和PSU版本說明](https://www.oracle.com/java/technologies/cpu-psu-explained.html)裡面已經講得很清楚了。它反覆反覆地說了,官方推薦奇數版。 ![](https://img2020.cnblogs.com/blog/2227100/202012/2227100-20201202185758893-1389150898.png) ![](https://img2020.cnblogs.com/blog/2227100/202012/2227100-20201202185813238-565441303.png) 毫無疑問,官方都這麼說了,就不要糾結了,奇數版——選它。 # Java SE、Java EE、Java ME的區別 ## Java SE [Java SE(Java Platform Standard Edition,Java 平臺標準版)](https://baike.baidu.com/item/JAVA%20SE/4662159)以前稱為 J2SE,它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的 Java 應用程式。Java SE 包含了支援 Java Web 服務開發的類,併為 Java EE 提供基礎,如 Java 語言基礎、[JDBC](https://baike.baidu.com/item/Java%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5/1173389?fr=aladdin) 操作、[I/O](https://baike.baidu.com/item/IO/5918?fr=aladdin) 操作、[網路通訊](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/9636548?fr=aladdin)以及[多執行緒](https://baike.baidu.com/item/%E5%A4%9A%E7%BA%BF%E7%A8%8B)等技術。 ## Java EE [Java EE(Java Platform Enterprise Edition,Java 平臺企業版)](https://baike.baidu.com/item/JavaEE/3066623?fr=aladdin)以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端 Java 應用程式。Java EE 是在 Java SE 基礎上構建的,它提供 Web 服務、元件模型、管理和通訊 API,可以用來實現企業級的面向服務體系結構(Service Oriented Architecture,SOA)和 [Web 2.0 ](https://baike.baidu.com/item/web2.0/97695?fr=aladdin)應用程式。 ## Java ME [Java ME(Java Platform Micro Edition,Java 平臺微型版)](https://baike.baidu.com/item/Java%20ME?fromtitle=Javame&fromid=2106282)以前稱為 J2ME,也叫 K-JAVA。 Java ME 為在移動裝置和嵌入式裝置(比如手機、PDA、電視機頂盒和印表機)上執行的應用程式提供一個健壯且靈活的環境。 Java ME 包括靈活的使用者介面、健壯的安全模型、豐富的內建網路協議以及對可以動態下載的聯網和離線應用程式。基於 Java ME 規範的應用程式 只需編寫一次就可以用於許多裝置,而且可以利用每個裝置的本機功能。 關於Java SE、Java EE和Java ME是直接扒的[HeavenZhi的碼農飛昇記](https://www.cnblogs.com/HeavenZhi/p/14075331.html) 以上呢就是全部內容了,886 引用或轉載請註明出處。