不說 Android,Java 本身都很碎片化,盡管 Java 升級換代,但于開發者來說,還是緊緊地抱著 Java 8 不放,這是為什么呢?一起來看下吧,
以下為譯文:
近日的調查結果顯示,絕大多數開發人員的主要應用程式中使用的還是 Java 8,

資料來源:https://snyk.io/blog/jvm-ecosystem-report-2018/
在Java 8之前,用戶接受更高版本的Java的程序非常緩慢,特別是在企業中,因為在生產環境中接受新版本Java非常困難,
而引入了Lambda運算式和流的Java 8對許多開發人員來說都非常有吸引力,同時,微服務、持續發布實踐和更好的自動化測驗也讓接受新版本語言變得更容易,風險比以前更小,
那么,鑒于這些因素,為什么從Java 9開始每年兩次發布新版本的情況下,開發人員還在堅持使用Java 8呢?目前Java最新的版本是Java 12,然而很少有人使用9~12的版本,推薦:Java 12 正式發布,8大新特性!
估計你能猜到這其中的原因:“很復雜”,Java 8之后的版本發生了很多變化,這可能會導致各個公司在Java升級上舉棋不定,
6 個月一次的發布節奏
從2017年9月發布Java 9開始,Oracle每六個月就會發布一個新版本的JDK,具體來說是每年的三月和九月,現在持續發布大行其道,所以一門語言一改以往三年發布一次的做法,轉而采用更快的發布速度,這也完全合情合理,
在新的發布節奏下,不會再出現每幾年發布一大堆功能的情況(伴隨著風險極高的大型升級),而是在預定的日期內推出更小的發布,當然,這些發布包含的功能會少很多,但這種方式有幾個好處:
-
方便計劃,預定的發布節奏不僅方便了語言開發者,也方便使用者制定升級計劃,
-
更高的質量,更頻繁的發布意味著如果某次發布中某個功能沒有做好,就會被推遲到下一次發布,因此,語言開發者的壓力更小,不需要趕工完成功能,因此每次發布的質量更高,
-
穩定的新功能來源,以前是每三年一次巨大的更新,而現在可以持續地獲得更新,包括語言特性、垃圾收集器的變化和性能改善,
如此快的發布節奏也可能造成的負面影響,例如許多組織根本跟不上六個月一次的升級節奏,這一點也在考慮中,因為Oracle也會受到這個影響,
長期支持版
Oracle不愿意像以前每三年發布一個版本時那樣支持每個舊版本,這樣做的成本太高,

如果Oracle每六個月發布的版本都要支持三年,那么在2020年前后他們就要支持六個不同的版本!
相反,他們說每三年會有一個“長期支持的版本”(Long Term Support release,簡稱LTS),該版本會提供為期三年的支持,Java 8是一個LTS,當前的LTS是Java 11,下一個應該是Java 17,

Oracle每三年選擇一個版本提供長期支持和更新,其他版本僅支持六個月,
但是,兩個LTS之間的版本在下一個版本發布時就會失去支持,這就是說,Java 10會替代Java 9,而Java 11發布時又會替代Java 10,推薦:Java 10 最重要的 5 個新特性!

開發人員在升級Java 8時一般會直接升級到Java 11,
這就是如今出現這種局面的原因,一般來說,人們不會使用Java 9或10,就算他們用過,應該也都升級到了Java 11,推薦閱讀:Java 11 正式發布,這 8 個逆天新特性教你寫出更牛逼的代碼,
短期版本應該在新版本發布后立即升級,長期版本會支持至少三年,因此現在有兩種主要的升級途徑:
-
每六個月新版本一出來就升級,這意味著每六個月就要使用最新版本,這樣做的好處是能夠立即獲得新的語言特性,但這種方式通常只適合那些習慣于迅速升級技術堆疊的人們,
-
只升級長期支持版本,對于Java開發人員來說這種節奏更為熟悉,這種升級有三年一次大型升級的缺點,但人們有更多時間來評價這種升級帶來的風險,
也許還有一個折中的辦法:在生產環境中使用LTS版本,同時在CI中確保應用程式能在每六個月一次的新版本上運行,這樣既能將大型升級的風險降到最低,同時還能維護生產環境要求的穩定性,
授權變化
長期支持版本有個問題,Oracle的立場是,如果你需要長達三年的支持和更新,就應當考慮為其付費,所以,如果你想使用LTS版本并要求三年的支持,就要為Oracle的商業版JDK付費,
但是,Oracle也認識到并不是每個人都愿意付費,而且許多人更喜歡用開源的方式作業,所以他們現在有兩個版本的JDK,其特性完全一樣,但授權不同,
商業版JDK可以在開發和測驗中免費使用,但在生產環境中使用則需要付費;還有一個完全免費的OpenJDK版本,后者采用了開源的GPLv2+CPE授權,但其生命周期只有六個月,
從競爭的觀點來看,這其實是好事,Oracle始侄訓將JDK中的功能移植到OpenJDK中,甚至還包括那些曾經用于商業版的功能,如Java Flight Recorder和Java Mission Control等,
所以,由OpenJDK產生的一切JDK(也是絕大部分人都在使用的JDK)會包含你曾經用過的一切特性,甚至還會包括一些你沒用過的特性,
還有許多其他供應商提供JDK,大部分是免費的,部分JDK的支持時間和期限與Oracke JDK不一樣,這篇檔案(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview#heading=h.xn49s5cqkp4j)列出了不同的選項,并按照可以免費使用、必須擁有商業授權才能使用的方式分類,
如果這些資訊難以消化,那么最好的方法就是下載AdoptOpenJDK(https://adoptopenjdk.net/)構建的OpenJDK,這個JDK與Oracle JDK完全兼容,而且主要的作業系統和平臺上都有,你可以選擇不同的JVM(Hotspot或OpenJ9),他們還承諾為LTS版本提供至少四年的支持,而且還可以購買商業支持,
由于這個話題可能會非常復雜,我強烈建議閱讀Java Champion的這篇文章《Java Is Still Free》(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview),文中提供了更詳細的資訊,
總結
從Java 8發布之后許多情況都發生了改變:六個月一次的更新;授權、更新和支持的變化,以及JDK的獲取途徑等,在此之上還有語言變化,包括那些Java 9中引入的主要變化,
雖然這些變化讓人頭暈目眩,但其目的是為了給世界上最流行的語言提供高質量、頻繁且在計劃內的更新,同時讓負責該語言的人能夠持續做下去,
我們需要理解,這些改變可能會影響你的應用程式和組織,通過學習如何接受這些變化,最侄訓讓你接受Java 8以及其后每六個月一次的新版本中引入的改進,
關注Java技術堆疊微信公眾號,在后臺回復關鍵字:Java,可以獲取一份堆疊長整理的 Java 8-12 新特性干貨,
作者 | Trisha Gee
原文:https://dzone.com/articles/beyond-java-8
譯者 | 彎月 責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
關注公眾號Java技術堆疊回復"面試"獲取我整理的2020最全面試題及答案,
推薦去我的博客閱讀更多:
1.Java JVM、集合、多執行緒、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、后端、架構、阿里巴巴等大廠最新面試題
覺得不錯,別忘了點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/138757.html
標籤:Java
上一篇:Java自學-JDBC 事務
