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