再了解了Java 8 Lambda的一些基本概念和应用后, 我们会有这样的一个问题: Lambda表达式被编译成了什么?。 这是一个有趣的问题,涉及到JDK的具体的实现。 本文将介绍OpenJDK对Lambda表达式的转换细节, 读者可以了解Java 8 Lambda表达式背景知识。
Brian Goetz是Oracle的Java语言架构师, JSR 335(Lambda Expression)规范的lead, 写了几篇Lambda设计方面的文章, 其中之一就是Translation of Lambda Expressions。 这篇文章介绍了Java 8 Lambda设计时的考虑以及实现方法。
他提到, Lambda表达式可以通过内部类, method handle, dynamic proxy等方式实现, 但是这些方法各有优劣。 真正要实现Lambda表达式, 必须兼顾两个目标: 一是不引入特定策略,以期为将来的优化提供最大的灵活性, 二是保持类文件格式的稳定。 通过Java 7中引入的invokedynamic (JSR 292), 可以很好的兼顾这两个目标。
invokedynamic 在缺乏静态类型信息的情况下可以支持有效的灵活的方法调用。主要是为了日益增长的运行在JVM上的动态类型语言, 如Groovy, JRuby。

Java基础学习总结(43)——Java8 Lambda揭秘相关推荐

  1. Java基础学习——第十六章 Java8新特性

    Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...

  2. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  3. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  4. java基础学习-6

    Java基础学习-6 双列集合 Map的常见API Map的遍历方式 HashMap 小练习 LinkedHashMap TreeMap TreeMap--小练习1 TreeMap--小练习2 Tre ...

  5. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  6. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

  7. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  8. Java基础学习(12)

    Java基础学习 一.不可变集合 二.Stream流 2.1 Stream流数据添加 2.2 Stream流的中间方法 2.3 Stream终结方法 三. 方法引用 3.1 方法引用的基本概念 3.2 ...

  9. java基础学习_IO流03_字符流、IO流小结、案例_day21总结

    java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...

  10. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

最新文章

  1. mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)
  2. Java 结构体之 JavaStruct 使用教程一 初识 JavaStruct
  3. Redis学习笔记(三)
  4. 利用iTextSharp组件给PDF文档添加图片水印,文字水印
  5. maven全局配置文件settings.xml详解
  6. 一起谈.NET技术,基于CallContextInitializer的WCF扩展导致的严重问题
  7. wxPython利用pytesser模块实现图片文字识别
  8. 成功在fedora 13 上安装 了libfetion
  9. 解决微信浏览器不能自动播放视频
  10. 时间管理表 - 《周计划表》
  11. 为什么重复率高的字段不适合作为索引
  12. 【组队学习】【32期】组队学习内容详情
  13. linux startx无效_startx命令_Linux startx 命令用法详解:用来启动X Window
  14. iOS 通讯录-获取联系人属性
  15. 专注UI——实用技术:模糊搜索
  16. MongoDB副本集详解与搭建
  17. ppt中讲演模式在哪里_滚动讲演的过去和现在
  18. 聊聊AppDelegate解耦
  19. 矩阵的基本运算(相乘、相加、求逆、转置)
  20. 最小linux系统启动失败,技术|如何拯救一台GRUB 2启动失败的Linux电脑

热门文章

  1. python3 md5_Python3.2 --md5
  2. 计算机代码如何使用方法,电脑定时自动关机代码怎么样使用
  3. python安装you—get_使用Python下载工具you-get下载媒体文件
  4. python 绝对路径找不到文件_python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2...
  5. scrapy python下载图片_使用Scrapy自带的ImagesPipeline下载图片,并对其进行分类。
  6. 闪电邮修改服务器设置,网易闪电邮添加outlook邮箱的方法(图文教程)
  7. 计算机程序辅助拼货,拼货
  8. shell脚本发邮件内容html,Shell发送邮件以HTML展示
  9. c语言程序员算法题库,100个超级经典地C语言算法,程序员必须练习.doc
  10. go去掉最后一个字符_Go:字符串操作