Java 的生態環境開放、自由,在Sun/Oracle、Google、Apache、Eclipse基金會等各大廠商,還有技術大牛的共同努力下,Java 的生態圈異常繁榮,各類優秀的開源框架層出不窮。html
Spring Bootjava
Spring Boot 是 Pivotal 團隊推出的一個支持快速開發的框架,伴隨 Spring4.0 而生,繼承了 Spring 的優秀特質,簡化了使用 Spring 編碼、配置、部署的過程,使項目的開發變得簡單、敏捷。git
Spring Cloud程序員
Spring Cloud 是基於 Spring Boot 的一整套分佈式系統下的微服務構建框架,包含了衆多的子項目,如 Spring Cloud Config 、Spring Cloud Stream 等。github
具體可參考:http://projects.spring.io/spring-cloud/算法
Hadoop/Sparkspring
Hadoop 是首個得到極大應用的大數據框架,是大數據領域標誌性的解決方案。apache
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 上搜索。
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,也是比較有風險的。
適時的主動去改變,不要讓本身哪天陷於被動。
除了學習第2、第三編程語言,程序員能夠把更多的重心,放在算法上。
之後的生活無處不算法,從娛樂影視推薦、新聞資訊過濾,到出行購物、住宿交友等等,咱們都離不開算法。
儘管許多優秀的算法,包括最前沿的深度學習學法,都會有大牛奉獻開源實現,但只有其中的原理深入理解了,才能掌握、並利用好這些算法。
技術的更迭,有時候會來的很忽然,很猛烈。但系統的更迭,每每會慢得多。
譬如 Cobol 語言,儘管語言自己隕落已超過 20 年,依然能在銀行、證券、保險、電信等行業領域裏見到 Cobol 的身影。
即便幾年以後,Java 因各類陰差陽錯、機緣巧合,開始走向隕落,Java 程序員們再混個 20 年,也是毫無壓力。
由於 Java 常年佔據編程語言前列(榜首),目前有太多的平臺使用 Java 了。
Amazon、Google、eBay、阿里、京東、銀行、證券、醫療、移動、電信、ERP等等。
各個領域,各行各業,Java 程序員吃老本也能再吃個 20 年……
固然,這只是 Java 抽中了下下籤,您又恰巧選擇了下下策。希望不會如此。