写点什么

2018 年 Java 展望

  • 2018-01-09
  • 本文字数:1431 字

    阅读完需:约 5 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

在 2017 年即将结束之际,让我们展望一下 2018 年的 Java 平台。

伴随我们进入 2018 年的是,过去一年在 Java 世界中发生了前所未有的更多变化。其部分原因在于 Java 9 的推出,尽管推后了近一年的时间。

然而,随着时间的推移人们可能会发现,推出 Java 9 版本的意义,远没有随该新版本一并推出的 Java 版本发布周期变更为每六个月一次的意义更为重大。Java 版本发布周期的变更,意味着在 2018 年将会推出两个 Java 新版本,而非一个。

2018 年将推出的第一个新版本称为 Java 10,第二个新版本是 Java 11。虽然这一命名方案与现有命名看上去毫无二致,但是新版本只有经过重大公开辩论并达成最终共识后,才能得以推出。

鉴于新版本的推出将切换到这样一种严格按时间点的节奏,预计这将使每个新版本中发布的Java 特性,比迄今为止所能看到的范围更为缩减。就Java 10 而言,这意味着新特征的数量将相当之少。

InfoQ 先前曾报道了 Java 10 中的主要特性。此后,该版本中添加特性的仅是一些细微的( Additional Unicode Extensions )、清理性质的(移除了原生的头部生成工具提供默认的CA 根证书)、实验性质的(基于Java 的JIT 编译器 Graal ),或是当前为利基性质的 (对异构内存架构的支持)。

至于 Java 11 中考虑了哪些功能,目前更是云山雾罩。我们只能确认下列几个功能在考虑范围内:

一旦发布日期临近,该特性列表肯定会被填满。但是值得注意的是,列表中目前尚未提及 Java 值类型。这也许并不出乎意料,因为实现值类型需要对 Java 语言和运行时做重大更改,并对 Java 类型系统(包括泛型)做完全重构。

尽管当前原型已工作,但是距特性交付尚有很长的路要走。当前状态只适用于低级别的平台开发人员,以及那些习惯于使用基于反射(reflective)或MethodHandle 工具的开发人员。看上去令人不可思议的是,尽管值类型将作为Java 11 的一部分发布,但是Oracle 依然尚未对该特性预期于何时发布公开发表任何评论。

但是,如果值类型并未作为Java 11 的一部分提供,这将会产生连锁反应。包含值类型的首个长期支持(LTS)版本将不会在2021 年9 月前发布。

在撰写本文时,我们尚不清楚已在提案中的数据类( data classes )特性是否会出现在 Java 11 中。正如 Java 语言架构师 Brian Goetz 所介绍的:

数据类将用于解决类的表示与 API 合约间存在的复杂间接关系。通过使用数据类,编译器可以填入一些常规类成员。

数据类提案与 Scala 的 Case 类具有一些相似之处。但是 Goetz 明确指出,数据类的设计空间中还存在一些可能的变动,该特性的整体语义含义要比目前我们能看到的更为深入。目前的数据类概念是与同处于开发过程中的模式匹配特性深度关联在一起的。但是,这两个特性可能会在不同的版本中提供。

与上面两个特性都相关的是,未来可能对 Switch 形式做改进。Switch 语句块将可作为表达式或声明使用。

该特性相对较小,有望在 Java 11 中交付,即便数据类或模式匹配特性尚未实现。但目前情况看,该特性仍然是一个 JEP 草案。

最终将于 9 月发布的版本,其特性完成日期是 2018 年 6 月。因此,在 Java 11 的整体形态浮出水面之前,我们必须再等待数月时间。

查看英文原文: Looking Forward to Java in 2018

2018-01-09 18:007064
用户头像

发布了 391 篇内容, 共 150.2 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

【高并发】深度解析ScheduledThreadPoolExecutor类的源代码

冰河

并发编程 多线程 高并发 协程 异步编程

【网络安全篇】--HTML基础(预计学习时间:30分钟)从此以后不迷糊~

贤鱼很忙

html 前端 10月月更

面试官:数据库加了唯一索引,就不会有重复数据了吗???

小小怪下士

Java MySQL 程序员

你真的了解v-model吗🔥

渔戈

前端 Vue3 10月月更

升级全新网络方案,给你低成本、高性能的裸金属体验

华为云开发者联盟

云计算 后端 华为云 云服务器 企业号十月 PK 榜

复杂场景数据处理的 OLTP 与 OLAP 融合实践

NebulaGraph

数据库 知识图谱

Python列表和元组有什么区别

芥末拌个饭吧

后端 python 3.5+ 10月月更

以指标驱动业务决策,Kyligence 亮相 Gartner IT Symposium/Xpo™ 峰会

Kyligence

数据分析 指标中台 OLAP技术

全彩LED显示屏近年来在中国的发展趋势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

算法 | 详解斐波那契数列问题

甜点cc

JavaScript 算法 10月月更 斐波那契数列

vue-router学习-1

Studying_swz

前端 10月月更

HashMap源码分析(六)

知识浅谈

hashmap 10月月更

基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务

汀丶人工智能

nlp

牛客刷题系列之进阶版(搜索旋转排序数组,链表内指定区间反转)

雪芙花

c c++ 10月月更

你真的了解过Vue的组件化开发吗🔥

渔戈

前端 Vue3 10月月更

详解Native Memory Tracking 追踪区域分析

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

2022年第六届数据质量管理国际峰会重磅开启

数据质量管理智库

数据 数据隐私 数据安全 峰会 数据质量

openGemini内核源码正式对外开源

华为云开发者联盟

数据库 物联网 华为云 企业号十月 PK 榜

【kafka运维】Topic的生产和消费运维脚本

石臻臻的杂货铺

kafka kafka运维 10月月更

记一个“奇葩”需求的实现

甜点cc

JavaScript 前端 Element UI 10月月更

技术分享 | 测试开发工程师必读经典好书清单,抽奖赠书送福利!

霍格沃兹测试开发学社

校招面试真题 | 显式等待与隐式等待的区别?与强制等待的方式分别是什么,有什么区别?

霍格沃兹测试开发学社

C++精通之路:红黑树

雪芙花

c c++ 10月月更

牛客刷题系列之初阶版(自守数,返回小于 N 的质数个数,第一个只出现一次的字符)

雪芙花

c c++ 10月月更

Vue_Webpack详解

Studying_swz

前端 10月月更

Vue的开发模式与webpack🔥

渔戈

前端 Vue3 10月月更

《Go语言学习路线图》让你少踩坑,高效学,Let’s Go!

王中阳Go

golang 学习方法 技术专题合集 10月月更 “程”风破浪的开发者

一种基于柔性事务的分布式事务解决方案设计探究

京东科技开发者

编程 分布式事务 事务 事务回滚 柔性事务

热门探讨:为何数字化转型的企业,大都“死”在了黎明前夕?

优秀

数字化转型

【网络安全篇】JavaSript基础内容大全

贤鱼很忙

10月月更

Java中的super和this关键字详解

共饮一杯无

Java 10月月更 super和this关键字

2018年Java展望_Java_Ben Evans_InfoQ精选文章