用jdk1 8還是用jdk11

2021-10-12 01:35:25 字數 1006 閱讀 3768

2023年年初,公司cto要求我們採用最新版本jdk,甚至直接使用最新版kotlin。前兩天(2023年12月),我把公司**公升級到了jdk11 lts版本,但不是最新版jdk。

如果不搞rocketmq,不會發現什麼問題,而且會感覺這是乙個很好的改進,編碼寫法改進了,甚至效能提高了……

然後,一搞rocketmq,發現:不說jdk11,甚至jdk9都無法讓最新版的rockemq起起來。

回想一下,這幾年,各個大廠都推出了自己的jdk版本,華為有自己的jdk、阿里有自己的jdk,但殊路同歸的是都用的是jdk1.8這個版本。要想用大廠優化過的jdk,或者要想用大廠出品的部分元件,你就得考慮你的jdk版本是否基於1.8的版本,比如:rocketmq。

我一直在想為什麼要從jdk1.8公升級到jdk11或者jdk14、15,難道jdk1.8不香嗎?

個人認為:jdk1.8依舊很香。因為,jdk1.8已經經過了6年的補丁修復,而oracle是注重口碑的大廠,它不會讓jdk1.8在補丁修復中加入新的漏洞。而jdk12、13、14才經過兩三年的維護,你知道jdk12、13、14或者jdk15中未修復的bug有多少嗎?你知道jdk15中未發現的漏洞有多少嗎?至少,我不知道。而,各個大廠更直接:推出了各自維護的jdk1.8的版本,並向openjdk貢獻**,這使得jdk1.8的漏洞更少,虛機也會更穩定。所以,我的建議是伺服器環境依舊採用jdk1.8,而不是冒進採用最新版jdk。

僅此發表一下本人的見解,僅此而已,並無他意。

2023年12月12日下午補充:

目前來看,完全可以採用jdk11了。當然,我的想法還是lts版本的jdk11,而不是最新版本的jdk。

而,rocketmq問題,如果不是原始碼開發,就只能暫時安裝兩個jdk(jdk8和jdk11)或者單獨搭建一台裝有jdk8的伺服器或者搭建乙個jdk8的docker映象來解決了,這可以拋給運維人員了。

當然,作為小廠,我的想法依舊是只採用大廠用過沒有問題或者已有解決方案的lts版本,而不是最新版本。

最後,上jdk11(lts)吧,同志們,大廠都有版本了,而且已經檢驗了一年了。

jdk1 8常用總結

1.查詢集合裡的第乙個物件 filter 例 查詢listlist 中username為小明的物件t list.stream filter findfirst 1 list.stream filter e 小明 equals e.getusername findfirst 2.查詢滿足條件的物件,並...

Java 方法引用(JDK1 8)

引用 物件引用,物件引用的本質在於為乙個物件起別名,即 不同的棧記憶體可以同時指向同一塊堆記憶體空間。與物件引用類似的情況是,方法引用,即 為方法設定別名。在jdk 1.8之中針對於方法引用提供有如下的四種形式 引用靜態方法 類名稱 static方法名稱 引用某個物件的方法 例項化物件 普通方法 引...

jdk1 8新增流式處理

stream 介面 流式處理給人的感覺 簡介很多,但可讀性不高,例如 listevens new arraylist for final integer num nums listevens nums.stream filter num num 2 0 collect collectors.toli...