2019年 Java 調查報告:“被取代”是不存在的!
盡管 Java 被稱為編程語言的“老馬”,但它仍在不斷發(fā)展。
在 Tiobe 排行榜中,它仍然是的第一名,在 PYPL 和 RedMonk 排行榜上則在與 Javascript 和 Python 爭奪第二名的位置,按照 GitHub 上庫貢獻者的數據來看,它是第三大最受歡迎的語言。
時光在變,Java 一直沒變,過去企業(yè)在談 Java,現(xiàn)在還是在談 Java,這一點可以在財富 500 強企業(yè)的技術棧中得到驗證。
為什么 Java 能夠一直流行呢?其中的原因有很多,例如企業(yè)最看重的是向后兼容性,眾所周知,向后兼容性對重大的更新和升級非常敏感,而 20 年前用 Java 5 編寫的系統(tǒng)還是能夠在 Java 8 下編譯和運行。
那么,2019 年 Java 的發(fā)展如何呢?Baeldung 調查了 6707 名開發(fā)經驗豐富的技術人員,并從中獲得了一些結論。
1. 使用版本:Java 8 仍然最受歡迎
從 Java 8 之后,Java 的發(fā)布周期明顯快了很多,現(xiàn)在已經快要到 Java 14 了。你可能會認為大多數人已經切換了更新版本的 Java 了,但實際情況并非如此,根據調查顯示,80% 的受訪者仍然在使用 Java 8。
為什么即使有了新版本,Java 8 仍然最受歡迎呢?這其中有很多原因:
首先,Java 8 開創(chuàng)性的語言特性(參見我的閉包和 Lambdas 書評)仍然在被編程社區(qū)吸收。即使到了 2019 年,關于 Steam 和 Optional 的相關問題仍在網上被熱烈討論,Baeldung 自己也發(fā)布了 Java 8 Optional 指南。
其次,Java 9 首先支持的新模塊系統(tǒng)使人們感到困惑,而不是使他們感覺更輕松。
第三,在后來的 Java 版本中引入的特性似乎沒有足夠的說服力讓大家下決心切換。
最后,還存在一個大問題,在 2019 年 1 月份之后,Java SE 8 的公共更新需要商業(yè)許可。這就是 Oracle JDK 與 OpenJDK 之爭的開始,正如我們在之前的文章中所說的:
隨著 Oracle JDK 發(fā)行和支持的變化,是使用 Oracle JDK,還是 Oracle 的 OpenJDK,或者是其他供應商的 OpenJDK,這中間在權限上存在著相當大的不確定性。此外,在不同的供應商那里是否可以得到免費更新的相關計劃,以及 (新的和現(xiàn)有的) 付費的支持模型,這些都要予以考慮。
2. 框架:Spring 占據主導地位
在框架的采用方面,Spring 占據了主導地位。與傳統(tǒng)且臃腫的 Java EE 相比,Spring 是現(xiàn)代化的、基于 Java 的企業(yè)應用程序的輕量級框架。Spring Boot 的采用率也很高。
3. 構建工具:Maven 斷層式第一
在 Java 構建工具的調查中,Maven 以相當大的優(yōu)勢排在了第一位,這表明排在第二位的 Gradle 仍然是 Android 的代名詞,之后需要做更多的努力來擺脫這些限制,以便被認為是 Java 構建通用實踐的一個可行的選擇。
4. IDE:IntelliJ 大比例占據一位,Eclipse 份額持續(xù)下降
在 IDE 的調查中,IntelliJ 以將近 60% 的份額占據了第一的位置,為什么 IntelliJ 如此受歡迎呢?Andrey Cheptsov 曾在一篇博客中這樣寫道:“在你編寫代碼時,IntelliJ IDEA 也忙著在構建它的語法樹,在類、變量、字段、方法和它們的用法之間創(chuàng)建引用,分析執(zhí)行流,利用這些信息,它可以提供補全功能,幫助你快速瀏覽代碼,提供錯誤分析和方便的快速修復。”
而傳統(tǒng)的 Eclipse 則有點不妙,其占比從去年的 38% 下降到 32.8%
5. Web/ 應用服務器:Tomcat 占據第一
早在 2011 年,F(xiàn)orrester 的首席分析師 Mike Gualtieri 副總裁就寫過一篇既有預見性又不受時間限制的文章,名為《停止在 WebLogic、WebSphere 和 JBoss 應用服務器上浪費金錢》
他開頭寫道:“使用 Apache Tomcat 吧,它是免費的。”
“我不明白為什么有些公司要在 Oracle Weblogic 或 IBM WebSphere Application Server 這樣的 Java 應用服務器上花費數百萬美元。我明白為什么有些公司要在 Red Hat JBoss 上花錢,因為他們想要節(jié)省在應用服務器上的開銷。但是,為什么要花錢呢?Apache Tomcat 將滿足大多數 Java web 應用程序的部署需求。”
該表反映了這種說法:Tomcat 一直保持著輕量級的資源消耗,毫無爭議地擊敗 Jetty 奪得冠軍。那些重量級產品的位次反映了它們那個年代已經過時的需求。
6. 其他 JVM 語言:Java 的使用率未發(fā)生變化
首先,讓人感到有些驚訝和有趣的是,有 62.6% 的開發(fā)人員只使用 Java,這與去年不相上下 (62.8%)??紤]到大家對 Kotlin 的大量采用,我的預期是這個數字肯定會下降,但現(xiàn)在看來并沒有下降。不過,Kotlin 仍然從去年的 13% 增長到了現(xiàn)在的 16.5%。和 Gradle 一樣,Kotlin 完全可以作為一種通用語言來用,尤其是在后端環(huán)境中,但在安卓之外它仍然未被接受得到普遍應用。
7. 數據庫:關系型數據庫比 NoSQL 更受歡迎
MySQL 和 PostgreSQL 是前兩名,Oracle 是第三名,MongoDB 和 MS SQL 是第四和第五名。這里有兩個值得注意的趨勢。與 Percona 的數據庫管理系統(tǒng)流行度調查結果一致,關系型數據庫管理系統(tǒng)勝過 NoSQL,而開源數據庫管理系統(tǒng)則比大型商業(yè)數據庫管理系統(tǒng)做得更好。就像前文中的 Web 服務器一樣,人們尋求的也是更輕量級的等價物,尤其是 PostgreSQL。
8. 總結
總而言之,根據調查結果顯示,Java 不會被取代,在未來幾年也將在繼續(xù)保持 Top 3 的位置。不過,盡管人們仍然堅持使用該語言及其圍繞它的生態(tài)系統(tǒng),但他們也在試圖遠離 Oracle 及其產品,如 IDE(JDeveloper)、服務器 (WebLogic)、JDK 及其旗艦數據庫。MySQL 是個特例,因為它基本上不受甲骨文所有權的影響。大多數 Java 用戶正在尋找更輕量級、更高效、更便宜、對開發(fā)人員和許可更友好的等價物,這些等價物完全比得上 Oracle 的同類產品,甚至更好。