Kotlin 喧囂事後,談談 Java 程序員將來的出路

http://blog.jobbole.com/111422

Java 生態圈

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 上搜索。

 

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,也是比較有風險的。

適時的主動去改變,不要讓本身哪天陷於被動。

除了學習第2、第三編程語言,程序員能夠把更多的重心,放在算法上。

之後的生活無處不算法,從娛樂影視推薦、新聞資訊過濾,到出行購物、住宿交友等等,咱們都離不開算法。

儘管許多優秀的算法,包括最前沿的深度學習學法,都會有大牛奉獻開源實現,但只有其中的原理深入理解了,才能掌握、並利用好這些算法。

後記

技術的更迭,有時候會來的很忽然,很猛烈。但系統的更迭,每每會慢得多。

譬如 Cobol 語言,儘管語言自己隕落已超過 20 年,依然能在銀行、證券、保險、電信等行業領域裏見到 Cobol 的身影。

即便幾年以後,Java 因各類陰差陽錯、機緣巧合,開始走向隕落,Java 程序員們再混個 20 年,也是毫無壓力。

由於 Java 常年佔據編程語言前列(榜首),目前有太多的平臺使用 Java 了。

Amazon、Google、eBay、阿里、京東、銀行、證券、醫療、移動、電信、ERP等等。

各個領域,各行各業,Java 程序員吃老本也能再吃個 20 年……

固然,這只是 Java 抽中了下下籤,您又恰巧選擇了下下策。希望不會如此。

相關文章
相關標籤/搜索