InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Mark Reinhold谈Java闭包

作者 Charles Humble 译者 张龙 发布于 2009年11月25日

领域
架构 & 设计,
语言 & 开发
主题
Java ,
语言 ,
编程 ,
语言设计 ,
闭包(Closures) ,
语言特性

在近日召开的Devoxx大会上爆出消息:Sun将在Java中增加闭包,紧跟着Mark Reinhold发表了一篇博文揭示了该决定背后的一些内幕。

Java闭包的主要应用场景在于并行编程。Reinhold说使用类似于并行数组这样的工具需要太多的Java样板代码,如果将闭包引入到语言中则可以减少样板代码的数量。他继续说到:

在过去几年中有3个提案都涉及到为Java增加闭包,他们分别是:BGGA、CICE和FCM。这些提案都涵盖了广泛的复杂性及强大的功能。在深入理解这些提案后,我觉得每个提案的想法都很棒但没有一个完全适合于“可以使用的程序员语言”这一着眼点。

要想支持并行编程,我们只需要两个主要的特性即可:
  • 编写闭包的语法。
  • 函数类型,这样闭包就会成为类型系统中的一等公民。

要想将闭包与语言和平台的其他部分集成起来我们还需要另两个特性:
  • 闭包变换,这样恰当类型的闭包就能用在需要单方法接口或是抽象类对象的地方。
  • 扩展方法,这样面向闭包的大数据量方法就可以经过翻新应用到现有的程序库中,尤其是集合框架而不会破坏兼容性。

Java饱受诟病的一点就是缓慢的发展速度。但有时这种批评显得太过火了(比方说从C++上次更新到现在的时间内Java已经发布4个主要版本了)。假如能够以一种不会直接影响语言的方式对Java进行试验,那么这种方式就是积极的。在此前的文章中,我探索了3种不同的技术来实现这一点,他们分别是DSL、Java 6的注解处理器以及为语言和IDE增加语法糖,虽然每种技术都很棒,但我们发现他们在闭包支持上都无法摆脱固有的限制。Sun的解决方案是在决定是否将该特性作为Java SE的标准前利用JDK 7项目本身进行试验。Reinhold说到:

如前所述,Sun将开始设计并实现简单闭包并将其增加到JDK 7中以进行更广泛的试验。如果一切顺利,我们将提交一份语言变化JSR并将其作为最终Java SE 7 JSR的一个组件。

Sun很渴望“每个人都能参与到早期闭包的讨论中,有人能提出自己的观点”,同时一个设想的提案也将于不久后发布。

查看英文原文:Mark Reinhold on Closures for Java

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

期待 发表人 Hao Eric 发表于
怎么感觉SUN被收购了以后自己都没了主见。 发表人 Ma Karl 发表于
  1. 返回顶部

    期待

    发表人 Hao Eric

    非常期待,但是这次闭包设计的好与坏会直接影响到大众对Java新版本的看法,谨慎啊

  2. 返回顶部

    怎么感觉SUN被收购了以后自己都没了主见。

    发表人 Ma Karl

    怎么感觉SUN被收购了以后自己都没了主见。