AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

2019 年 Java 和 JVM 生态系统预测:OpenJDK 将成为 Java 运行时市场领导者

  • 2019-01-05
  • 本文字数:2841 字

    阅读完需:约 9 分钟

2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者

本文对 2019 年 Java 和 JVM 生态系统做了一些预测。


正如 InfoQ 2018年度总结中说的那样,Java 在 2018 年的发展势头非常有意思。


在我们步入 2019 之际,让我们来看看在新的一年中 Java 和相关技术值得注意的点,并试着猜测未来会发生些什么。


免责声明: 以下猜测仅仅是作者个人做出的,并不是来自 Oracle、InfoQ 或其他方面的官方声明或路线图。

Java 11 将出现小规模但意义重大的采用

有关这个预测的争议是最小的。Java 9 和 Java 10 在生产环境中的部署量很小,很多团队似乎都在等待后 Java 8 LTS 版本的发布,现在它来了,Java 11 的采用将会以小而稳的速度开始。


导致 Java 11 被采用的一个推动因素是微服务和容器化的应用程序,使用 Java 11 实现二者都比使用 Java 8 来得容易。在部署全新的应用程序时,Java 11 显然是团队更好的选择。


预测:到 2019 年底,Java 11 安装率将占据 Java 产品安装总量的 10%左右。

Java 8 应用程序不会大规模迁移到 Java 11

到现在为止,Java 应用程序更新路径都是相对清晰的。从 Java 6 到 Java 7,从 Java 7 到 Java 8,几乎可以说是没有障碍的。但是从 Java 8 到 Java 11 并不是这样的,要将重要的应用程序迁移到新版本需要做大量的工作。


只有很少团队具备足够的资源用于迁移、重构和重新测试应用程序。因此,如果没有足够的外部理由,我不认为今年会有大规模 Java 8 应用程序被迁移到 Java 11 上。


预测:没有具体的可量化预测。

不会出现类似于 Python 2/Python 3 的分裂

很多人已经讨论过这个可能性,即随着 Java 模块化的出现,Java 生态系统可能会出现类似于 Python 社区已经经历过的 Python 2/Python 3 分裂。


但我并不认为会发生这种情况,因为从根本上说,在语法和语义层面,Java 11 并非一门完全不一样的语言。Python 的不同版本之间在语法和关键数据类型(比如说 Unicode 字符串或长整型)方面发生了变化,所以库和应用程序作者必须有意识地选择使用哪个版本,这种选择蔓延到了整个生态系统中。


但对于 Java 来说,应用程序所有者需要决定是否要接受模块化,而库开发人员需要决定是否作为模块进行部署,如果是的话,需要为 Java 8 应用程序提供什么样的回退措施。对 Java 程序员来说,工作大致和之前相同,无论项目是基于 Java 8 还是 Java 11,基本上还是使用相同的语言进行编程。


预测:没有具体的可量化预测。

渐进式的 Graal 采用

已经迁移到 Java 11 的项目可能也会关注 Graal。Graal 提供了下一代 JIT 编译器,新编译器可能会在 2019 年达到(甚至超过)Java 11 的 C2 编译器(即-server)水平。


Graal-JIT 迟早会超过 C2,Graal 的设计(特别是它是用 Java 实现的)意味着 Graal 团队可以很容易地实现任何 C2 可以实现的新优化。


“Graal”还包含了 Oracle 半开放的多语言运行时 GraalVM。不过需要注意的是,Graal-JIT 仅适用于 Java 11 及以上版本,而 GraalVM 仅涵盖了 Java 8。


因此,Graal 用户社区可能会分为两个部分,一部分关注 Java 11 应用程序的性能,一部分关 Java 8 生态系统的多语言应用程序。


预测:30%到 40%的 Java 11 应用程序将在生产环境中使用 Graal-JIT。


讨论是否将 Graal 作为 Java 13 的默认 JIT 编译器,但最后未能实现。


GraalVM 在生产环境的部署还是很少,但会有越来越多的应用程序团队开始尝试使用它。

OpenJDK 成为 Java 运行时的市场领导者

Oracle 宣布终止对 OpenJDK 8 项目的所有权,Red Hat 提出要接管该项目。OpenJDK 11 项目可能也会一样,在 Java 12 发布的时候,Oracle 将会放弃这个项目。


很多开发人员没有注意到 Oracle 的 LTS 产品仅针对付费用户,所以将来对 Java 8(以及 Java 12 发布后的 Java 11 版本)的支持不会是由 Oracle 组织来提供,而是由 Red Hat、Amazon、Azul Systems 以及多厂商和社区驱动的AdoptOpenJDK项目来提供。


由于不再有免费的 Oracle JDK 发布到社区,我预测人们会快速将 OpenJDK 作为 Java 应用程序的生产平台。


好消息是,对于服务器端应用程序(以及越来越多的 Java 桌面程序),OpenJDK 也是 Oracle JDK 的替代品。


预测:到 2019 年底,超过 50%的 Java 8 和 Java 11 生产运行时会使用 OpenJDK 而不是 Oracle JDK。

Java 12 的发布

Java 12功能已经确定,将在 2019 年 3 月发布。除非有重大事件的发生,否则这次发布会按时进行。


这不是长期支持的版本,不太会被广泛采用(就像 Java 9 和 Java 10 没有被广泛采用一样)。


预测:Java 12 按时发布,并在 2019 年底出现少量的生产部署。

Java 13 发布

Java 13 将在 2019 年 9 月发布。目前对于该版本将包含哪些功能并没有太多相关信息。


和 Java 12 一样,它是一个功能发布版本,并非 LTS 版本。因此,现在没有理由认为它无法按时发布。同样,它也不会被广泛使用,团队会更关注于迁移到 Java 11。


预测:Java 13 按时发布,并在 2019 年底出现少量生产部署。

值类型不会在 Java 13 中预览发布

值类型是除原始类型和对象引用之外的第三种 JVM 基础类型。这个概念可以被认为是放宽了 Java 类型系统规则,可以像 C 语言的结构体那样组合数据结构,同时保证完整的 Java 类型安全。


Java 语言架构师 Brian Goetz 用“代码像类,功能像int”这样的话来描述他想象该特性发布以后一个典型的开发人员会如何使用值类型。


实现值类型的努力一直在继续,但到 2018 年底,只出现了试验性、非常早期、只有专家使用的测试原型。


这一点也不奇怪,值类型是 Java 平台最根本和最深入的变更之一。


这一功能的复杂度和期望度以及所涉及的大量工程工作使得它不太可能在 2019 年内交付。


预测: 即使在 Java 13 预览功能中也不可能出现任何形式的值类型。

match 表达式首个版本将在 Java 13 中预览发布

switch 表达式是 match 表达式的先决条件。如果语法中没有表达式形式,match 表达式也不可能出现在 Java 中。事实上,如果没有 match 表达式,那么引入 switch 表达式也就变得没那么重要。


因此,我预测标准的 switch 表达式推出后,紧随其后会出现简单的 match 表达式。该功能刚开始可能仅限于类型匹配,不包含解构或其他高级功能。


预测:在 Java 13 的预览功能中会包含初始、有限的 match 表达式。

Kotlin 适度增长

来自JetBrains的Kotlin语言在最近几年里获得了越来越多开发人员的关注。特别是在 Android 领域出现了爆发式增长,Android 领域的新项目改由 Kotlin 主导。


然而,在服务器端 Java 方面并没有出现类似的爆发性增长。在 2019 年,我预计 Kotlin 的使用会稳定增长,但并不会有大量项目或团队突然转向使用 Kotlin。会有一些高知名度的项目公开使用 Kotlin。


预测:Kotlin 将持续获得 Java 核心社区成员的追捧,但并不会发生爆发式增长,规模还是比 Scala 生态系统小。

一如往常

上面提到了 Java 比较突出的一些变化。然而,在 Java 世界腹地,未来一年中将大致保持不变。Java 的 IDE、库和生态系统的其余部分将大致保持相同。


Java 在业内将继续保持稳固地位和发展趋势,并不会出现什么重大转折。


预测:没有具体的可量化预测。


查看英文原文:Java in 2019 - Some Predictions


2019-01-05 07:0021022
用户头像

发布了 218 篇内容, 共 74.7 次阅读, 收获喜欢 76 次。

关注

评论 1 条评论

发布
用户头像
机器翻译的效果一般啊,建议审稿的时候认真一些。
2019-01-07 09:57
回复
没有更多了
发现更多内容

数据出境是什么意思?我国数据出境合规要求是什么?

行云管家

数据 数据安全 堡垒机 数据出境

置顶两个月!《程序员如何向架构师转型》神作在Github持续霸榜

Java 程序员 系统设计 架构师

什么是“语法糖”?Java中有哪些常见糖?

Java你猿哥

Java ssm Java工程师 语法糖

2023字节、腾讯、阿里等6家大厂Java开发面试真题+高频面试题总结

小小怪下士

Java java程序员 java面试 Java面试题

用注解的方式优雅实现Ression分布式锁

Java 分布式锁 Ression

WorkPlus IM即时通讯平台,管理者不会拒绝的高效通讯办公工具

BeeWorks

从 1000+ 参赛项目突围,涛思数据荣获 ITEC 2022 全球创业赛成长组二等奖

TDengine

tdengine 物联网 时序数据库 数字经济 大数据 开源

弯道超车!阿里高工新产Java面试速成指南,面试骚操作都在里面了

Java你猿哥

Java 面试 面经 Java工程师 春招

机器学习算法(九): 基于线性判别模型的LDA手写数字分类识别

汀丶人工智能

人工智能 数据挖掘 机器学习 LDA算法

运动健康路线导入,助力用户轻松导航

HarmonyOS SDK

HMS Core

凭借左程云(左神)的这份 “程序员代码面试指南”我入职了字节

Java你猿哥

Java 算法 数组 二叉树 面经

手慢无!阿里云神作《Spring Boot进阶原理实战》真的太全了!

Java 微服务 Spring Boot 框架

最佳实践 | 用腾讯云智能语音打造智能对话机器人

牵着蜗牛去散步

腾讯云 腾讯 语音识别 语音合成 智能对话机器人

太厉害了!腾讯T4大牛把《数据结构与算法》讲透了,带源码笔记

Java你猿哥

Java 数据结构 算法 数据结构算法 左程云

Bytebase vs Flyway

Bytebase

数据库 版本控制 变更

AI + Kubernetes 赋能DevSecOps 的思考

HummerCloud

人工智能 Kubernetes DevOps

小程序营销模版——企业和开发者的应用形态

没有用户名丶

小程序容器

阿里巴巴为什么不建议直接使用@Async注解?

Java你猿哥

Java ssm java8 Async Java工程师

GitHub上架即下架!《分布式系统人人都是架构师》全彩笔记开源

Java 分布式 系统架构 架构师

微服务架构下你不得不知的3种部署策略

Java 架构 微服务

干货分享|袋鼠云数栈离线开发平台在小文件治理上的探索实践之路

袋鼠云数栈

大数据 平台开发

MySQL 语句中 where 条件后为什么写上1=1 , 是什么意思?

Java你猿哥

Java MySQL sql 后端 ssm

厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误

Java你猿哥

spring 面试 Spring Boot mybatis 面经

低代码平台搭建CRM 加速重构业务模式

力软低代码开发平台

LED透明屏私人定制势不可挡

Dylan

电子 LED显示屏 屏幕

不懂就问:MySQL delete 表数据,磁盘空间为什么没有被释放?

Java你猿哥

Java MySQL 数据库 innodb Java工程师

马鞍山等级测评机构有哪些?有几家?在哪里?

行云管家

等保测评 等级测评 马鞍山

接通率维持66%以上,为什么火山引擎VeDI能让企业智能外呼不再难?

字节跳动数据平台

营销 用户增长 业务增长 客户数据 企业号 3 月 PK 榜

百度大健康行业如何打造医美IP爆点?这波“悦己”营销有颜又有料!

极客天地

2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者_语言 & 开发_Ben Evans_InfoQ精选文章