- Java 8:Lambda 序列化?
- Java 8 lambda 最佳实践
- Java 8 lambda 表达式 10 个示例
- Java8 lambda 表达式 10 个示例
- Java8 Lambda 表达式和流操作如何让你的代码变慢 5 倍
- Java8:Lambda 表达式增强版 Comparator 和排序
- Java 8 LongAdders:管理并发计数器的正确方式
- Java 8 Optional 类深度解析
- Java8 中的 java.util.Random 类
- Java8 中的简易并发
- Java8 学习:Lambda 表达式、Stream API 和功能性接口 — 教程、资源、书籍和实例
- Java8 并发教程:Threads 和 Executors
- Java 8 新特性之旅:使用 Stream API 处理集合
- Java 8 新特性探究(一)通往 lambda 之路_语法篇
- Java 8 新特性探究(六)泛型的目标类型推断
- Java 8 新特性探究(七)深入解析日期和时间-JSR310
- Java 8 新特性探究(八)精简的 JRE 详解
- Java 8 新特性探究(九)跟 OOM:Permgen 说再见吧
- 总结
- Java 8 新特性探究(十)StampedLock 将是解决同步问题的新宠
- Java 8 新特性探究(十一)Base64 详解
- Java 8 新特性探究(十二)Nashorn :新犀牛
- Java 8 新特性终极指南
- Java 8 新的时间日期库的 20 个使用示例
- Java8 日期时间(Date Time)API 指南
- Java8 本地缓存
- Java 8 的 default 方法能做什么?不能做什么?
- Java 8 的 6 个问题
- Java 8 简明教程
- Java8 集合中的 Lambda 表达式
- Java SE 8 新的时间和日期 API
- 在 Java 8 下更好地利用枚举
- 在 Java 8 中避免 Null 检查
- 鲜为人知的 Java8 特性:泛化目标类型推断
Java8 学习:Lambda 表达式、Stream API 和功能性接口 — 教程、资源、书籍和实例
尽管离 Java 8 的正式发布还有几个月,有计划说是在明年年初,但是 Java 开发团队还是共享了一些非常好的 Lambda 表达式的学习教程。lambda 语句的使用,可能会在 Java 世界中一石激起千层浪。Lambda 表达式,乍听起来可能很抽象学术,但其会在你日后的编程中产生重大影响。此外,伴随 Java 8 出现的除了 Lambda 表达式,还有 Stream API、功能接口和默认方法。不出意外,我也在开始学习 Java 8 的新特征,同时也感谢那些乐意分享 Lambda 表达式学习资源的人,正是他们的拓荒工作为我们的学习开了方便之门。在这里,我也将追随他们,分享这些学习资源。如果你是一名专业的 Java 开发者,不久之后你也会加入学习 Java 8 的大军。这也必将会对使用 Java 集合框架编程产生重大影响,特别是高性能应用方面。之前,我在分享 一些 Java 和 Scala 的区别 时提到:Scala 的一些非常酷的特征会让代码更加简洁、简明、可读性更好。今天,Java 8 也能达到这些效果。因此,我们要持续关注 Java 8 的 Lambda 表达式、Stream API、功能接口等新特征,也是因为他们是第一次出现在 Java 中,其带来的改变可能会比 Java 1.5 引入 泛型 带来的改变更大。
在 Java 中什么是 Lambda 表达式?
简单来说,Lambda 表达式就是个函数——一段代码——能当作参数传给方法,因此能用 Lambda 表示的行为参数来处理各种变化情况。如果有 JS 的编程经验,你会发现能将匿名函数当参数给传给另一个函数。但直到 Java 1.7,你还是只能将基本类型或者对象传给方法。Java 的这些即将发生实质性改变的部分 API 将会名声遐迩,并更有可能用在被 Stream API 回炉再造的集合框架中。Java 8 的 Lambda 和 Stream API 这些功能编程特征使得在遍历集合变得更为简洁。他们同样也能帮助在多核处理器下写出更为简洁、易管理和可扩展的代码。
Java 8 Lambda 表达式、Stream API、功能接口学习教程
我说过,为尽快上手 Java 8 我也在学习其新特征。直觉告诉我,一旦 Java 8 正式发布,业界将很难看到用 Java 1.6 或 1.7 建一个项目,就像在泛型出现之后,你很难看到一个不含泛型的集合框架一样。现在网上已经有很多好的学习教程可供利用。我已经选择一些最适合教程开始学习。下面这张列表是不完整的,如果今后学习中还能发现一些有趣和进度的地方,我也会将他们增加进表中。
1、 Maurice Naftalin’s Lambda FAQ
不管何时谈到 Java 8 的 Lambda 表达式学习资源,脑海中第一个想起的总是它。我虽曾多次访问这个站点,但每次都惊奇依旧。如果你对 Maurice Naftalin,《Java 集合和泛型》的作者之一没有印象,没关系,在看其它资料之前,强烈建议你先访问这个网站,作者他对 Lambda 表达式的 FAQ 做了很多如“宝石”般有价值的工作。为了让你先睹为快,这里先列举一些其 Lambda FAQ 中的一些问题。
- 什么是 Lambda 表达式?
- 为什么在 Java 中加入 lambda 表达式?
- 什么是功能接口?
- Lambda 表达式是对象吗?
- Lambda 表达式能用在哪些场合?
- Lambda 表达式的域规则是什么?
- Lambda 表达式的类型
- Lambda 表达式能用来定义递归函数吗?
- Lambda 语境中能使用变量吗?
- 什么是方法引用?
- 实例方法引用的语法是怎样?
- 什么是构造方法引用?
我猜想,Maurice Naftalin 也正在将 Java 8 中的变化更新到新版的《Java 集合和泛型》一书中,届时这本书也是一个非常好的入门学习资源。期待他的新书!
这是另一个非常棒的学习资源,正如 Java 的其它的官方教程一样,值得大家的 mark!它采用对比的方式,以传统编程风格用本地和匿名类实现,最后再用 lambda 表达式得到一个更高效简洁的实现。它也解释了什么是方法引用及怎样使用它们。由于能用 Lambda 表达式创建匿名方法,但是,如果只是用 lambda 表达式调用一个已存在的方法,则直接用方法名来的更为简洁,用 lambda 表达式反而麻烦。这时,方法引用就有用武之地了,它用更为紧凑易读的 lambda 表达式来处理那些已经有名字的方法。对于所有的初学者来说,一旦你阅读完 Maurice 的 lambda 表达式的 FAQ,你就可以着手阅读这里的内容了,在对比分析这些例子中学习和提高。
3、Java 8 Lambda 语句介绍和视频教程
这里有很多 Java 8 新特征的介绍,包括 lambda 表达式、Stream API、功能接口、默认方法和 lambda 表达式使用等 8 个主题。我已经收集了最好的一些权威作者的作品,比如 Brian Goetz,甲骨文的语言架构师和 Java 并发编程著作《Java 并发实践》的主要作者。他的介绍:A Peek Under the Hood 详细介绍了 lambda 表达式实现的技术细节;The Road to Lambda 也是他的另一个介绍,其中综合深入展开了一个 lambda 项目。另一个好的介绍来自于 2012 年 9 月的 JavaZone:Angelika Langer 写的 Lambdas in Java 8,这篇介绍中讨论了 lambda 表达式,功能类型,扩展方法和方法应用。
- Lambda: A Peek Under the Hood by Brian Goetz
- Jump Starting Lambda Programming (Stuart Marks)
- The Road to Lambda (Brian Goetz)
- JavaZone, Lambdas in Java 8 By Angelika Langer
4、学习 OpenJDK 的 lambda 教程
这里有一系列教你如何使用 Java 8 lamdba 语法、新 Streams API 的练习。它包含了为在 Github 做这练习的合适指令,为在 Ubuntu、Mac OS、Windows 上使用 Java 8 lambda 语句安装 Eclipse 、IntelliJ 等 IDE 入门教程。它同样包含了一些好的有关内部和外部循环、过滤和集合、映射和方法引用的练习。现在你要做的是用 Java 8 的测试版去运行这些教程和实例。你也可以从 官方项目的 lambda 页面 得到更多的信息。
5、 来自 Dreamsys Software 的 Java 8 lambda 教程
这里是一些简单的 Java 8 Lambda 表达式的教程集合。我喜欢那些主题上的简单易学的例子。Java 8 教程被划分为以下几个主题:
- 介绍:基础为主。
- 比较:使用比较器。
- 集合过滤:筛选集合。
- 函数参数:将函数当对象传递。
- 监听器:用 lambdas 当监听器。
- Map/Reduce:用 Java 8 实现 Map/Reduce。
- DRY:DRY (Don’t Repeat Yourself)。
我想说,对于那些忙碌的 Java 开发者来说这些教程非常便利。
6、Java 8 Lambda 表达式的 IDE 支持
所有这三个主要的 IDE,如 Eclipse、IntelliJ 和 Netbeans 都在某种程度上支持 lambda 表达式,但他们大多数还只是不稳定的测试版本,只能用来将进一步研发和学习。我相信到目前为止它们中还没有哪个开放了 Java 8 的稳定版本。Eclipse 在 这里 公布了支持 JDK 8 的测试版,你可以按照甲骨文的教程: 在 Eclipsee 中尝试使用 lambda 表达式 。Netbeans 测试版也支持 JDK 8,你可以从 http://wiki.netbeans.org/JDK8 得到更多的相关信息。
7、Java 8 Lambdas 实战
《Java 8 Lambdas 实战》估计是第一本关于 Java 8 lambda 表示式的书。这本书还没完本,但已经完成了前面的几章。它是 Java 8 lambda 表达式和功能编程的深入浅出的指南之一。它以实践出发,汲取了现实的 Java 编程的经验。这本书其后介绍了 Stream API,并展示了它们如何将与容器相关的代码变得更易懂更好管理。随后,你会看到许多新的面向对象设计中关于代码复用,代码可读性,异常处理,数据处理和并发的函数式编程。由于有开发人员在 JVM 探索上其他的功能语言,这本书也调查总结了 Scala 和 Clojure 的实用特征。好事多磨啊,《Java 8 Lambdas 实战》第一章是免费的,你可以下来先睹为快。
就是这些了,学习 Lambda 表达式,Stream API 和功能接口的资源远远不止这些。对了,别忘了还有我们的老朋友 Google,当你有疑惑时,它总能找到适合你的答案。
好运并享受学习 Java 8 的过程吧。
一些关于 Java 8 编程的书
所有 Java 8 的书离出版还有段时间,都要等到 Java 8 的正式发布之后,但还是很高兴频频看到一些学习资源,这也是 Java 8 的 影响力 和知名度在不断提升。
下面是一些即将出版的书单:
Java SE 8 for the Really Impatient by Cay Horstmann (Jan 27, 2014)
Java 8 Lambdas: Pragmatic Functional Programming by Richard Warburton (Apr 22, 2014)
Functional Programming in Java: Harnessing the Power Of Java 8 Lambda Expressions by Venkat Subramaniam (Feb 22, 2014)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论