BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Mark Reinhold谈Java闭包

| 作者 Charles Humble 关注 829 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2009年11月26日. 估计阅读时间: 2 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

在近日召开的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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

期待 by Hao Robert

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

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

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

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT