Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路
http://blog.jobbole.com/111422
Java 生態(tài)圈
Java 的生態(tài)環(huán)境開放、自由,在Sun/Oracle、Google、Apache、Eclipse基金會(huì)等各大廠商,還有技術(shù)大牛的共同努力下,Java 的生態(tài)圈異常繁榮,各種優(yōu)秀的開源框架層出不窮。
Spring Boot
Spring Boot 是 Pivotal 團(tuán)隊(duì)推出的一個(gè)支持快速開發(fā)的框架,伴隨 Spring4.0 而生,繼承了 Spring 的優(yōu)秀特質(zhì),簡化了使用 Spring 編碼、配置、部署的過程,使項(xiàng)目的開發(fā)變得簡單、敏捷。
Spring Cloud
Spring Cloud 是基于 Spring Boot 的一整套分布式系統(tǒng)下的微服務(wù)構(gòu)建框架,包含了眾多的子項(xiàng)目,如 Spring Cloud Config 、Spring Cloud Stream 等。
具體可參考:http://projects.spring.io/spring-cloud/
Hadoop/Spark
Hadoop 是首個(gè)獲得極大應(yīng)用的大數(shù)據(jù)框架,是大數(shù)據(jù)領(lǐng)域標(biāo)志性的解決方案。
Spark 通過完善的內(nèi)存計(jì)算和處理優(yōu)化,極大的提升了速度,是具備流處理能力的下一代批處理框架。
Spark 體系還包括一系列附加庫,如Spark Streaming 、Spark MLlib、Spark GraphX、SparkNet、CaffeOnSpark等。
Kafka
Kafka 是 LinkedIn 使用 Scala 開發(fā)的一個(gè)分布式消息中間件,可以實(shí)現(xiàn)不同應(yīng)用之間的松耦合,由于其可擴(kuò)展、高吞吐、低延遲、高可靠等特性而被廣泛使用。
具體可參考:https://kafka.apache.org/intro
ElasticSearch
ElasticSearch 是基于 Lucene 的實(shí)時(shí)分布式搜索引擎,由于其搜索穩(wěn)定、可靠,速度快、安裝方便等特點(diǎn),是使用最廣泛的開源搜索引擎之一。
具體可參考《Elasticsearch: 權(quán)威指南》:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
Nutch
Nutch 是 Apache 旗下的高度可擴(kuò)展、可伸縮、可插拔的開源網(wǎng)絡(luò)爬蟲框架,功能完整。
當(dāng)然爬出框架還有很多:Heritrix、Crawler4j、WebCollector、WebMagic、SeimiCrawler、HtmlUnit 等,可根據(jù)實(shí)際項(xiàng)目需要選擇。
在爬蟲領(lǐng)域,Python 可能使用的更多一些,入門也簡單。
爬蟲的難點(diǎn)不在于語言的選擇,無論 Java 、Python 都可以勝任,關(guān)鍵還是反反爬策略的制定,以及各種實(shí)戰(zhàn)的積累。
ethereumj
ethereumj 是以太坊協(xié)議的純 Java 實(shí)現(xiàn)。不過在區(qū)塊鏈領(lǐng)域,Go 語言的使用率可能更高一些。開發(fā)人員可以酌情選擇。
代碼可參考:https://github.com/ethereum/ethereumj
Deeplearning4J
DeepLearning4J(DL4J)是基于Java語言的分布式深度學(xué)習(xí)框架,在機(jī)器學(xué)習(xí)領(lǐng)域應(yīng)用廣泛。
入門可以參考《DL4J快速入門》:https://deeplearning4j.org/cn/quickstart
不過由于谷歌的 TensorFlow 提供的 java API 也會(huì)日趨完善,目前不少 java 程序員也會(huì)選擇 TensorFlow 作為機(jī)器學(xué)習(xí)的首選框架。
以上只是個(gè)人正在使用或練手,并且比較看好的一些開源框架。如果想了解更多,可以去 Github 上搜索。
?
JVM 語系
Java 功能強(qiáng)大、生態(tài)豐富,已無需多言。但類型、語法與編程范式方面,存在一些局限性,也長期為人所詬病。
所以,有不少開發(fā)人員試圖去尋求其他語言,既可以突破 Java 的這些局限,又可以與 Java 和諧共處。
Java 的祖師爺們也是非常明智,一開始就將編程語言 Java 與運(yùn)行時(shí)環(huán)境 JVM 分離。
JVM 負(fù)責(zé)與操作系統(tǒng)的交互,屏蔽了具體操作系統(tǒng)的細(xì)節(jié),制訂了一整套生成字節(jié)碼的規(guī)范,使得前面這一構(gòu)想得以順利實(shí)施。
如今有眾多語言運(yùn)行在 JVM 上,Groovy、Scala、Kotlin、Clojure 可能算得上是其中的佼佼者。
Groovy
Groovy 是類似 Ruby 的動(dòng)態(tài)語言,適合編寫腳本、插件、測試?yán)?#xff0c;DSL (領(lǐng)域特定語言)等。知名的自動(dòng)化建構(gòu)工具 Gradle 主要就基于 Groovy 。
Scala
Scala 的設(shè)計(jì)初衷,就是在 JVM 上整合面向?qū)ο笈c函數(shù)式編程的各種特性。
大名鼎鼎的大數(shù)據(jù)處理框架 Spark、消息中間件 Kafka、用于構(gòu)建可容錯(cuò),可擴(kuò)展、高并發(fā)應(yīng)用的Akka,都是基于 Scala 語言編寫。
Kotlin
前幾日剛升級(jí)為 Android 官方開發(fā)語言的 Kotlin ,近期是一個(gè)熱門。從前面講到的 Github 上的 star 指數(shù)也可窺見一斑。
基于 Kotlin 的庫和框架、官方工具的支持、教學(xué)視頻、文檔等,也肯定會(huì)層出不窮。
Clojure
Clojure 被認(rèn)為是基于 JVM 的 Lisp 方言,是函數(shù)式編程的鐵桿。知名的大數(shù)據(jù)處理框架 Storm 主要就是由 Clojure 語言編寫而成。
Ceylon
Ceylon 是面向企業(yè)級(jí)應(yīng)用設(shè)計(jì)開發(fā)的強(qiáng)靜態(tài)類型編程語言,支持 Java 和 JavaScript 虛擬機(jī)。
具體可參考:https://ceylon-lang.org/documentation/current/
下圖是 2017 年的 JVM 語言使用率調(diào)查:
來源:Baeldung,鏈接:http://www.baeldung.com/java-in-2017
注:Groovy 達(dá)到了將近40%的份額,有點(diǎn)出乎我的意料。另外,得益于谷歌這么推一把,Kotlin 后續(xù)的比例有望來個(gè)大躍進(jìn)。
2008 年開始,Oracle主辦的 JVM 語言峰會(huì),為 JVM 語系的架構(gòu)師、設(shè)計(jì)師、工程師,提供了非常好的開放式合作的機(jī)遇。
順便說一下,今年的 JVM 語言峰會(huì),時(shí)間:7月31日~8月2日,地點(diǎn):Oracle Santa Clara Campus,有興趣的童鞋可以關(guān)注一下。
作為一名 Java 程序員,如果要選擇第二門編程語言、或想來個(gè)多語言編程的話,選擇 JVM 系的語言顯然是一個(gè)非常不錯(cuò)的選擇。
選擇 JVM 系語言的一大優(yōu)勢是,前期可以使用熟悉的 Java 搭架子,局部功能優(yōu)先嘗試一下新語言,如此風(fēng)險(xiǎn)最小,與 Java 可以實(shí)現(xiàn)無縫切換。
至于具體如何選擇,就要看你在功能性、實(shí)用性、舒適性、有趣性之間,如何取舍了。
結(jié)語
Java 自身在性能、語法、編程范式等方面,也是在不斷地提高改進(jìn)。
譬如 Java 8 引入了 Lambda 表達(dá)式、Optional、Streams、Date/Time API 等,Java 9 帶來了 Jigsaw(模塊化)等。
Java 程序員可以適時(shí)的與時(shí)俱進(jìn)。
不過,谷歌等其他廠商由于對(duì) Java 不具備掌控力,還有吃官司的風(fēng)險(xiǎn),尋求 Java 的替代方案,動(dòng)機(jī)是存在的。
所以,作為 Java 程序員,過于依賴 Java,也是比較有風(fēng)險(xiǎn)的。
適時(shí)的主動(dòng)去改變,不要讓自己哪天陷于被動(dòng)。
除了學(xué)習(xí)第二、第三編程語言,程序員可以把更多的重心,放在算法上。
以后的生活無處不算法,從娛樂影視推薦、新聞資訊過濾,到出行購物、住宿交友等等,我們都離不開算法。
盡管許多優(yōu)秀的算法,包括最前沿的深度學(xué)習(xí)學(xué)法,都會(huì)有大牛奉獻(xiàn)開源實(shí)現(xiàn),但只有其中的原理深刻理解了,才能掌握、并利用好這些算法。
后記
技術(shù)的更迭,有時(shí)候會(huì)來的很突然,很猛烈。但系統(tǒng)的更迭,往往會(huì)慢得多。
譬如 Cobol 語言,盡管語言本身隕落已超過 20 年,依然能在銀行、證券、保險(xiǎn)、電信等行業(yè)領(lǐng)域里見到 Cobol 的身影。
即使幾年之后,Java 因各種陰差陽錯(cuò)、機(jī)緣巧合,開始走向隕落,Java 程序員們?cè)倩靷€(gè) 20 年,也是毫無壓力。
因?yàn)?Java 常年占據(jù)編程語言前列(榜首),目前有太多的平臺(tái)使用 Java 了。
Amazon、Google、eBay、阿里、京東、銀行、證券、醫(yī)療、移動(dòng)、電信、ERP等等。
各個(gè)領(lǐng)域,各行各業(yè),Java 程序員吃老本也能再吃個(gè) 20 年……
當(dāng)然,這只是 Java 抽中了下下簽,您又恰巧選擇了下下策。但愿不會(huì)如此。
總結(jié)
以上是生活随笔為你收集整理的Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿德莱德大学
- 下一篇: docker入门与实践之【04-使用do