為什麼java的jdk已經更新到了15,但是身邊很多人還用的jdk8呢?

時間 2021-05-05 12:48:51

1樓:Alex Yang

看起來好像版本差很多,其實不然。現在是6個月乙個小版本,按照以前的習慣,可以這樣理解。

jdk9相當於jdk8.1

jdk10相當於jdk8.2

jdk11相當於jdk9(lts版本哦)

jdk15相當於jdk9.4

jdk16相當於jdk9.5(最新發布)

jdk17相當於jdk10(lts版本,2021下半年發布)以此類推

2樓:xieeliandao

你這個問題可以參考之前的為啥jdk已經到11了身邊很多人還用的6呢按照這個速度很快就能用11了等jdk到了19 就能用15了

3樓:

大多數回答其實都跑題了。

其實最大的乙個原因就是,現在版本的發布和以前不一樣了,更快了。

而且,jdk8並不是發布後馬上就用起來的,所以比如在2023年左右,各個公司陸續換上jdk1x,我覺得就很正常了。

4樓:迷途書童

出於穩定的需要,對於越大的專案越是這樣。穩定壓倒一切。

如果你是公司的CTO, JDK8正常執行了好多年,你換成JDK15, 出問題了,你想背鍋嗎?

5樓:

有些人裝什麼糊塗呢?

技術永無止境,技術更高活兒更多,工資卻不能等比增加。

整天吹時刻學習的都是些什麼人呢?有這精力我搞點副業歪心思賺更多錢不好嗎?

6樓:

因為沒人給我發錢讓我公升級啊!

線上系統,穩定大於一切,你公升級jdk, 越是大的系統,成本越是高,因為要涉及開發,測試,運維多個崗位,這些人的工資可不是小數目。

另乙個問題是你幸苦公升級好了,並不會帶來什麼質的改變,由於jdk實現問題,整個系統穩定性說不定還會下降,開發者的這段時間的kpi怎麼辦?

如果公升級jdk當kpi,我保證抱著十二萬的熱情來公升級。現在麼,就這麼湊合唄。當然,開發新服務還是可以上新jdk的,但問題是絕大多的程式設計師都是在現有系統上修修補補而已。

7樓:強渡易北河

因為現有的dependency很多都是在老jdk的基礎上開發的,很多dependency疊床架屋,依賴關係非常複雜。你改了乙個project的jdk,且不論configuration 的修改是乙個大工程,即使成功改了configuration, 你也不能保證未來某個corner case 會不會因為jdk的更改而break,除非這個project從頭到尾都有乙個人在負責開發。

不改可能只有乙個問題,改了可能有無數的問題。

8樓:天霧杏璃

如果是完全新的系統還有可能公升級新的jdk,如果是現存系統公升級jdk需要花費多大力氣,需要全回歸測試才放心,花那麼多成本,實際獲得的收益卻是0

9樓:核桃君

這個問題可以從另外乙個主流工具的使用上得到答案,為什麼現在還有很多企業沒有上k8s,尤其是to G行業的?

想一想就知道了,想公升級idk,那麼最好的版本是上了容器化和微服務化的,這樣迭代公升級成本沒那麼高,但是如果沒有上k8s或者docker的,你試試公升級?還有更麻煩的.

第一家公司給電信運營商幹活的,當時做乙個大資料專案,集群不歸我們管控,是甲方上研院管的,能用jdk8已經很棒了,還指望用更高版本,知道那上千臺機器公升級,那幫大爺要搞多久嗎?還有牽扯的服務多少嗎?

10樓:塗景鑠

很簡單的原因就是1.8支援的東西相對最全,工作都是要賺錢啊,要穩定啊。

公升級後,配套的依賴跟不上怎麼搞,到時這個問題那個問題的,不是沒事找事麼?

11樓:過期的白菜

你現在有乙個程式,基於jdk8的,它已經部署在生產了,它每天要處理幾千萬的交易,然後你現在突發奇想,說要公升級11,請問誰來擔這個責。

12樓:哎喲哥哥

沒有人說到點子上,我是架構師,我不允許團隊絕對不會用11,因為有var。1.8足夠使用了。

花裡花俏的寫法請用Python.nodejs,我的目標是大學習生都能開發。所以不能允許有花裡花俏的語法

13樓:明國賓

絕大多數的公司是以業務為主,既然現有的版本已經滿足使用,何必公升級呢!

絕大多數打工人就是為了賺錢,我憑什麼做吃力不討好的事兒?

14樓:

主要原因是現有應用使用的就是 JDK8,在運營的應用為了穩定性很少公升級版本的,大多數時也不需要公升級。

另乙個學習成本高吧,版本高的主要是新增了很多特性或功能,這些增加了學習新特性的成本,但是這些在一般的開發中使用不到,或者可以通過其他途徑解決,周圍學習的人也不多。

15樓:kagada

jdk11不能執行flutter那個獲取安卓license的命令,搞了一晚上試了各種g站搜的回答沒搞定。

最後裝jdk8解決了,以後都用jdk8了,針不戳

16樓:

商用角度,看的是投入產出

無疑新版的jdk必然有一些bug修復以及feature,但用與不用,主要取決於 「公升級的成本」和「公升級帶來的收益」

大部分情況來說,公升級帶來的收益有限(因新特性幾乎沒用到)而公升級的成本很高(各種功能/效能測試,以及客戶環境的更新等等),因而,大部分情況下,是選擇了乙個相對穩定的版本後,很少去進行公升級更新的動作。

也因為如此,個人玩玩的無所謂,公升級到最新版也沒什麼毛病,而企業往往是權衡之後再動。

17樓:starline

最主要到是成本問題,還看行業需求。

比如銀行的專案或者金融類的專案,你敢追新的嗎?我們公司做計費的,jdk6生8都花了很大一部分功夫,中介軟體能包裝的全都是要經過包裝的,你jdk版本一換,是不是所有的中介軟體都需要重新開發一次?開源的直接用,出了漏洞怎麼處理?

更新版本?你這邊版本一更新,整條依賴鏈是不是又要更新?是不是又要測試?

而且大型系統一開發就開發十幾個月,後續還有維護的成本,說更新就更新你不賺錢了啊?

新的專案新的公司或者小型專案當然能更新就更新了,元件開源的又不需要自己包裝。能用新的肯定用新的,但你要是jdk15再換jdk25就沒幾個公司敢。

那些說不思進取的,哪天你們開個公司弄個大點的專案看看,最好是那種千萬到億的。你們要是鼓勵追新,敢把jdk8換成jdk15,不止這台顯示器,網咖的顯示器我全吃了。

總而言之,專案不夠大,替換的成本不高,能追新自然會追新,但你要是整個結構成體系了,還是穩點好,免得大家都沒飯吃。

18樓:AlbertChan

對於企業來說還是穩定性吧,一般都用LTS的版本,另外在8的版本下做的開發,遷移到新版本,要做測試吧,依賴的類庫都支援新版本了沒?有些還需要做改動吧,成本也不低。對於個人,折騰新版本,了解新特性,跟緊步伐學習是好事,沒問題。

19樓:艾迪

如果是新專案,那用 jdk15 挺好。

老專案一般各種依賴都比較多,有些框架僅在jdk8下做過較多測試,上個 jdk15 沒有可見的好處,壞處倒是很可能出現。自然沒有動力去換了。

折騰開發環境、折騰依賴、倒騰編譯有助於工程實踐、積累經驗。但是這類經驗通常過一段時間就忘了,也不會給能力的提公升增加多少份額。

如果專案依賴不多,折騰一下也可以。總之目前看起來收益不多。

20樓:evil double

這麼說吧,插入排序,隨機插入10w資料,jdk8效能比jdk15快一倍。如果jdk15簡單調優下,改用下預設的gc,效能又回到jdk8的效能了。你覺得jdk15到底還有多少類似的future呢?

不是每個人都喜歡jvm調優的,相反,預設怎麼也得在大多數情況下最好吧。。。。

21樓:

兩方面考量,乙個是相對來講15還是出來時間太短,直接專案開發使用風險太大。二是關聯的很多第三方系統支援程度。

目前其實是可以用11來開發新專案了,但是15實在太早了,總不能放著很多現成工具包不用從零開始搭吧。

同理,向前推幾年的時候11才剛出來,那個時候專案選型用jdk8已經挺新的了。而現在市面上成熟的軟體基本都是有幾年歷史的,使用jdk8很正常。

最後就是將現有版本公升級問題,專案要是大了那絕對不是乙個團隊能決定的事。關聯的中介軟體,一些已經無人維護的基礎部件等等都是阻礙。CTO在考量這事的時候都要想想需要損耗多少的資源才能完成,是否必要,是否合算。

就說實際一點的,萬一公升級後業務掛了導致技術部全體績效被影響年終減半你作為開發人員會不會有意見。

22樓:notreami

能決策生不生級的老古董,不想學新技術,又不想讓下面的人學技術而已……

什麼沒收益成本高,依賴不支援,環境有問題等等……不就是懶……

23樓:li salomon

道理我都懂,我說個有意思的,前幾天我電腦到期換新的,新電腦預設brew一通亂裝,jdk預設就給裝了15,而後幾天開啟jmeter失敗,開啟luyten失敗,給我煩的,切換回8,世界安靜了…

24樓:佐玄

原因很簡單,因為現在大部分專案都是8版本做的,如果要修改這些專案的話,那得重新花時間來開發,如果要重構專案的話更好花錢,花時間重構專案,企業都是資本主義,不可能會願意花這個錢。

問下JDK的乙個設計問題,為什麼JDK要throw出那些執行時異常,這些不是可以自動丟擲的嗎?

李冰 開發時有幾個很重要的潛規則。1,不要用系統自動throw exception,一定要自己來。換句話說,你要清楚的知道每乙個可能出現的錯誤是什麼,為什麼。2,如果你所開發的專案是面向普通客戶而不是開發者的 也就是不是lib,API什麼的 所有的exception你都要handle。 feiyu1...

同乙個 Java 檔案用不同的 jdk 編譯出的 class 檔案是一樣的嗎?

魯嚴波 不同廠商的jdk,甚至是同廠商的不同jdk版本,都有可能生成不同的class檔案。首先,不管你用的是哪個jdk,編譯出來的檔案都是互相相容的,不管你是呼叫別人的方法 還是引用別人的常量,都是可以執行的。需要注意的是,使用反射的話,有可能會有不相容。然後,我們來看下class檔案會在哪兒變化 ...

jdk1 8中為什麼說hashMap併發問題?

看雲 1.8雖然沒有了死鏈的問題,但還是存在size 問題,size不是原子操作,想想自己可以寫乙個多執行緒對乙個靜態變數做自增操作看出來的結果跟想的是不是一樣即可 Learner 文件裡都說不是執行緒安全的,然後非要在多執行緒環境下用,出了問題各種分析 告訴你前面有地雷,走過去炸死了,不斷分析為什...