2021-02-07 分類: 網(wǎng)站建設
【CSDN 編者按】不說 Android,Java 本身都很碎片化。盡管 Java 升級換代,但于開發(fā)者來說,還是緊緊地抱著 Java 8 不放。這是為什么呢?一起來看。
作者 | Trisha Gee
譯者 | 彎月
責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下為譯文:
近日的調(diào)查結(jié)果顯示,絕大多數(shù)開發(fā)人員的主要應用程序中使用的還是 Java 8。
在Java 8之前,用戶接受更高版本的Java的過程非常緩慢,特別是在企業(yè)中,因為在生產(chǎn)環(huán)境中接受新版本Java非常困難。而引入了Lambda表達式和流的Java 8對許多開發(fā)人員來說都非常有吸引力。同時,微服務、持續(xù)發(fā)布實踐和更好的自動化測試也讓接受新版本語言變得更容易,風險比以前更小。
那么,鑒于這些因素,為什么從Java 9開始每年兩次發(fā)布新版本的情況下,開發(fā)人員還在堅持使用Java 8呢?目前Java最新的版本是Java 12,然而很少有人使用9~12的版本。
估計你能猜到這其中的原因:“很復雜”。Java 8之后的版本發(fā)生了很多變化,這可能會導致各個公司在Java升級上舉棋不定。
6 個月一次的發(fā)布節(jié)奏
從2017年9月發(fā)布Java 9開始,Oracle每六個月就會發(fā)布一個新版本的JDK,具體來說是每年的三月和九月。現(xiàn)在持續(xù)發(fā)布大行其道,所以一門語言一改以往三年發(fā)布一次的做法,轉(zhuǎn)而采用更快的發(fā)布速度,這也完全合情合理。
在新的發(fā)布節(jié)奏下,不會再出現(xiàn)每幾年發(fā)布一大堆功能的情況(伴隨著風險極高的大型升級),而是在預定的日期內(nèi)推出更小的發(fā)布。當然,這些發(fā)布包含的功能會少很多,但這種方式有幾個好處:
如此快的發(fā)布節(jié)奏也可能造成的負面影響,例如許多組織根本跟不上六個月一次的升級節(jié)奏。這一點也在考慮中,因為Oracle也會受到這個影響。
長期支持版
Oracle不愿意像以前每三年發(fā)布一個版本時那樣支持每個舊版本,這樣做的成本太高。
如果Oracle每六個月發(fā)布的版本都要支持三年,那么在2020年前后他們就要支持六個不同的版本!
相反,他們說每三年會有一個“長期支持的版本”(Long Term Support release,簡稱LTS),該版本會提供為期三年的支持。Java 8是一個LTS,當前的LTS是Java 11,下一個應該是Java 17。
Oracle每三年選擇一個版本提供長期支持和更新,其他版本僅支持六個月。
但是,兩個LTS之間的版本在下一個版本發(fā)布時就會失去支持。這就是說,Java 10會替代Java 9,而Java 11發(fā)布時又會替代Java 10。
開發(fā)人員在升級Java 8時一般會直接升級到Java 11。
這就是如今出現(xiàn)這種局面的原因,一般來說,人們不會使用Java 9或10。就算他們用過,應該也都升級到了Java 11。
短期版本應該在新版本發(fā)布后立即升級,長期版本會支持至少三年,因此現(xiàn)在有兩種主要的升級途徑:
也許還有一個折中的辦法:在生產(chǎn)環(huán)境中使用LTS版本,同時在CI中確保應用程序能在每六個月一次的新版本上運行。這樣既能將大型升級的風險降到最低,同時還能維護生產(chǎn)環(huán)境要求的穩(wěn)定性。
授權(quán)變化
長期支持版本有個問題。Oracle的立場是,如果你需要長達三年的支持和更新,就應當考慮為其付費。所以,如果你想使用LTS版本并要求三年的支持,就要為Oracle的商業(yè)版JDK付費。
但是,Oracle也認識到并不是每個人都愿意付費,而且許多人更喜歡用開源的方式工作,所以他們現(xiàn)在有兩個版本的JDK,其特性完全一樣,但授權(quán)不同。商業(yè)版JDK可以在開發(fā)和測試中免費使用,但在生產(chǎn)環(huán)境中使用則需要付費;還有一個完全免費的OpenJDK版本。后者采用了開源的GPLv2+CPE授權(quán),但其生命周期只有六個月。
從競爭的觀點來看,這其實是好事。Oracle始終會將JDK中的功能移植到OpenJDK中,甚至還包括那些曾經(jīng)用于商業(yè)版的功能,如Java Flight Recorder和Java Mission Control等。所以,由OpenJDK產(chǎn)生的一切JDK(也是絕大部分人都在使用的JDK)會包含你曾經(jīng)用過的一切特性,甚至還會包括一些你沒用過的特性。
還有許多其他供應商提供JDK。大部分是免費的,部分JDK的支持時間和期限與Oracke JDK不一樣。這篇文檔(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview#heading=h.xn49s5cqkp4j)列出了不同的選項,并按照可以免費使用、必須擁有商業(yè)授權(quán)才能使用的方式分類。如果這些信息難以消化,那么最好的方法就是下載AdoptOpenJDK(https://adoptopenjdk.net/)構(gòu)建的OpenJDK。這個JDK與Oracle JDK完全兼容,而且主要的操作系統(tǒng)和平臺上都有,你可以選擇不同的JVM(Hotspot或OpenJ9),他們還承諾為LTS版本提供至少四年的支持,而且還可以購買商業(yè)支持。
由于這個話題可能會非常復雜,我強烈建議閱讀Java Champion的這篇文章《Java Is Still Free》(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview),文中提供了更詳細的信息。
總結(jié)
從Java 8發(fā)布之后許多情況都發(fā)生了改變:六個月一次的更新;授權(quán)、更新和支持的變化,以及JDK的獲取途徑等。在此之上還有語言變化,包括那些Java 9中引入的主要變化。
雖然這些變化讓人頭暈目眩,但其目的是為了給世界上最流行的語言提供高質(zhì)量、頻繁且在計劃內(nèi)的更新,同時讓負責該語言的人能夠持續(xù)做下去。
我們需要理解,這些改變可能會影響你的應用程序和組織,通過學習如何接受這些變化,最終會讓你接受Java 8以及其后每六個月一次的新版本中引入的改進。
新聞名稱:為什么程序員都不愿意升級 Java 8?
文章起源:http://www.rwnh.cn/news26/99626.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、建站公司、云服務器、企業(yè)建站、網(wǎng)站排名、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容