阅读更多

28顶
0踩

编程语言

翻译新闻 Stephen访谈:为什么要加入闭包

2009-11-23 09:45 by 见习编辑 Eastsun 评论(10) 有7880人浏览

一年前,Sun的首席工程师Mark Reinhold在Devoxx大会上宣布Java的下一个重要版本Java7将不会包括闭包;而一年后,还是在Devoxx大会上,Reinhold令人意外的宣布,Java7中将引入闭包。是什么原因让SUN作出这个改变呢?在这次访谈中,Bill Venners将采访joda.org的项目主管、FCM闭包提议的合著者Stephen Colebourne,讨论他对于这个重大改变的看法。


Bill Venners:你认为是什么原因使SUN对一年前的宣布作出改变,最终决定在JDK7中加入闭包?
Stephen Colebourne:一年前SUN认为没有充足的时间为JDK7中加入闭包,因为有太多不同的闭包提议,而且没有足够的经验去决定采用那一个。一个因素是JDK7的发布推迟到明年的年末,这样就有了足够的时间。并且Neal Gafter的BGGA实现提供了一些经验,让他们决定哪些是需要的而哪些是可以舍弃的。
从理论的角度,BGGA提议提供了最为完整的闭包实现。我认为Mark Reinhold评估了BGGA提议并且决定舍弃提议中原有的non-local return以及control invocation statement。在去掉了这些之后,BGGA看起来与v0.5的FCM提议非常相似。我建议将0.6a的提议重命名为 CFJ (Closures For Java).

Bill Venners:你认为还有哪些其它的因素影响了这个决定?
Stephen Colebourne:我认为最为关键的原因是fork-join框架改变了人们的看法。Doug Lea已经完成了fork-join框架的工作。其中的并行阵列API及其繁琐,仅仅是针对四种基本类型,就需要80个interface。并且对程序员及其不友好,你需要使用内部类,并且使用正确的泛型;你还得从80个interface中作出正确的选择。而闭包将很大程度上简化这些API并且使用起来更加简单。

FCM (First Class Methods)提议:http://docs.google.com/Doc?id=ddhp95vd_0f7mcns
BGGA闭包提议:http://javac.info/
Stephen Colebourne's Weblog:http://www.jroller.com/scolebourne/entry/closures_in_jdk_7
28
0
评论 共 10 条 请登录后发表评论
10 楼 wenxiang_tune 2009-11-24 21:37
80个interface wa ao... 
9 楼 damoqiongqiu 2009-11-24 16:38
OMG...闭包来了。。。
8 楼 hantsy 2009-11-24 16:05
java 现在是个大杂缸。。。什么都有。。。
7 楼 aninfeel 2009-11-24 08:54
引用
doug lea真是一大牛人!中国怎么就没有这样的人呢?
别跟我说有,只是没表现出来啊!

有也是被埋没的命
6 楼 Feiing 2009-11-23 22:37
fansofjava 写道
doug lea真是一大牛人!中国怎么就没有这样的人呢?
别跟我说有,只是没表现出来啊!


全世界也没几个这样的人
5 楼 fansofjava 2009-11-23 17:57
doug lea真是一大牛人!中国怎么就没有这样的人呢?
别跟我说有,只是没表现出来啊!
4 楼 andyyehoo 2009-11-23 16:08
支持闭包和fork-join的java7,应该很精彩
3 楼 Norther 2009-11-23 13:37
仅仅是针对四种基本类型,就需要80个interface
2 楼 badqiu 2009-11-23 11:03
Bill Venners这个老头倒是蛮搞笑的,呵!
1 楼 dengguoyu 2009-11-23 10:48
80个interface

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Recursive:Java 8 的递归闭包

    递归Java 8 的递归闭包基于stackoverflow上的这个答案: : 包含一个简单的用法演示。 查看我的另一个函数式编程项目: : 博客条目: :

  • 闭包:什么是闭包、闭包的作用、闭包的解决

    学习闭包我们要清楚函数作用域、内存回收机制、作用域继承。作用域我们可以认为它是一个封闭的盒子,只让它在这个盒子里面进行操作,也可以称这个盒子为独立作用域。在js中,一个函数要执行时就会在内存里面创建一个...

  • 什么是闭包,为什么要用闭包?

    1)什么是闭包 函数执行后返回结果是一个内部函数,并被外部...当不需要使用闭包时,要及时释放内存,可将内层函数对象的变量赋值为null。 2)闭包原理 函数执行分成两个阶段(预编译阶段和执行阶段)。 在预编译阶

  • 防抖为什么要使用闭包

    从概念上来讲,所谓的闭包指的是一个函数,有权访问另一个函数作用域中的变量的函数。 直观点来讲,JavaScript的闭包就是函数中嵌套函数。 <input type="text" id="input"/> <div id="show"></div&gt...

  • 什么是闭包,闭包的作用,为什么要使用闭包?

    什么是闭包,闭包的作用,为什么要使用闭包? 什么是闭包,闭包的理解 一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。也...

  • 面试官:什么是闭包?闭包的应用场景?闭包为什么会造成内存泄露?怎样解决?

    闭包为什么会造成内存泄露?怎样解决?他也会问你是否遇到过内存泄漏,如何解决的? 因为像Vue这种SPA单页面应用,浏览器其实不会主动去跳转和刷新的,页面内容的更新是通过vue-router实现的,所以比较容易出现内存...

  • 面试常见整理:什么是闭包?闭包的作用?

    什么是闭包? 闭包是指有权访问另外一个函数作用域中的变量的函数.可以理解为(能够读取其他函数内部变量的函数)。 闭包的作用 正常函数执行完毕后,里面声明的变量被垃圾回收处理掉,但是闭包可以让作用域里的 变量...

  • 【离散数学】九章:关系 - 关系的闭包

    闭包(closure)的定义、不同类型的闭包(自反闭包、对称闭包、传递闭包) 闭包的几个定理、有向图中的路径、传递闭包

  • 面试题:什么是闭包

    比较好的答法: 1、讲讲这个技术 2、说说它的原理:它的好处 它的不好之处和代替方案 3、讲一讲个人更深的见解 ... 可以使用闭包,利用闭包是一个有作用域的功能来,把每一个业务的代码写在闭包中,闭包声明在闭...

  • promises-without-closures:如何在不需要闭包的情况下使用 JS 承诺

    没有闭包的承诺 当需要传递状态时,通常使用闭包。 可悲的是,这会降低性能,这在性能真的很重要时很糟糕。 这是在编写基于 Promise 的代码时避免闭包的一个小例子。 它使用和它的Promise.bind()实用函数,并且基于...

  • js:防抖、节流(闭包)

    如果不使用闭包的话,可以把count变量声明在函数外部,变成一个全局函数。但是这样容易造成变量污染。(2)节流:一段时间内,只有第一次点击会生效,然后开始计时。类似于游戏中的技能cd。(1)防抖:类似于游戏中...

  • 杂谈:什么是闭包?闭包会造成内存泄露?

    这篇文章我们用杂谈的形式带着你重新理解下什么是闭包。 起源: 闭包翻译自英文单词 closure,这个概念第一次出现在 1964 年的《The Computer Journal》上,由 P. J. Landin 在《The mechanical evaluation of expr.....

  • js高级篇:什么是闭包?闭包有什么用?面试时如何处理闭包问题?

    须知:我们在学一个新的东西的时候,例如我们第一次见到电饭煲,我们要知道什么是电饭煲(定义),知道电饭煲有什么用(作用),知道电饭煲怎么用(用法),如何用电饭煲煮一顿好吃的饭(实践),做出来之后你就真正...

  • js 函数防抖为什么要用闭包?

    前两天面试 ,面试官问我闭包的应用场景,我没有回答出来,最近看了看,其中一个场景就是函数防抖节流。 开始实验 函数防抖是指在函数被高频触发时当停止触发后延时n秒再执行函数(即每次触发都清理延时函数再次开始...

  • 为什么要使用闭包和如何使用闭包

    为什么我们要使用闭包?又该如何使用闭包呢? 为什么我们需要闭包 首先来看一个例子,我们来实现一个计数器。 var counter = 0; function add() { return counter += 1; } add(); add(); add();// 计数器现在为...

  • 闭包:序列化闭包(匿名函数)

    Opis封闭可序列化的闭包Opis Closure是一个库,旨在通过提供使所有闭包可序列化的包装器来克服PHP在闭包序列化方面的限制。 该库的主要功能: 序列化任何关闭序列化任意对象不使用eval进行闭包序列化或反序列化可与...

  • js-sandbox:了解和演示闭包的小型 js 测试

    js-闭包 用于理解和演示闭包、Web 套接字和 FP 等概念的小型 js 测试

  • 彻底搞清闭包是什么,为什么要使用闭包

    之前在网上看的什么是闭包,全是复制粘贴,也没弄清楚。 首先说下闭包:闭包就是重用一个变量,且保证这个变量不会被污染的一种机制。提到变量,我们应该知道。变量分为全局变量和局部变量 全局变量:可重用但是会...

  • 为什么要使用闭包(closures)

    闭包是一个难学的概念,首先要搞清楚为什么需要闭包?其实闭包的出现往往是函数式编程的语言里,在面向对象的编程语言里是可以不需要闭包的。因为闭包作用如下:1. 避免使用全局变量,实现数据隐藏和保持,也就是...

  • 东营市乡镇边界,矢量边界,shp格式

    矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用

Global site tag (gtag.js) - Google Analytics