从根本上改变我们开发Java程序的方式:Lambda

当今世界主流编程语言无不吸纳强大的闭包概念,但有个例外,它就是Java。数年来,Java语言中增加闭包特征的工作看起来毫无进展。

早在15年之前,Scala语言和TypeSafe框架的作者Martin Odersky和Phillip Wadler发布了实验性的“Pizza”项目,由此,人们开始试图将闭包纳入编程语言的基本特征之一。尽管这看起来有点过于复杂,Java社区大概在2008年就有了接纳闭包概念的想法。但由于Oracle对Sun微系统公司的匆忙收购,Java被冷落,Java语言新版本的发布不断的被推迟。

但在Java8中,事情有了很大的变化,Java语言终于为Java编程部队配备了闭包的武器。“也许这是Java编程语言有史以来最重要的一次升级,”Oracle的Java语言架构师Brian Goetz说。他指出,在Java中引入闭包概念对Java程序开发方法的影响甚至会大于Java5中引入的泛型特征对编程方式带来的影响。“就像泛型能使开发人员对数据类型进行抽象,Lambda的目的是让程序员能够对程序行为进行抽象。”

Lambda这个名称来自于把闭包绑定到Java编程语言的Lambda项目。Lambda以及闭包的引入能做些什么?你可以这样想,它能够让程序员把一段程序代码当做数据一样使用。一个方法可以像定义和使用一个变量那样的方式被定义和使用,定义出的方法可以被当作参数传递到其它方法内,就像它们是一个对象实例或一个类型数据一样。“看起来这好像也没什么,但实际上它影响巨大,”Goetz说。“这将从根本上改变我们开发java程序的方式。”

我们等待了太久,但随着Java8的发布,Lambda终于成为Java规格说明书里的正式特征之一。一种由于过于复杂而最初被传统程序员放弃的语法将最终成为一种每个现代Java应用程序里都能看到的标准技术。

时间: 2024-10-31 00:51:00

从根本上改变我们开发Java程序的方式:Lambda的相关文章

用JBuilder高效率开发Java程序

牛人总会说:"开发Java程序我只选用.记事本".然而我们认为如果你能够利用记事本创建一个HelloWorld程序,那么在今后的开发当中你大可不必使用记事本来创建你的应用程序,这只能给你带来很大的麻烦.使用先进的编辑工具会大大提高程序撰写的效率.JBuilder中提供了CodeInsight与"程序代码模板"来提升Java程序撰写效率. CodeInsight提供的功能: MemberInsight:(Ctrl+H)提供目前可用的成员方法在某个对象名称后面按下句点时

sublime开发java程序的好方法?

问题描述 sublime开发java程序的好方法? sublime这个东西配上eclipse的快捷键之后确实很好用啊,就是编译运行java程序时有点不爽,网上用那个runJava.bat的那个东西老是不好用,很郁闷啊,谁有好办法? 解决方案 没用sublime写过Java,不适应,还是推荐idea或者eclipse把. 解决方案二: sublime毕竟是一个编辑器,而不是编译器,所以做语法,代码检查,程序编译,调试方面都是弱项.

安卓应用开发-Java程序能移植修改为安卓app吗?

问题描述 Java程序能移植修改为安卓app吗? 我们写了一个Java的小软件,希望能改编为安卓的app,但不知道能不能做,怎么做.如果能够移植,修改会很多吗? 解决方案 你需要把里面的逻辑抽出来,搭配上Android的界面布局 解决方案二: 看你的软件复杂程度了,学一下Android开发相关的知识吧

选择运行 Java 程序的方式

在运行 Java(TM) 程序时,您可以选择希望使用的方式.所有方式都验证代码并创建 Java 程序对象来存放预验证格式的程序.可使用下列任何一种方式: 解释方式 直接处理 "及时"(JIT)编译 "及时"(JIT)编译并直接处理 选择方式 详细信息 解释方式 在运行时对每个字节码进行解释. 有关以解释方式运行 Java 程序的信息,参见运行 Java(RUNJVA)命令. 直接处理 方法的机器指令在首次调用该方法期间生成并保存下来,以供程序下次运行时使用.并且,整

谈谈在ORACLE下开发JAVA程序的问题

问题一:如保加载JDBC驱动程序: 正常我们加载驱动程序有三个途径: 1)Class.forName(String)这想当于classLoader一个String指定的类,在装载时把该驱动程序的静态内容都初始化,其实这时驱动程序类调用了DriverManager.registerDriver(driver);方法 2)使用系统属性:System.getProperty().load(new FileInputStream("属性文件")); 在属性文件中指定jdbc.driver=dr

《Java程序员面试秘笈》—— 面试题3 Linux操作系统下如何安装Java SE开发环境

面试题3 Linux操作系统下如何安装Java SE开发环境 考点:由于大部分的计算机用户都使用Windows作为操作系统,而Java语言是具有跨平台优势的,不同企业有不同的开发环境,本试题考察求职者是否有在Linux下开发Java的经验.Linux环境下的Java安装是一个基础问题. 出现频率: [面试题解析]该问题有两个关键点,一个是Linux版本Java SDK的文件类型,另外一个是Linux环境变量的配置. 参考答案: Oracle发布的Linux操作系统Java包有JDK和JRE两种版

一个Java程序员眼中的国外IaaS服务选型

如今,云计算无处不在.最简单的说,云计算是通过互联网存储和访问不同的数据和程序,而基础架构即服务(IaaS)是云的基本构件.IaaS支持在云环境中自然开发,测试和使用应用程序.在本文中一个想通过IaaS托管Java应用程序的用户,如何选型国外主流的5大云供应商服务.它简要介绍IaaS,然后比较5个主流云提供商:Amazon EC2,Google Compute Engine,IBM SoftLayer,微软Azure和Digital Ocean. IaaS可帮助企业避免购买和运行自有服务器的复杂

java-开发JAVA程序如何获取系统编译时间?

问题描述 开发JAVA程序如何获取系统编译时间? 开发JAVA程序如何获取系统编译时间?哪位大神知道的给条具体思路啊,在线坐等,谢谢! 解决方案 long start = System.currentTimeMillis();/*中间是你需要测试的代码*/long end = System.currentTimeMillis(); long time = end-start; 解决方案二: 这我猜要改编译器才可以 解决方案三: 这个问题很好解决呀!创建对象就可以了,直接new Date() 不知

工具-Linux系统下java程序如何将PDF文件转换成SWF文件

问题描述 Linux系统下java程序如何将PDF文件转换成SWF文件 我需要将PDF文件转换成SWF格式的文件,目前是用windows系统开发java程序,windows系统中这种转型已经搞定,用的是swftools工具.但是开发完成之后,程序要部署到Linux系统中.由于不熟悉Linux系统所以无从下手,希望高手指点,最好也用swftools工具转型,尽量详细一些,跪谢. 解决方案 前不久刚用过,应该注意的是swftools工具在linux的安装,有时需要依赖才能安装下去,这个工具安装好就基