Java社区调查结果:74%的开发人员希望减少详细程度

一个新的JDK增强建议(JEP)在Java社区中风起云涌:JEP286。该建议建议在Java的未来版本中引入局部变量类型推断,以简化Java应用程序的编写。

在下面的文章中,我们将解释它的含义以及它将如何影响您的代码。

提案

新的语言功能建议在Java中添加一些语法糖—简化它并改善开发人员的体验。 新语法将减少与编写Java相关的仪式,同时保持对静态类型安全性的承诺。

换句话说,您无需指定关联的类型就可以声明变量。 Oracle声明该新功能将允许例如以下声明:

var list = new ArrayList<String>();
val stream = getStream();

那将替换当前的语法:

List<String> list = new ArrayList<String>();
final Stream<String> stream = getStream();

如您所见,Local Variable Type Inference将允许使用var关键字,而不是指定变量的类型。

众所周知,Java有点冗长,在阅读和理解您或另一个开发人员在编写函数时所想到的内容时,这非常有用。 对于那些一直认为这有点乏味的人来说,该提案标志着重大的改变。

该建议与Java 9无关,Java 9已经在制定中,并且还将改变您的编码方式

去JEP还是不去JEP?

几周前,Oracle Java语言架构师Brian Goetz 发布了这项新建议的调查结果 。 主要问题是:“您总体上对拟议的局部变量类型推断功能有何看法?”。 2,453个开发人员回答,结果我们基本上是肯定的:

图像-e1460556767492

您如何看待建议的局部变量类型推断功能?

该调查的第二部分着眼于未来的语法,根据其他语言(例如C#,Scala,Swift,C ++或使用let)的类似用法,建议了5种选择。 大多数用户选择var / val选项:

图片1

可能的语法选项

即使大多数用户认可此新选项,但阅读注释部分仍会显示开发人员赞成此更改,要求Oracle“与时俱进”,指出此更改应仅适用于val,甚至要求更多更改,例如作为多行字符串。

反对该建议的开发人员声称,对于那些刚开始使用Java的人来说可能会很困难,或者指出现有语法是“冗长和易读性的正确组合”,而“ diamond运算符是一个不错的选择。行动”,与目前的提案不同。

这种变化来自何处?

关于Java的最常见的抱怨之一是编写Java所需的样板代码数量。 可以用其他语言(如C ++,C#,Scala和Go)用一行代码编写几行Java代码。

尽管类型推断不是Java中的新概念,但它是局部变量的新概念。

它是在Java 7中(作为Project Coin的一部分)通过菱形运算符(<>)引入的,该运算符允许在不使用类型绑定ArrayList <>的情况下初始化列表,而在Java 8中使用Lambda Formals进行引入。 例如,使用菱形运算符可以编写以下代码:

List<String> list = new LinkedList<String>();

当然, 在JEP 286摘要页面上,您可以从Oracle找到以下添加新功能的理由:

“ Java几乎是唯一不包含局部变量类型推断的流行的静态类型语言。 在这一点上,这不再是一个有争议的功能”

这将如何影响您的代码?

Oracle知道社区可能需要一些时间来适应和接受这一新建议。 虽然尚不清楚JEP 286是否以及何时在将来的Java版本中成为现实,但这足以使社区中的一些开发人员大声疾呼。

如果您是这些开发人员之一,那么您将很高兴得知此处理方法仅限于:

  • 带有初始化器的局部变量
  • 增强的for循环中的索引
  • 在传统的for循环中声明的本地人

Oracle 声明它将不适用于:

  • 方法参数
  • 构造函数参数
  • 方法返回类型
  • 领域
  • 捕获形式(或任何其他类型的变量声明)

由于Java承诺支持Java的早期版本,因此我们可以假定它不会破坏向后兼容性。

在家尝试一下

Takipi的我们总是喜欢在新产品上市之前尝试它们,而JEP 286正是这样。 如果您对JEP 286没意见,可以立即自己检查一下。

作为采用OpenJDK计划的一部分,Richard Warburton和Raoul-Gabriel Urma公开发布了具有JEP 286支持的Open JDK的非正式版本 。 这样,您就可以尝试这些新功能,了解JEP 286的全部内容,并在实际操作中体会到它。

最后的想法

这项新提议正在Java社区中引起轰动,引起了很多关注。 您现在可以测试新功能的事实将帮助开发人员认识到Java的未来可能掌握的东西。

重要的是要记住,这是一个较早的建议,目前还不清楚Oracle是否会实施它。 因此,我们鼓励您参与将来的调查,并积极参与本JEP和其他将来与Java相关的功能。

翻译自: https://www.javacodegeeks.com/2016/04/java-community-survey-results-74-developers-want-less-verbosity.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值