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