SE

(翻译)Java SE 8 Lambda 特性与基本原理(下)

痴心易碎 提交于 2019-12-01 20:18:04
6 , 词法域(Lexical Scoping) 确定内部类中变量名字(包括this)的意义要比在顶级类中困难的多,并且很容易出错。继承成员--包括类对象中的方法--可能不小心就覆盖了外部类的声明, 未加限定的this引用总是指向外部类自身。 Lambda表达式更加简单:他们不会从超类中继承任何名字,也不会引入任何新的级别的作用域。相反,他们具有词法作用域,意味着主体中的名字是解释执行的,就像是在封闭的环境中(通过对Lambda表达式形式参数添加名字)。作为一个自然的延伸,this关键字以及对成员的引用与在Lambda表达式的外部类中直接饮用有着相同的意义。 为了说明这点,下面程序将会在控制台上打印两次“Hello, World!”: public class Hello { Runnable r1 = () -> { System.out.println(this); } Runnable r2 = () -> { System.out.println(toString()); } public String toString() { return "Hello, world!"; } public static void main(String... args) { new Hello().r1.run(); new Hello().r2.run(); } }

(翻译)Java SE 8 Lambda 特性与基本原理(上)

限于喜欢 提交于 2019-11-30 16:24:34
Lambda 语言特性与原理 java se 8 edition 本 文 章 是 Java 语言规范 -JSR335 中对Java语言一些新功能的非正式描述 , 这些增强性功能已被OpenJDK 的Lambda项目实现。并且该文章细化了上次发布在2011年九月份的迭代 。 一些JSR关于语言特性变更的正式描述戳 JSR-335 , 同时 OpenJDK 的开发者预览版已经发布 ( Developer Preview ), 一些以往的设计文档查看 ( OpenJDK project page. ), 这里 ( State of the Lambda, Libraries Edition ) 还有一篇相关文档 , 描述了API中关于JSR335的一些变化。 Lambda 项目力图使Java能够方便的以通用语法的方式将建模代码(modeling code)作为数据。主要的新语言特性包括: Lambda 表达式(通俗的称谓,“闭包”或者“匿名方法”) 方法和构造器引用 扩充目标类型和类型推断 接口中的默认方法和静态方法 下面便是详细的描述与解释。 1.背景 Java主要是一门面向对象的编程语言。在面向对象和函数式语言中,基本的数据值可以被动态地封装到程序的行为中:如面向对象语言中的包含方法的对象,以及函数式语言中的函数。这种相同点也许并不明显

Java SE 6 新特性: JMX 与系统管理

爱⌒轻易说出口 提交于 2019-11-27 03:19:28
Java SE 6 新特性: JMX 与系统管理 2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络和 Instrumentation 方面都有不错的新特性和功能加强。 本系列 文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。 本文是其中的第三篇,介绍了 Java 管理扩展(Java Management Extension,JMX) 架构及其框架,以及在 Java SE 5 中新引入的 JMX API -- java.lang.management包, 最后作者讲述了此 API 在 Java SE 6 中的相关改进和对未来版本的展望 前言 在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的。一直以来,Java