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