首頁>科技>

從Java 9開始,Java版本的釋出就讓人眼花繚亂了。

每隔6個月,都會冒出一個新版本出來,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,Java 14就要來了。

說實話,這種頻繁的釋出有點兒讓人審美疲勞,每次我看到介紹Java新版本,新特性的文章也沒興趣點開看了。

在這麼多的版本中,只有Java 8, Java 11 和未來的Java 17 是長期支援版本(LTS),Oracle會支援3年,其他的只會支援6個月,新版本一出,就放棄老版本的技術支援。

這種快速的釋出有好處嗎?

有 ! 小步快跑一直是我們軟體開發的利器,採用迭代的方式,每次釋出一部分功能,推向開發人員去驗證,典型的敏捷思路。

但是這種好處更有利於JDK的開發者,對使用Java的個人和公司來說,想要跟上每六個月就要升級的步伐,實在是太難了。JDK是個非常核心的基礎設施, 除了安全漏洞,誰沒事去升級生產環境的JDK啊?出了問題誰負責?

所以,按道理講大家都會去找那些LTS的版本來升級,例如Java 11, 但是事實證明大部分人還在固守Java 8 :

這個調查顯示,使用Java 8的公司和程式設計師高達80%, 這是為什麼呢?大家為什麼不升級到Java 11呢?

我個人覺得主要原因是對開發有利的重大特性升級很少,吸引力不夠。

在過去的十幾年中,Java相繼引入的泛型、註解、NIO、函數語言程式設計等核心功能,極大地影響了應用程式開發的方式,你能想象現在的Java中沒有註解會是什麼樣子嗎?

這幾年的Java版本中,就缺乏這種重大功能的升級了,我把我有點印象的功能升級列一下:

注意黑體的這幾項, Java 9引入了模組化系統,這是個看起來很美的特性,可是對程式設計師來說,這是一個破壞性的更新,因為JDK做了模組化,但是很多第三方庫沒有做模組化, 如果想讓自己的專案也模組化,很有可能是一次不斷填坑的經歷,尤其在使用第三方庫的時候。

Java 11的ZGC是個有吸引力的特性,它的設計目標是:支援TB級記憶體容量,GC暫停時間低(<10ms),對整個程式吞吐量的影響小於15%,確實挺讓人激動的!如果真的實現了,程式設計師就可以可勁兒造物件,而不用考慮GC了,可惜這仍然是個實驗性質的版本。

至於區域性變數型別推導,也只是方便了變數的宣告而已。

一個JDK的版本如果想被廣泛採用,一定得能提升開發效率(如泛型、註解),帶來變革,這樣才有吸引力, 如果給程式設計師們帶來了麻煩, 大家就會用腳投票了。

最新評論
  • 1 #

    怕第三方庫不相容

  • 2 #

    什麼東西到了Oracle手裡。。。。。。

  • 3 #

    都不關鍵關鍵是是否免費

  • 4 #

    大公司都openJDK了 oracle要收費就自己玩吧

  • 5 #

    固守?no,no,no,我們才剛升級到8~

  • 6 #

    除了zgc,也就像當年的g1一樣,現在大家不多還是用cms麼。沒什麼好更新的,等問題了,第三方類庫也自然會相容了,估計沒有3,5年下不來

  • 7 #

    從openjdk8遷移到openjdk11,恕我直言除了ZGC和模組化其他感覺沒什麼亮眼的。

  • 8 #

    我們公司從9幾年到現在一直用1.5

  • 9 #

    我們還在用7,因為spring用的3.1,不敢升,升了不相容

  • 10 #

    oracle內部專案也才到11而已,沒那麼快

  • 11 #

    應該反過來問,我們為什麼要去升級?收益能高過成本才值得去做

  • 12 #

    14是小版本不支援長期更新,可以使用 8/11/17

  • 13 #

    很不幸,還在用jdk1.4

  • 14 #

    前段時間剛把老舊程式碼重構下,6升級到8,,,

  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 雷軍發全員信“5G+AIoT”五年至少500億