Java 14 都快來了,為什麼還有這麼多人固守Java 8?
從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 | 模組化系統 Java Shell :互動式命令列控制檯 |
Java 10 | 區域性變數型別推導 |
Java 11 | 各種加強:Stream , String, Collection 標準化的HTTP Client ZGC |
Java 12 | Switch表示式擴充套件 |
Java 13 | 重新實現Socket API 文字塊(多行字串) |
注意黑體的這幾項, Java 9引入了模組化系統,這是個看起來很美的特性,可是對程式設計師來說,這是一個破壞性的更新,因為JDK做了模組化,但是很多第三方庫沒有做模組化, 如果想讓自己的專案也模組化,很有可能是一次不斷填坑的經歷,尤其在使用第三方庫的時候。
Java 11的ZGC是個有吸引力的特性,它的設計目標是:支援TB級記憶體容量,GC暫停時間低(<10ms),對整個程式吞吐量的影響小於15%,確實挺讓人激動的!如果真的實現了,程式設計師就可以可勁兒造物件,而不用考慮GC了,可惜這仍然是個實驗性質的版本。
至於區域性變數型別推導,也只是方便了變數的宣告而已。
一個JDK的版本如果想被廣泛採用,一定得能提升開發效率(如泛型、註解),帶來變革,這樣才有吸引力, 如果給程式設計師們帶來了麻煩, 大家就會用腳投票了。
Java 8 已經發布5年多了,我估計再用兩三年不成問題,我們們也來個小調查吧:
相關文章
相關文章
- 為什麼有許多人學java?Java
- 六年了,這款遊戲為什麼還是有這麼多人在玩遊戲
- 為什麼Java有了synchronized之後還造了Lock鎖這個輪子?Javasynchronized
- 為什麼前端這麼多人前端
- 為什麼那麼多人要學Java?這三個原因告訴你Java
- 什麼是java?為什麼大家都學習java技術?Java
- Java培訓:什麼是Java?為什麼大家都學習Java技術?Java
- Java 14 可能帶來什麼新特性?Java
- 為什麼要用Redis?Redis為什麼這麼快?(來自知乎)Redis
- 為什麼這麼多人都在學PythonPython
- 為什麼這麼多人學習Python,Python有哪些優勢?Python
- 為什麼V8引擎這麼快?
- Java找工作為什麼越來越難,有什麼技巧嘛?Java
- 為什麼有了 HTTP 還要 RPCHTTPRPC
- 為什麼Julia這麼快?
- Redis為什麼這麼快?Redis
- Nginx 為什麼這麼快?Nginx
- java列舉原來還能這麼用Java
- 為什麼這麼多人願意學習Python?Python
- 這都Java15了,Java7特性還沒整明白?Java
- 既然有MySQL了,為什麼還要有MongoDB?MySqlMongoDB
- MySQL Connectors為什麼沒有javaMySqlJava
- 還理不清Java引用是什麼?看這篇文章就夠了Java
- Java、Python 都跌出前五了,誰這麼牛?JavaPython
- 快速排序為什麼這麼快?排序
- 為什麼《原神》推出三年了還有這麼高的熱度?
- 為什麼?為什麼?Java處理排序後的陣列比沒有排序的快?想過沒有?Java排序陣列
- Java培訓都學什麼Java
- 為什麼這麼多人學Linux?Linux前景好嗎?Linux
- 為什麼你們都這麼厲害。。。。
- 為什麼都放棄了LangChain?LangChain
- 遊戲都壓盤了,為什麼還要等首日補丁遊戲
- 為什麼這麼多人做網校系統開發?網校系統有什麼優點?
- 為什麼都推薦零基礎學Java?Java
- 為什麼過了這麼久了
- 為什麼那麼多自學Python的後來都放棄了,總結起來就這些原因Python
- Java swing是什麼?有什麼作用?Java
- python有什麼特性?為什麼這麼火?Python