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