中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

為什么程序員都不愿意升級(jí) Java 8?

2021-02-07    分類: 網(wǎng)站建設(shè)

【CSDN 編者按】不說(shuō) Android,Java 本身都很碎片化。盡管 Java 升級(jí)換代,但于開(kāi)發(fā)者來(lái)說(shuō),還是緊緊地抱著 Java 8 不放。這是為什么呢?一起來(lái)看。


作者 | Trisha Gee

譯者 | 彎月

責(zé)編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

近日的調(diào)查結(jié)果顯示,絕大多數(shù)開(kāi)發(fā)人員的主要應(yīng)用程序中使用的還是 Java 8。

在Java 8之前,用戶接受更高版本的Java的過(guò)程非常緩慢,特別是在企業(yè)中,因?yàn)樵谏a(chǎn)環(huán)境中接受新版本Java非常困難。而引入了Lambda表達(dá)式和流的Java 8對(duì)許多開(kāi)發(fā)人員來(lái)說(shuō)都非常有吸引力。同時(shí),微服務(wù)、持續(xù)發(fā)布實(shí)踐和更好的自動(dòng)化測(cè)試也讓接受新版本語(yǔ)言變得更容易,風(fēng)險(xiǎn)比以前更小。

那么,鑒于這些因素,為什么從Java 9開(kāi)始每年兩次發(fā)布新版本的情況下,開(kāi)發(fā)人員還在堅(jiān)持使用Java 8呢?目前Java最新的版本是Java 12,然而很少有人使用9~12的版本。

估計(jì)你能猜到這其中的原因:“很復(fù)雜”。Java 8之后的版本發(fā)生了很多變化,這可能會(huì)導(dǎo)致各個(gè)公司在Java升級(jí)上舉棋不定。

6 個(gè)月一次的發(fā)布節(jié)奏

從2017年9月發(fā)布Java 9開(kāi)始,Oracle每六個(gè)月就會(huì)發(fā)布一個(gè)新版本的JDK,具體來(lái)說(shuō)是每年的三月和九月?,F(xiàn)在持續(xù)發(fā)布大行其道,所以一門語(yǔ)言一改以往三年發(fā)布一次的做法,轉(zhuǎn)而采用更快的發(fā)布速度,這也完全合情合理。

在新的發(fā)布節(jié)奏下,不會(huì)再出現(xiàn)每幾年發(fā)布一大堆功能的情況(伴隨著風(fēng)險(xiǎn)極高的大型升級(jí)),而是在預(yù)定的日期內(nèi)推出更小的發(fā)布。當(dāng)然,這些發(fā)布包含的功能會(huì)少很多,但這種方式有幾個(gè)好處:

  1. 方便計(jì)劃。預(yù)定的發(fā)布節(jié)奏不僅方便了語(yǔ)言開(kāi)發(fā)者,也方便使用者制定升級(jí)計(jì)劃。
  2. 更高的質(zhì)量。更頻繁的發(fā)布意味著如果某次發(fā)布中某個(gè)功能沒(méi)有做好,就會(huì)被推遲到下一次發(fā)布。因此,語(yǔ)言開(kāi)發(fā)者的壓力更小,不需要趕工完成功能,因此每次發(fā)布的質(zhì)量更高。
  3. 穩(wěn)定的新功能來(lái)源。以前是每三年一次巨大的更新,而現(xiàn)在可以持續(xù)地獲得更新,包括語(yǔ)言特性、垃圾收集器的變化和性能改善。

如此快的發(fā)布節(jié)奏也可能造成的負(fù)面影響,例如許多組織根本跟不上六個(gè)月一次的升級(jí)節(jié)奏。這一點(diǎn)也在考慮中,因?yàn)镺racle也會(huì)受到這個(gè)影響。

長(zhǎng)期支持版

Oracle不愿意像以前每三年發(fā)布一個(gè)版本時(shí)那樣支持每個(gè)舊版本,這樣做的成本太高。


如果Oracle每六個(gè)月發(fā)布的版本都要支持三年,那么在2020年前后他們就要支持六個(gè)不同的版本!

相反,他們說(shuō)每三年會(huì)有一個(gè)“長(zhǎng)期支持的版本”(Long Term Support release,簡(jiǎn)稱LTS),該版本會(huì)提供為期三年的支持。Java 8是一個(gè)LTS,當(dāng)前的LTS是Java 11,下一個(gè)應(yīng)該是Java 17。


Oracle每三年選擇一個(gè)版本提供長(zhǎng)期支持和更新,其他版本僅支持六個(gè)月。

但是,兩個(gè)LTS之間的版本在下一個(gè)版本發(fā)布時(shí)就會(huì)失去支持。這就是說(shuō),Java 10會(huì)替代Java 9,而Java 11發(fā)布時(shí)又會(huì)替代Java 10。


開(kāi)發(fā)人員在升級(jí)Java 8時(shí)一般會(huì)直接升級(jí)到Java 11。

這就是如今出現(xiàn)這種局面的原因,一般來(lái)說(shuō),人們不會(huì)使用Java 9或10。就算他們用過(guò),應(yīng)該也都升級(jí)到了Java 11。

短期版本應(yīng)該在新版本發(fā)布后立即升級(jí),長(zhǎng)期版本會(huì)支持至少三年,因此現(xiàn)在有兩種主要的升級(jí)途徑:

  1. 每六個(gè)月新版本一出來(lái)就升級(jí)。這意味著每六個(gè)月就要使用最新版本。這樣做的好處是能夠立即獲得新的語(yǔ)言特性,但這種方式通常只適合那些習(xí)慣于迅速升級(jí)技術(shù)棧的人們。
  2. 只升級(jí)長(zhǎng)期支持版本。對(duì)于Java開(kāi)發(fā)人員來(lái)說(shuō)這種節(jié)奏更為熟悉。這種升級(jí)有三年一次大型升級(jí)的缺點(diǎn),但人們有更多時(shí)間來(lái)評(píng)價(jià)這種升級(jí)帶來(lái)的風(fēng)險(xiǎn)。

也許還有一個(gè)折中的辦法:在生產(chǎn)環(huán)境中使用LTS版本,同時(shí)在CI中確保應(yīng)用程序能在每六個(gè)月一次的新版本上運(yùn)行。這樣既能將大型升級(jí)的風(fēng)險(xiǎn)降到最低,同時(shí)還能維護(hù)生產(chǎn)環(huán)境要求的穩(wěn)定性。

授權(quán)變化

長(zhǎng)期支持版本有個(gè)問(wèn)題。Oracle的立場(chǎng)是,如果你需要長(zhǎng)達(dá)三年的支持和更新,就應(yīng)當(dāng)考慮為其付費(fèi)。所以,如果你想使用LTS版本并要求三年的支持,就要為Oracle的商業(yè)版JDK付費(fèi)。

但是,Oracle也認(rèn)識(shí)到并不是每個(gè)人都愿意付費(fèi),而且許多人更喜歡用開(kāi)源的方式工作,所以他們現(xiàn)在有兩個(gè)版本的JDK,其特性完全一樣,但授權(quán)不同。商業(yè)版JDK可以在開(kāi)發(fā)和測(cè)試中免費(fèi)使用,但在生產(chǎn)環(huán)境中使用則需要付費(fèi);還有一個(gè)完全免費(fèi)的OpenJDK版本。后者采用了開(kāi)源的GPLv2+CPE授權(quán),但其生命周期只有六個(gè)月。

從競(jìng)爭(zhēng)的觀點(diǎn)來(lái)看,這其實(shí)是好事。Oracle始終會(huì)將JDK中的功能移植到OpenJDK中,甚至還包括那些曾經(jīng)用于商業(yè)版的功能,如Java Flight Recorder和Java Mission Control等。所以,由OpenJDK產(chǎn)生的一切JDK(也是絕大部分人都在使用的JDK)會(huì)包含你曾經(jīng)用過(guò)的一切特性,甚至還會(huì)包括一些你沒(méi)用過(guò)的特性。

還有許多其他供應(yīng)商提供JDK。大部分是免費(fèi)的,部分JDK的支持時(shí)間和期限與Oracke JDK不一樣。這篇文檔(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview#heading=h.xn49s5cqkp4j)列出了不同的選項(xiàng),并按照可以免費(fèi)使用、必須擁有商業(yè)授權(quán)才能使用的方式分類。如果這些信息難以消化,那么最好的方法就是下載AdoptOpenJDK(https://adoptopenjdk.net/)構(gòu)建的OpenJDK。這個(gè)JDK與Oracle JDK完全兼容,而且主要的操作系統(tǒng)和平臺(tái)上都有,你可以選擇不同的JVM(Hotspot或OpenJ9),他們還承諾為L(zhǎng)TS版本提供至少四年的支持,而且還可以購(gòu)買商業(yè)支持。

由于這個(gè)話題可能會(huì)非常復(fù)雜,我強(qiáng)烈建議閱讀Java Champion的這篇文章《Java Is Still Free》(https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview),文中提供了更詳細(xì)的信息。

總結(jié)

從Java 8發(fā)布之后許多情況都發(fā)生了改變:六個(gè)月一次的更新;授權(quán)、更新和支持的變化,以及JDK的獲取途徑等。在此之上還有語(yǔ)言變化,包括那些Java 9中引入的主要變化。

雖然這些變化讓人頭暈?zāi)垦?,但其目的是為了給世界上最流行的語(yǔ)言提供高質(zhì)量、頻繁且在計(jì)劃內(nèi)的更新,同時(shí)讓負(fù)責(zé)該語(yǔ)言的人能夠持續(xù)做下去。

我們需要理解,這些改變可能會(huì)影響你的應(yīng)用程序和組織,通過(guò)學(xué)習(xí)如何接受這些變化,最終會(huì)讓你接受Java 8以及其后每六個(gè)月一次的新版本中引入的改進(jìn)。

分享標(biāo)題:為什么程序員都不愿意升級(jí) Java 8?
鏈接分享:http://www.rwnh.cn/news/99626.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站虛擬主機(jī)、網(wǎng)站策劃微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
五莲县| 信阳市| 南乐县| 普安县| 开鲁县| 淅川县| 治县。| 淅川县| 黄陵县| 康马县| 陇川县| 洛扎县| 巍山| 岫岩| 韶山市| 辉县市| 莒南县| 江陵县| 双辽市| 阜城县| 哈密市| 平度市| 皮山县| 乌兰县| 西青区| 贺兰县| 镇康县| 木里| 新兴县| 武汉市| 上林县| 响水县| 梁平县| 大石桥市| 大丰市| 礼泉县| 宜宾市| 赣榆县| 哈巴河县| 瑞金市| 桐城市|