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

lambda ::

周一下午在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 。 他还展示了可通过扩展方法parallel()Iterable获得的Parallelterable接口上的幻灯片。
Smith在其关于社区贡献的幻灯片中提供了对JSR 335,JSR 166和Lambda项目的引用。 他还列举了JavaOne 2011上另外四个关于lambda表达式和紧密相关主题的会议。 史密斯以Brian Laetda在Project Lambda上的一句话作为结尾: …我们相信,对Java开发人员来说,我们能做的最好的事情就是让他们轻而易举地朝着更具功能性的编程风格发展。 我们不会将Java变成Haskell,甚至不会变成Scala。 但是方向很明确。  
结论
Smith的示例清楚地表明,lambda表达式将为Java开发人员的日常工作提供巨大的好处。 他展示了我们都必须编写数百或数千次的循环类型以及lambda表达式使之更简洁,更简洁的语法。 该演示文稿已经清楚地表明,随着引入lambda表达式,Java将在流畅性和简洁性方面获得动态类型语言所享有的许多好处。
参考: JavaOne 2011:Lambda项目:在我们的JCG合作伙伴 Dustin Marx的启发下,在Multimedia and Beyond上, 来自Inspired by Actual Events博客。

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

lambda ::

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 8:默认方法解析规则

随着Java 8中默认方法的引入,一个类现在可以从多个位置(例如另一个类或接口)继承相同的方法。 在这种情况下,可以使用以下规则来确定选择哪种方法: 类或超类方法声明始终优先于默认方法 否则,将使用具有最…

Log4j 2使用教程二 【详解】

配置Log4j 2的配置可以通过4种方式中的1种完成:1、通过使用XML,JSON,YAML或属性格式编写的配置文件。 2、以编程方式,通过创建一个ConfigurationFactory和配置实现。 3、以编程方式,通过调用配置界面中公开的API将组件…

firstJava

import java.util.Date;/*** Created by Administrator on 2018/3/30.*/ public class Test {public static void main(String[] args) {System.out.println("强调自主练习");new Date();} } 转载于:https://www.cnblogs.com/fengdaren/p/8675148.html

将Java EE Monolith雕刻成微服务

在介绍了为什么微服务应该由事件驱动的简介博客之后,我想采取一些其他步骤,并在有关博客的同时准备我即将进行的一系列演讲(请参阅jBCNconf和Red Hat Summit,旧金山 )。 在Twitter christianposta上关注我,…

【终结版】C#常用函数和方法集汇总

C#里面的常用的函数和方法非常重要,然而做题的时候会经常忘记这些封装好的方法,所以我总结一下 C#常用函数和方法集。 【1】C#操作字符串的常用使用方法 在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是…

hadoop hdfs (java api)

简单介绍使用java控制hdfs文件系统 一、注意namenode端访问权限&#xff0c;修改hdfs-site.xml文件或修改文件目录权限 本次采用修改hdfs-site.xml用于测试&#xff0c;在configuration节点中添加如下内容 <property><name>dfs.permissions.enabled</name>&l…

glassfish_重写到边缘–充分利用它! 在GlassFish上!

glassfish现代应用程序开发的一个重要主题是重写。 自从Java Server Faces引入和Java EE 6中新的轻量级编程模型以来&#xff0c;您一直在努力使用漂亮&#xff0c;简单&#xff0c;可添加书签的URL。 PrettyFaces已有一段时间了&#xff0c;即使我可以说服它在3.3.3版本中被称…

BZOJ 4557 JLOI2016 侦查守卫 树形dp

题目链接&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id4557 题意概述&#xff1a; 给出一棵树&#xff0c;每个点付出代价w[i]可以控制距离和它不超过d的点&#xff0c;现在给出一些点&#xff0c;问控制这些点的最小代价是多少。 分析: 观察一下数据范围发现…

Java6上开发WebService

Java6上开发WebService 2010-01-23 16:19:00 标签&#xff1a;Java6 WebService 休闲 职场 版权声明&#xff1a;原创作品&#xff0c;如需转载&#xff0c;请与作者联系。否则将追究法律责任。 近日朋友问起Java开发WebService的问题&#xff0c;于是为其写了一份简单说明&…

在spring中该如何使用DTO,以及DTO和Entity的关系

1. DTO是用于将后台的数据结构&#xff08;javaBean&#xff09;转换为对用户友好的表现方式的数据结构&#xff0c;同时也能防止后台数据直接传送到前台而存在的潜在危险。 2. 可以时候要哪个springbot框架提供的转换器接口&#xff1a; org.springframework.core.convert.con…

带有Kafka和ZeroMQ的分布式类星体演员

因此&#xff0c;您已经有了使用actor的精美设计&#xff0c;选择了JVM和Quasar在该主题上的强大而忠实的观点。 所有明智的决定&#xff0c;但是在集群上进行分配时您有什么选择呢&#xff1f; 星系 Galaxy是一个非常酷的选择&#xff1a;快速的内存中数据网格&#xff0c;针…

JAVA中断线程的方法

JAVA中断线程的方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃&#xff0c;使用它们是极端不安全的&#xff01; 现在&#xff0c;如果你要安全有效地终止一个线程&#xff0c;应该采用以下这些方法&a…

最常见的Java异常及其对Java开发人员的评价

我知道我说在完成视频之前我不会张贴帖子&#xff0c;但这一直困扰着我。 至于视频的更新&#xff0c;我有些懒散&#xff0c;有些忙碌&#xff0c;但是我已经准备好记录第一集&#xff0c;这是我第一次有机会&#xff0c;而且我不需要太多的编辑。 无论如何&#xff0c;还是今…

日志系统设计

日志系统设计 2009-12-11 00:46:58| 分类&#xff1a; 技术 | 标签&#xff1a; |字号大中小 订阅 一、重要性日志系统在整个系统架构中的重要性可以称得上基础的基础&#xff0c;但是这一点&#xff0c;都容易被大多数人所忽视。因为日志在很多人看来只是printf。在系…

bzoj 1124 [POI2008]枪战Maf 贪心

[POI2008]枪战Maf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 741 Solved: 295[Submit][Status][Discuss]Description 有n个人&#xff0c;每个人手里有一把手枪。一开始所有人都选定一个人瞄准&#xff08;有可能瞄准自己&#xff09;。然后他们按某个顺序开枪&#x…

核心API最佳实践——JDK日志分级

核心API最佳实践——JDK日志分级 时间:2005-10-29 08:00 来源:网管之家bitsCN.com 字体:[大 中 小]日志&#xff08;Log&#xff09;是什么&#xff1f;字典对其的解释是"对某种机器工作情况或某项任务进展情况的记载"。对于应用系统来说&#xff0c;日志就应该记录应…

20165234 《Java程序设计》第五周学习总结

第五周学习总结 教材学习内容总结 第七章 内部类与异常类 内部类内部类&#xff1a;在一个类中定义另一个类。 外嵌类&#xff1a;包含内部类的类&#xff0c;称为内部类的外嵌类。 内部类的类体中不能声明类变量和类方法。外嵌类的类体中可以用内部类声明对象&#xff0c;作为…

Java日志操作总结

Java日志操作总结 (2008-04-21 17:39:06)标签&#xff1a; 杂谈 . 使用Jakarta Commons Logging(JCL) 1.1. 概述 Apache的开源日志组件Jakarta CommonsLogging(JCL)提供的是一个日志(Log)接口(Interface)&#xff0c;同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中…

4-2日装饰器,带参数的装饰器

1&#xff0c;函数的有用信息 from functools import wraps#引用模块 def wrapper(f): # f func1wraps(f)def inner(*args,**kwargs): #聚合#args &#xff08;1,2,3&#xff09;执行函数之前的相关操作ret f(*args,**kwargs) # 打散 1,2,3执行函数之后的相关操作return re…

Apache Storm:如何使用Flux配置KafkaBolt

微型框架中的助焊剂可以帮助我们定义和部署Storm拓扑。 Flux有各种包装器&#xff0c;可帮助您定义所需的流并初始化Bolts和Spouts&#xff08;使用带有或不带有参数的构造函数&#xff0c;并通过反射自动调用自定义配置方法&#xff09;。 您只需要使用Flux就是将其作为依赖…