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

原文地址:https://www.cnblogs.com/bluestorm/p/9144458.html

时间: 2024-10-11 20:40:15

Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路的相关文章

程序员未来的出路究竟在哪里?一位老码农的心声

程序员的工作在互联网行业中算是“黑马”,一向是以高收入.低社交.屌丝气质而被大家熟悉.在互联网快速发展的时代,程序员显得尤为重要,但是在这个行业中存在一个只有从事这种工作的人才知道的危机,那就是年龄越大被企业裁员的可能性越高. 虽说最近天气渐渐变暖,但是互联网行业的裁员寒风依然冰彻骨髓!经常在网上看到每隔一段时间就会出现一些因年龄偏大而被降薪或者招聘时因年龄问题遭拒等相关新闻,被裁的对象自然不乏程序员. 其中那些所谓具有多年开发工作经验的高龄程序员成为了“重灾区”!于是网络上那些带有“程序员是吃

谈谈Java程序员跨越架构师的能力修成记

前几天在群里几个朋友围绕团队技术考核聊了几嘴,比如是开发.产品.测试.运维.UI等,不特别针对某个岗位,而是提炼出一个具有普适性的一个东西,其实从每家公司的KPI考核指标上就可以看出来,企业的关注点在哪里?个人的成长点,一般也就在那里! 讨论过后,简单整理下,画出一个脑图供大家参考: 专注于Java架构师技术分享,撩我可送全套Java架构师的VIP课程资料 (欢迎撩我wei?心:前面是34111后面是71156) 如何你自评过绩效的话,相信一定能其中能发现如下领域:业务模块.技术模块.态度模块.

学java有前景吗 java程序员未来的三大就业方向

都说java专业非常火,但是学java毕业以后,能够从事哪方面的工作呢?学习java的程序员选择的就业方向比较广,但是选择难度也在加大.在3天一小变.5天一大变的IT行业中,如何才能决定职业方向呢?小编为大家列出几个方向,仅供大家参考: 开发方向 最近两年,智能手机爆炸式发展,其服务产业安卓开发也水涨船高,随之带动了培训行业的发展,安卓培训一路走红.目前,Android开发工程师已成为3G行业最炙手可热的岗位之一,初入行平均薪水4000元左右,有1年工作经验者月薪6000-8000元左右,2-3

聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

阿里社招面试都问什么? 和之前一样,文章一上来,我们先来谈谈阿里的社招面试都问什么,其实这个话题并不是什么秘密,所有来阿里面试过的同学,都能回答一二. 两年前的时候,笔者在文章里是这么回答的. 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题. 说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住.而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小. 甚至,就算你运气好被问到了

工作了3年的JAVA程序员应该具备什么技能?(zhuan)

http://www.500d.me/article/5441.html **************************************** 来源:五百丁 作者:LZ2016-03-18 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的. 简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有

JAVA程序员面试总结,高手整理加强版

每个程序员.或者说每个工作者都应该有自己的职业规划,分享高手整理的java程序员面试总结给愿意思考自己未来的朋友们. 第一阶段:三年 我 认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段. 第二

有2-3年经验的java程序员需要掌握的东西有哪些?

前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的. 简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的有4家,另外两家失败的原因在于: 1.阿里巴巴B2B事业部的面试,两轮技术面试都过了,最后一轮

阿里Java程序员分享自己的职业规划,希望对你们有所启发

每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天我给大家分享的是一篇来自Java工程师对五年工作经验程序员的职业建议,希望对你们有启发. 程序员的三个阶段 第一阶段-三年我认为对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试

腾讯首席架构师:Java程序员四个阶段成长路线,少走弯路

有这么一位Java大牛 他是前 Oracle 首席工程师,负责过北京Java核心类库.国际化.分发服务等技术团队的组建.大家都知道,Java 就是 Oracle 公司的,他对Java的理解会与众不同.他把Java程序员的成长路线划分为新手.高级新手.胜任者.精通者和专家,让大家少走弯路.创一个小群,供大家学习交流聊天如果有对学JAVA方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学JAVA能够持之以恒JAVA爱好群,如果你想要学好JAVA最好加入一个组织