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 抽中了下下签,您又恰巧选择了下下策。希望不会如此。

相关文章
相关标签/搜索