周一下午在JavaOne 2011的希尔顿旧金山大宴会厅B上做了“ Project Lambda:迈向多核和超越”(会议27400,不要与Brian Goetz的同名演讲相混淆) 的演示 。大宴会厅关闭,这是一个非常大型的非主题演讲场地,并且有一台大型摄像机(配有摄像机操作员)准备对演示文稿进行拍摄。 这可能可以解释为意味着会议组织者对Java SE 8 ( JSR 337 )和Lambda项目的报道产生了极大的兴趣。 演讲者Alex Buckley (Java语言和虚拟机的规范负责人)和Daniel Smith (项目Lambda规范负责人)是演示者,接下来将演示本演示文稿的摘要。

本课程涵盖Java SE 8的主要新语言功能-lambda表达式,方法引用和扩展方法-并探讨现有和将来的库将如何利用它们来使客户端代码同时具有更高的性能和更少的错误。 -易于。

功能接口是“一种方法的接口”。 Lambda表达式是“创建功能接口实现的一种方式”。 Lambda表达式允许简单,简洁地表达功能的“实质”,尤其是与匿名类的膨胀相比。 几张幻灯片中包含一些代码示例,这些代码示例显示了我们今天将如何进行处理,而lambda表达式所支持的表示更为简洁。
Lambda表达式“可以引用封闭范围内的任何有效最终变量。” 这意味着final关键字不是必需的,而是需要在lambda表达式引用的方法中将其视为final(未分配引用)。 宣布了更多的lambda表达式规则: this指针引用了封闭对象而不是lambda表达式。 “无需在lambda表达式中使用参数类型”,因为它们是“根据功能接口的方法签名来推断的”(无需动态键入)。 方法引用支持“将方法作为Lambda表达式使用”的“重用”。
Buckley谈到外部迭代是Java库中当前的主要方法。 在这种习惯用法中,“客户端决定迭代”并且“不是线程安全的”。 他谈到了引入并行for循环来解决此问题的缺点,但从并行for方法中提取了一些概念:“过滤器”和“归约器”。 Buckley引入了“内部迭代有助于并行习语”的想法,因为它不需要串行执行并且是线程安全的。
Java 8面临的问题之一是需要改造库以使用lambda表达式,但是它们已经定义了在库和集合中大量使用的接口。 可以用来解决此问题的一种方法是在Java中使用静态扩展方法,类似于C#中可用的方法。 这种方法有很多优点,但是也有一些主要的缺点,例如无法使用反射。 决定重新考虑“不能向接口添加操作”的“规则”。 基于此,随后的决定是添加虚拟扩展方法 ,该方法在接口中提供默认实现,该接口仅在接收器类未使用默认实现覆盖该方法时使用。
幻灯片标题为“您是否向Java添加了多个继承?!” 指出“ Java一直具有类型的多重继承”和“现在具有行为的多重继承”,但仍不支持“状态的多重继承,这会导致大多数问题。” 幻灯片补充说:“行为的多重继承是相当良性的”,而且仅当编译分多个步骤进行时,这确实是一个问题。 在本演示文稿中强调了扩展方法是语言功能和虚拟机功能(“关于继承和调用的其他所有内容都是VM功能!”)。 为此,项目符号指出:“如果需要,调用界面将消除多种行为的歧义。” 非Java JVM语言可以“共享财富”扩展方法,其中有一张幻灯片提供了三个示例。
Daniel Smith主持了有关并行库主题的演示。 他展示了一张幻灯片“ Betain the New Iterable”,其中展示了一个Iterable接口,其中包括isEmpty()forEachfiltermapreduceinto 。 他还展示了Iterable通过扩展方法parallel()获得的Parallelterable接口上的幻灯片。
Smith在其关于社区贡献的幻灯片中提供了对JSR 335,JSR 166和Lambda项目的引用。 他还列举了JavaOne 2011上另外四个关于lambda表达式和紧密相关主题的会议。 Smith结束时引用了Brian Goetz在Lambda项目上的一句话 : …我们相信,对Java开发人员来说,我们能做的最好的事情就是向他们轻柔地推动编程的功能化。 我们不会将Java变成Haskell,甚至不会变成Scala。 但是方向很明确。  
结论
Smith的示例清楚地表明,lambda表达式将为Java开发人员的日常工作提供巨大的好处。 他展示了我们都必须编写数百或数千次的循环类型以及lambda表达式使之更简洁,更简洁的语法。 该演示文稿已经清楚地表明,随着引入lambda表达式,Java将在流畅性和简洁性方面获得动态类型语言所享有的许多好处。
参考: JavaOne 2011:Lambda项目:在我们的JCG合作伙伴 Dustin Marx的启发下 ,在Real Events博客上得到了Lambda的超越 。

翻译自: https://www.javacodegeeks.com/2012/08/project-lambda-to-multicore-and-beyond.html

Lambda项目:迈向多核及超越相关推荐

  1. lambda ::_Lambda项目:迈向多核及超越

    lambda :: 周一下午在JavaOne 2011的希尔顿旧金山大宴会厅B上做了" Project Lambda:迈向多核和超越"(会议27400,不要与Brian Goetz ...

  2. java 8 lambda_Java 8的烹调方式– Lambda项目

    java 8 lambda 什么是project lambda :Project lambda是用于以Java语言语法启用lambda表达式的项目. Lambda表达式是功能编程语言(如lisp)中的 ...

  3. Java 8的烹调方式– Lambda项目

    什么是project lambda :Project lambda是用于以Java语言语法启用lambda表达式的项目. Lambda表达式是功能编程语言(如lisp)中的主要语法. Groovy将是 ...

  4. 精通lambda表达式:Java多核编程pdf

    下载地址:网盘下载 内容简介  · · · · · · lambda表达式权威指南 <精通lambda表达式:Java多核编程>介绍Java SE 8中与lambda相关的特性是如何帮助J ...

  5. 精通lambda表达式:java多核编程_Java8 Lambda表达式和流操作如何让你的代码变慢5倍...

    有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Java 编程风格--iterator 和 for-each 循环--比 Java ...

  6. 中国开源项目迈向全球化!

    整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 中国开源正在登上全球化舞台,成为一股不容忽视的中坚力量.在国际开源领域,ant-design.vue-element-admin 等热门开 ...

  7. 叶胜超:LAMBDA(LAMB) ----去中心化存储的黑马项目!

    01 项目简介 LAMBDA,简称:LAMB,是又一个去中心化的存储项目,相比于IPFS这个人尽皆知的白马项目,LANB更像一个黑马项目,LAMB的目的是以推动互联网去中心化发展为使命,为新一代价值互 ...

  8. 项目经理的超越(一)你超越了吗?

    你超越了吗? ------------------------------------------------- 时间进度~~~成本控制~~~质量要求~~~客户满意~~~个人成功~~~ 这些仿佛咒语般 ...

  9. 探索Java语言与JVM中的Lambda表达式

    2019独角兽企业重金招聘Python工程师标准>>> 转载来源:http://www.admin10000.com/document/1291.html Lambda表达式是自Ja ...

最新文章

  1. linux下的ps aux | grep -c php-fpm 与netstat -napo |grep php-fpm | wc -l 命令
  2. java逻辑移位和算术移位,关于对移位运算的理解
  3. Java-开源工具类
  4. CodeForce 2A —— Winner
  5. python安装pip_在MAC下安装pip,并关联到相应的python版本
  6. html5canvas简单画图
  7. 诗与远方:无题(八)
  8. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
  9. Vue——知识体系总结
  10. python with关键字_python with关键字学习
  11. 拦截导弹 (最长上升子序列LIS)
  12. 15. 发货选项(Shipping Options)
  13. 软件选择,iDreamPiano、freepiano、EveryonePiano
  14. python 区块链 文件共享_Python实现自己的分布式区块链视频教程
  15. 企业认证CMMI都需要那些流程?
  16. Python爬虫——5-2.使用selenium和phantomjs模拟QQ空间登录
  17. e会学c语言程序设计基础网课答案,C程序设计(双语版)习题答案
  18. 10、一篇经典的域渗透文章
  19. Java面向对象编程——类与对象
  20. 火影Vulcan笔记本金钢T1安装Win7系统图文教程

热门文章

  1. tensorflow图形检测_社交距离检测器——Tensorflow检测模型设计
  2. X86汇编语言中的registers相关
  3. HDU1576(欧几里得算法)
  4. sql limit 子句_Java 8流中的常见SQL子句及其等效项
  5. lambda ::_Lambdas中的例外:有点混乱的优雅解决方案
  6. java数字格式化_Java数字格式
  7. 函数指针使用场景和选择_在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体...
  8. 用Java中的抽象类扩展抽象类
  9. aws iam 架构图_使用IAM保护您的AWS基础架构
  10. 使用JUnit 5在Mockito中方便地进行模拟–官方方式