开发者如何看 Java 发展趋势?

阅读数:3868 2019 年 8 月 6 日

Java 作为一门长青的编程语言,在比较长的发展时间里,时常会有唱衰的声音。但 Java 一直在不断向前发展,受欢迎程度也一直很高,TIOBE 榜单常年保持在 Top 2,未来 Java 将如何发展呢?本文搜集了一些国外开发者和相关从业人员的看法。

最 Hot 的 Java 应用场景

在纷繁复杂的编程语言中,Java 一直是深受开发者和企业欢迎的编程语言。从 2001 年起,Java 在 TIOBE 榜单中几乎排在首位,偶尔排在第二位。受欢迎程度如此高、使用广泛的编程语言肯定会有一些需要掌握的特定技能。

CV Compiler 从 AngelList,StackOverflow,LinkedIn 等网站收集了 300 个 Java 招聘需求,并从这 300 个招聘需求中统计出了企业想要 Java 程序员掌握的技能。

除了需要掌握的技能,哪些 Java 使用场景最受欢迎呢?

用于 Web 编程

大多数企业都喜欢使用 Spring MVC 构建 Web 应用程序的后端,使用 Angular 或 React.js 前端框架来构建应用程序的前端。这意味着,Java 程序员虽然不需要完全掌握 JavaScript 前端框架的知识,但是需要了解 Java 代码如何与前端框架进行交互。

最受欢迎的 Java 后端框架是 Apache Struts。与 Spring 一样,Apache Struts 自 5 年前发布以来,一直在跟随 Java 的更新步伐,不同的是,Spring MVC 只是复杂解决方案的一部分,而 Apache Struts 可以处理应用程序的多个方面,例如测试或数据访问。

数据处理

很多人都认为大数据并不是 Java 擅长的应用场景,但是 CV Compiler 的调查结果显示 Java 在大数据方面的应用正在崛起,甚至 CV Compiler 认为在数据科学的市场,Java 可能会与 Python 相提并论。

很多企业招聘人员都希望 Java 应聘者能够熟悉 Apache Kafka、Hadoop、Azure 以及 Spark 等与大数据相关的解决方案。

微服务

很多经验丰富的开发人员都认为 Java 是微服务开发的最佳编程语言,Java 本身也在积极支持微服务,例如 2019 年,Jakarta EE 社区的优先级就是支持微服务。

Java 微服务框架也经历了大洗牌,Spring Boot 和 Spring Cloud 进入晚期大众阶段,它们已经成为企业信任的 Java 微服务开发框架。Helidon 和 Microprofile 进入早期采用者阶段,不过 vert.x 可能会因为相对利基的市场无法跨过早期采用者阶段。

数据库和 Web 服务器

提到 Java 在数据库方面的使用场景,相信很多人都会想到目前比较流行的 NoSQL 数据库 Cassandra 和 MongoDB。而在 Web 服务器方面,Tomcat 和 Apache 也绝对是领导者的角色。

国外开发者如何看待 Java 的发展趋势

从上文中我们可以看到,时至今日,Java 仍然在众多使用场景中占据着举足轻重的位置。那么,Java 未来将如何发展呢?我们搜集了一些国外开发者对 Java 的趋势判断,以及他们认为现阶段需要掌握的 Java 相关技能。

RedMonk 创始人 James Governor

在不久的将来,我们可能会看到 Quarkus(Kubernetes Native Java 框架)等 Java 框架及其相关技术会越来越受到关注。例如,它可能是 Vert .x,因为 Java 正在积极响应和参与容器革命。

Java Champion,JavaOne Rockstar Consultant Adam Bien

有一个现象有点让我惊讶,那就是与 Spring 相比,Spring Boot 的受欢迎程度居然较低。另外,JPA (Java Persistence API),Java EE API 之一,被列为独立项目,加上对 SQL 技能的强烈需求,都表明了 Java 市场对关系数据库的持续兴趣。

另外,Maven 作为领先的构建工具,市场体现出了对 Maven 技能的强烈需求,而 Apache Kafka 虽然非常流行,但是并不是适用于所有项目的通用架构,所以市场需求反响不是很强烈。

作为一名 Java EE 开发人员,如果想要在市场中具备强劲的竞争力,那么他需要掌握以下技能,JPA、SQL、JMS (Kafka 也是一种 JMS 实现)、JAX-RS (REST)、Maven (Java EE 中的缺省值)、Git(事实上的标准)。

Netflix 的高级软件工程师 Alex Borysov

如今,Spring 框架和微服务体系结构实际上已经成为 Java 世界中的标准。但是,不断发展的行业要求软件工程师在掌握现有 Java 技能的基础上,还要开发新的 Java 技能。Service Mesh 和 service proxy 正在改变微服务的开发方式,所以 Java 程序员也要积极学习 Istio、Linkerd2 或 Envoy。另外,随着越来越多的公司转向公有云和混合云,拥有亚马逊 AWS、谷歌云平台或微软 Azure 的经验非常重要。

Java 领域中,反应式编程处于上升趋势,虽然我认为它不会取代传统的命令式编程,但是我们需要了解什么是反应式编程,反应式编程如何改变 Java 生态,以及一些反应式框架,例如 Project Reactor、RxJava、Spring WebFlux 等。

在数据存储方面,NoSQL 和多语言持久性是当今工程师必备的 Java 技能。NewSQL 的发展同样值得期待,例如 Google Spanner 就是作为服务在生产环境中应用的一个最佳案例。

Java Champion,Sebastian Daschner

在企业 Java 项目中,我已经不太看得到 SOA 的需求,而 Spring 和 Spring Boot 在实际应用中经常同时使用,所以这时探究两者的区别就不是特别有意义了。另外,我看到大家对各种云原生技术的兴趣越来越大,如果这种趋势继续发展下去,相信未来几年,Java 也会变得更加有趣。

除了以上开发者,InfoQ 首席编辑 Charles Humble 也针对 Java 的未来发展趋势发表了自己的看法,他认为:

  • Java 模块化系统采用也是一个很有趣的话题。我敢肯定 OSGI 拥护者对于将它放在创新者阶段会有意见,但这样做可能是对的。
  • 我想可以将 Clojure 移到晚期大众阶段。当然,人们还在用它,但我感觉到它的使用量在下降,而且它本身面向的就是利基市场。
  • 我会将 Ceylon 移掉。它一直以来都没有获得太多关注,而且我不认为进入 Eclipse 会给它带来多大帮助。这个项目的活跃度很低,过去 6 个月只有 10 个代码提交。
  • 测试框架的趋势看起来相当稳定。我们要把它移掉吗?从采用率来看,我给它们排个顺序:JUnit、TestNG/Cucumber、Spock,但似乎变化不大?
  • SmartBear 最近收购了 Cucumber,可能会促进它的发展,但即使是这样,我仍然倾向于把它们移掉。
  • 人们似乎对 JVM 上的 Node 不感兴趣?我想可以把它移掉。
  • 我很想把 Kotlin 移到早期大众阶段,它是我近来最经常听到的一门 JVM 编程语言,这要得益于 Android 开发的流行。可以说,它已经越过了鸿沟,但仍然落后于其他编程语言,比如 Groovy、Swift 或 Go 语言。
  • 我觉得 Scala 可以留在晚期大众阶段,人们会逐步弃用它。

针对不同版本的 Java,Charles Humble 认为:“ Java 8 仍然处在晚期大众阶段,Java 11 在早期采用者阶段,Java 11 在创新者阶段。”

参考链接:

https://cvcompiler.com/blog/what-java-skills-do-you-need-to-boost-your-developer-career-in-2019/?hackernews

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论