Spring框架和微服務(wù)體系結(jié)構(gòu)實際上已經(jīng)成為Java世界中的標準。但是,不斷發(fā)展的行業(yè)要求軟件工程師在掌握現(xiàn)有Java技能的基礎(chǔ)上,還要開發(fā)新的Java技能。
Java作為一門長青的編程語言,在比較長的發(fā)展時間里,時常會有唱衰的聲音。但Java一直在不斷向前發(fā)展,受歡迎程度也一直很高,TIOBE榜單常年保持在Top2,未來Java將如何發(fā)展呢?本文搜集了一些開發(fā)者和相關(guān)從業(yè)人員的看法。
Hot的Java應(yīng)用場景
在紛繁復(fù)雜的編程語言中,Java一直是深受開發(fā)者和企業(yè)歡迎的編程語言。從2001年起,Java在TIOBE榜單中幾乎排在首位,偶爾排在第二位。受歡迎程度如此高、使用廣泛的編程語言肯定會有一些需要掌握的特定技能。
CVCompiler從AngelList,StackOverflow,LinkedIn等網(wǎng)站收集了300個Java招聘需求,并從這300個招聘需求中統(tǒng)計出了企業(yè)想要Java程序員掌握的技能。
除了需要掌握的技能,哪些Java使用場景受歡迎呢?
用于Web編程
大多數(shù)企業(yè)都喜歡使用SpringMVC構(gòu)建Web應(yīng)用程序的后端,使用Angular或React.js前端框架來構(gòu)建應(yīng)用程序的前端。這意味著,Java程序員雖然不需要完全掌握JavaScript前端框架的知識,但是需要了解Java代碼如何與前端框架進行交互。
受歡迎的Java后端框架是ApacheStruts。與Spring一樣,ApacheStruts自5年前發(fā)布以來,一直在跟隨Java的更新步伐,不同的是,SpringMVC只是復(fù)雜解決方案的一部分,而ApacheStruts可以處理應(yīng)用程序的多個方面,例如測試或數(shù)據(jù)訪問。
數(shù)據(jù)處理
很多人都認為大數(shù)據(jù)并不是Java擅長的應(yīng)用場景,但是CVCompiler的調(diào)查結(jié)果顯示Java在大數(shù)據(jù)方面的應(yīng)用正在崛起,甚至CVCompiler認為在數(shù)據(jù)科學的市場,Java可能會與Python相提并論。
很多企業(yè)招聘人員都希望Java應(yīng)聘者能夠熟悉ApacheKafka、Hadoop、Azure以及Spark等與大數(shù)據(jù)相關(guān)的解決方案。
微服務(wù)
很多經(jīng)驗豐富的開發(fā)人員都認為Java是微服務(wù)開發(fā)的佳編程語言,Java本身也在積極支持微服務(wù),例如2019年,JakartaEE社區(qū)的優(yōu)先級就是支持微服務(wù)。
Java微服務(wù)框架也經(jīng)歷了大洗牌,SpringBoot和SpringCloud進入晚期大眾階段,它們已經(jīng)成為企業(yè)信任的Java微服務(wù)開發(fā)框架。Helidon和Microprofile進入早期采用者階段,不過vert.x可能會因為相對利基的市場無法跨過早期采用者階段。
數(shù)據(jù)庫和Web服務(wù)器
提到Java在數(shù)據(jù)庫方面的使用場景,相信很多人都會想到目前比較流行的NoSQL數(shù)據(jù)庫Cassandra和MongoDB。而在Web服務(wù)器方面,Tomcat和Apache也絕譵是領(lǐng)導(dǎo)的角色。
國外開發(fā)者如何看待Java的發(fā)展趨勢
從上文中我們可以看到,時至今日,Java仍然在眾多使用場景中占據(jù)著舉足輕重的位置。那么,Java未來將如何發(fā)展呢?我們搜集了一些國外開發(fā)者對Java的趨勢判斷,以及他們認為現(xiàn)階段需要掌握的Java相關(guān)技能。
Red Monk創(chuàng)始人James Governor
在不久的將來,我們可能會看到Quarkus(KubernetesNativeJava框架)等Java框架及其相關(guān)技術(shù)會越來越受到關(guān)注。例如,它可能是Vert.x,因為Java正在積極響應(yīng)和參與容器革命。
Java Champion,JavaOne Rockstar Consultant Adam Bien
有一個現(xiàn)象有點讓我驚訝,那就是與 Spring 相比,Spring Boot 的受歡迎程度居然較低。另外,JPA (Java Persistence API),Java EE API 之一,被列為獨立項目,加上對 SQL 技能的強烈需求,都表明了 Java 市場對關(guān)系數(shù)據(jù)庫的持續(xù)興趣。
另外,Maven 作為領(lǐng)跣的構(gòu)建工具,市場體現(xiàn)出了對 Maven 技能的強烈需求,而 Apache Kafka 雖然非常流行,但是并不是適用于所有項目的通用架構(gòu),所以市場需求反響不是很強烈。
作為一名 Java EE 開發(fā)人員,如果想要在市場中具備強勁的競爭力,那么他需要掌握以下技能,JPA、SQL、JMS (Kafka 也是一種 JMS 實現(xiàn))、JAX-RS (REST)、Maven (Java EE 中的缺省值)、Git(事實上的標準)。
Netflix 的高級軟件工程師 Alex Borysov
如今,Spring 框架和微服務(wù)體系結(jié)構(gòu)實際上已經(jīng)成為 Java 世界中的標準。但是,不斷發(fā)展的行業(yè)要求軟件工程師在掌握現(xiàn)有 Java 技能的基礎(chǔ)上,還要開發(fā)新的 Java 技能。Service Mesh 和 service proxy 正在改變微服務(wù)的開發(fā)方式,所以 Java 程序員也要積極學習 Istio、Linkerd2 或 Envoy。另外,隨著越來越多的公司轉(zhuǎn)向公有云和混合云,擁有亞馬遜 AWS、谷歌云平臺或微軟 Azure 的經(jīng)驗非常重要。
Java 領(lǐng)域中,反應(yīng)式編程處于上升趨勢,雖然我認為它不會取代傳統(tǒng)的命令式編程,但是我們需要了解什么是反應(yīng)式編程,反應(yīng)式編程如何改變 Java 生態(tài),以及一些反應(yīng)式框架,例如 Project Reactor、RxJava、Spring WebFlux 等。
在數(shù)據(jù)存儲方面,NoSQL 和多語言持久性是當今工程師必備的 Java 技能。NewSQL 的發(fā)展同樣值得期待,例如 Google Spanner 就是作為服務(wù)在生產(chǎn)環(huán)境中應(yīng)用的一個佳案例。
Java Champion,Sebastian Daschner
在企業(yè) Java 項目中,我已經(jīng)不太看得到 SOA 的需求,而 Spring 和 Spring Boot 在實際應(yīng)用中經(jīng)常同時使用,所以這時探究兩者的區(qū)別就不是特別有意義了。另外,我看到大家對各種云原生技術(shù)的興趣越來越大,如果這種趨勢繼續(xù)發(fā)展下去,相信未來幾年,Java 也會變得更加有趣。
除了以上開發(fā)者,InfoQ 首席編輯 Charles Humble 也針對 Java 的未來發(fā)展趨勢發(fā)表了自己的看法,他認為:
Java 模塊化系統(tǒng)采用也是一個很有趣的話題。我敢肯定 OSGI 擁護者對于將它放在創(chuàng)新者階段會有意見,但這樣做可能是對的。
我想可以將 Clojure 移到晚期大眾階段。當然,人們還在用它,但我感覺到它的使用量在下降,而且它本身面向的就是利基市場。
我會將 Ceylon 移掉。它一直以來都沒有獲得太多關(guān)注,而且我不認為進入 Eclipse 會給它帶來多大幫助。這個項目的活躍度很低,過去 6 個月只有 10 個代碼提交。
測試框架的趨勢看起來相當穩(wěn)定。我們要把它移掉嗎?從采用率來看,我給它們排個順序:JUnit、TestNG/Cucumber、Spock,但似乎變化不大?
SmartBear 近收購了 Cucumber,可能會促進它的發(fā)展,但即使是這樣,我仍然傾向于把它們移掉。
人們似乎對 JVM 上的 Node 不感興趣?我想可以把它移掉。
我很想把 Kotlin 移到早期大眾階段,它是我近來經(jīng)常聽到的一門 JVM 編程語言,這要得益于 Android 開發(fā)的流行??梢哉f,它已經(jīng)越過了鴻溝,但仍然落后于其他編程語言,比如 Groovy、Swift 或 Go 語言。
我覺得 Scala 可以留在晚期大眾階段,人們會逐步棄用它。