亿元级IT行业生态链
一站式解决方案提供商

24小时免费咨询电话
010-52725243

新闻资讯

AJIA NEWS

2018年Java展望

来源:InfoQ 发布日期:2018-01-11

根据TIOBE发布的编程语言排行榜显示,虽然C语言荣获年度编程语言,但从长期走势图来看,Java无疑是2017年TIOBE排行榜冠军,并且JAVA依旧被评为最流行语言(详情参考2017年Java大事件总览及未来预测),阿甲科技研发团队在进行高度抽象的复杂系统时,就多采用Java语言进行编写。那么2018年Java又将会有哪些表现呢?

阿甲 科技 TIOBE编程语言走势图

伴随我们进入2018年的是,过去一年在Java世界中发生了前所未有的更多变化。其部分原因在于Java 9的推出,尽管推后了近一年的时间。但是现在阿甲科技Java程序员依旧使用Java 8进行开发,因为Java 9的一些模块功能还存在争议,因此阿甲科技Java开发者也更加谨慎,保守的决定等模块化成熟后再进行更新。

然而,随着时间的推移人们可能会发现,推出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中考虑了哪些功能,目前更是云山雾罩。我们只能确认下列几个功能在考虑范围内:

Epsilon。一种对Null垃圾回收算法的参考实现。

Dynamic Class File Constants 。一种主要针对软件库编写人员及使用动态特性invokedynamic高级开发人员的平台特性。

运行时追踪JIT编译事件。

一旦发布日期临近,该特性列表肯定会被填满。但是值得注意的是,列表中目前尚未提及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的整体形态浮出水面之前,我们必须再等待数月时间。

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。

阿甲科技

欢迎访问阿甲科技集团官方网站!