為什么還有人用java8?
Java的升級迭代越來越快,Java 8之后,每半年差不多一個(gè)版本,讓人眼花繚亂,但其顛覆性的技術(shù),對研發(fā)人員的吸引力不夠,做簡單的demo還好,但若單純追求技術(shù),風(fēng)險(xiǎn)太高,如果使用于生產(chǎn)環(huán)境,就是更遙遠(yuǎn)的事情了。
Java 9引入了模塊化系統(tǒng),這是個(gè)看起來很美的特性,可是對程序員來說,這是一個(gè)破壞性的更新,因?yàn)镴DK做了模塊化,但是很多第三方庫沒有做模塊化, 如果想讓自己的項(xiàng)目也模塊化,很有可能是一次不斷填坑的經(jīng)歷,尤其在使用第三方庫的時(shí)候。Java 11的ZGC是個(gè)有吸引力的特性,它的設(shè)計(jì)目標(biāo)是:支持TB級內(nèi)存容量,GC暫停時(shí)間低(<10ms),對整個(gè)程序吞吐量的影響小于15%,確實(shí)挺讓人激動的!如果真的實(shí)現(xiàn)了,程序員就可以可勁兒造對象,而不用考慮GC了,可惜這仍然是個(gè)實(shí)驗(yàn)性質(zhì)的版本,缺乏技術(shù)支撐的穩(wěn)定性和線上業(yè)務(wù)的高并發(fā)檢驗(yàn), 用起來還是需要一定勇氣的。
就個(gè)人觀點(diǎn)而言,保持線上 jdk 版本維持現(xiàn)狀的主要原因有:
1. java8之后,jdk升級迭代的周期縮短,所以同樣6個(gè)版本,java8到j(luò)ava14和java2到j(luò)ava8的性質(zhì)是完全不同的。
2. Java8后的除了模塊化缺乏顛覆性的新特性,個(gè)人研究可以,生產(chǎn)環(huán)境使用動力不足。
3. jdk官方雖然宣稱向前兼容,但是由于java中大量框架的使用,無法保證升級后一定沒有問題,一旦有問題,排查成本異常高,引起的線上問題也是需要擔(dān)責(zé)的。
4. 線上運(yùn)行的jdk版本經(jīng)過了時(shí)間和業(yè)務(wù)的檢驗(yàn),在非特別必要的條件下,保持現(xiàn)狀是最好的選擇。新項(xiàng)目中可以使用新版本,但也需要和團(tuán)隊(duì)技術(shù)棧保持一致,個(gè)人感覺jdk8已夠用。
總的來說,jdk升級是有風(fēng)險(xiǎn)的,包與包兼容向下兼容需要全量功能回歸檢驗(yàn),相較于錦上天花,升級帶來的兼容性和線上問題,讓研發(fā)感覺維持現(xiàn)狀是最好的選擇。
作者:夕陽雨晴,歡迎關(guān)注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。