Java 8状态更新

即将到来的Java SE 8发行版的两大新语言功能是Lambda Expressions和Modularity。 对于这两者,这些天的状态更新已经发布。 我会与您共享链接,因此您可能会在假期中通读它们 ;-)
Oracle计划在2013年中期发布Java SE 8。

Lambda项目

Lambda项目以及JSR-335希望提供将代码建模为Java中数据的方法-用非精确的俗语来说,它旨在将功能用作Java中的一流对象 。 为此,lambda项目希望为Java语言提供以下四个扩展:

  1. Lambda表达式闭包 ,使程序员可以以惯用语方式指定一段可执行代码。 它们可以存储在变量中,可以作为参数传递给方法,也可以用作方法的返回值。
  2. 扩展目标键入以将Lambda表达式绑定到特定类型的对象(类型推断)。 这些类型可以称为功能接口 -仅使用一种方法的Java接口。
  3. 方法和构造方法参考 ,允许程序员在要绑定到功能接口的对象上使用现有方法。
  4. 默认或虚拟扩展方法,用于在不破坏现有实现的情况下(尤其是在集合库中)向现有接口添加更多方法。
为了给您一个想法,这是一段使用匿名内部类进行某些收集逻辑的代码。
List students = // ...
students.filter(new FilerFunction(){@Overridepublic boolean filter(Student s){return s.getEntryYear() == 2011;}}).map(new MapFunction<Student,Integer>(){@Overridepublic Integer map(Student s){return s.getGrade();}}).reduce(new ReduceFunction<Integer>(){@Overridepublic Integer reduce(Integer value1, Integer value2){Math.max(value1, value2);}});

相反,以下代码将其功能与Project Lambda结合使用:

List students = // ...
students.paralell().filter(s -> s.getEntryYear() == 2011).map(s -> s.getGrade()).reduce(Math::max);

规范负责人和OpenJDK项目负责人Brian Goetz有关当前状态的信息可以在Lambda州找到。

在Project Jigsaw中,由Oracle领导的OpenJDK社区试图将模块化引入Java语言。 该方法将不同于OSGi,因为他们希望在语言级别上通过静态编译时间检查来建立它。 甲骨文公司的员工总是说他们在努力使Jigsaw与OSGi兼容。
Oracle首席平台架构师和OpenJDK项目负责人Marc Reinhold描述了模块化方法的三个原则:

  • 模块化是一种语言构造 –在Java平台中以标准方式支持模块化编程的最佳方法是将语言本身扩展为支持模块。 开发人员已经根据语言考虑了标准的程序组件,例如类和接口。 模块应该只是另一种程序组件。
  • 应该严格执行模块边界 –模块私有的类应该以与私有字段私有对类相同的方式私有。 换句话说,模块边界不仅应确定类和接口的可见性,还应确定其可访问性。 没有这种保证,就不可能构建能够安全运行不受信任的代码的模块化系统。
  • 静态的单版本模块解析通常就足够了 –大多数应用程序不需要在运行时动态添加或删除模块,也不需要同时使用同一模块的多个版本。 模块系统应针对常见场景进行优化,但也应支持由实际用例(例如,应用程序服务器,IDE和测试工具)推动的范围狭窄的动态多版本解析形式。

对于使用Jigsaw的程序员而言,这将特别值得注意,因为该语言现在将分为三个阶段(而不是两个阶段):

  • 编译时间编译模块的类。 编译的类与资源(配置文件,元数据文件等)一起以JMOD格式(用于Java模块)打包在一个归档文件中:
  • 安装时间:在安装了JRE的任何计算机上,都会有一个模块库。 用户可以在这里安装Java模块。
  • 运行时间:可以执行定义主类的模块Invokable Module )。 JVM将从模块库中加载该模块及其所需的任何模块,然后执行代码。

马克·莱因霍尔德(Marc Reinhold)提供的有关拼图项目的当前状态的信息可以在拼图项目:大图—草稿1中找到 。

参考:我们的JCG合作伙伴 JohannesThönes在JohannesThönes博客上的 Java 8状态更新 。

相关文章 :

  • Java 7:项目代币中的代码示例
  • Java 8虚拟扩展方法
  • Java Lambda语法替代
  • 将Java向前推进? 一个定义。 一年回顾。
  • Java SE 7、8、9 –推进Java
  • Java 7功能概述

翻译自: https://www.javacodegeeks.com/2012/01/java-8-status-updates.html

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

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

相关文章

java 18 - 6 TreeMap嵌套使用

HashMap嵌套HashMap   动物     犬类         哈士奇   2         萨摩耶   1     猫类        波斯猫   2        加菲猫   3 先存储元素&#xff0c;然后遍历元素 1 package map_son;2 3 import java.util.HashMap;4 import…

程序设计语言

程序设计语言使用于书写计算机程序的语言。程序设计语言有3个方面的因素&#xff0c;即语法&#xff0c;语义和语用。语法标识程序的结构或形式。语义表示程序的含义。语用表示程序与使用者的关系。 程序设计语言的发展史 程序的复杂性度量 1&#xff0c;代码行度量法 出错率&a…

python集合类型是一种具体的数据类型_Python3基础语法之集合类型

set也是一种组合数据类型&#xff0c;支持成员关系操作(in)、对象大小计算操作符(len())&#xff0c;并且是iterable。集合数据类型至少提供一个set.isdisjoin()方法&#xff0c;支持比较&#xff0c;也支持为逻辑操作(在集合用于联合、交叉等上下文中使用)。只有可哈希运算的对…

Linux 安装之U盘引导

说到装系统最简单的方法无非就是找个系统安装光盘来然后就一步一步慢慢的安装。简单是简单但好似大多数人好像都木有Linux的安装光盘。因此只能用U盘来模拟光盘的功能来装系统咯。 电脑上装有Windows 7现要装Linux变双系统。 安装Linux前的准备&#xff1a; 1、电脑上分出空闲的…

OSGi:简介

为基于Java的系统创建的OSGi提供了模块化系统的框架。 OSGi使得可以定义每个单独模块与其他模块的依赖关系&#xff0c;并使用户可以控制生命周期并动态更改系统的每个组件。 OSGi是一个规范&#xff0c;最常见的实现可以算作Equinox &#xff0c; Apache Felix和Knoplerfish 。…

一起动手打造个人娱乐级linux

我们使用电脑&#xff0c;一直以来用的都是windows&#xff0c;但是对于像我这种爱折腾的人来说&#xff0c;尝试使用linux系统应该是一种不错的体验。说到linux&#xff0c;许多人可能都没听过&#xff0c;或者知道的人对它印象是这样的&#xff1a; 然而&#xff0c;linux发展…

PostgreSQL数据类型

http://blog.csdn.net/neo_liu0000/article/details/6254086 第六章 数据类型 6.1概述 PostgreSQL 提供了丰富的数据类型。用户可以使用 CREATE TYPE 命令在数据库中创建新的数据类型。PostgreSQL 的数据类型被分为四种&#xff0c;分别是基本数据类型、复合数据类型、域和伪类…

centos 卸载ffmpeg_CentOS Linux 操作系统安装 FFmpeg 教程

FFmpeg 是一个非常热门的开源项目&#xff0c;用来编解码音频视频流&#xff0c;被广泛用于各种流服务中。本教程在 CentOS 6、7、8 上面都可以使用&#xff0c;用来安装 FFmpeg 软件。一、安装前需求一个 sudo 账户&#xff0c;一般都是默认 root 账户即可。1、CentOS 8安装所…

Linux 火狐浏览器安装Flash插件

Linux系统安装完毕后&#xff0c;发现火狐浏览器视频播放不了而且总是提示安装Flash。而按火狐浏览器上的提示Flash插件安装总是失败&#xff0c;木有办法只能手动安装Flash插件啦。 到Flash官网&#xff1a;http://get.adobe.com/cn/flashplayer/ 下载系统对应的Flash插件&…

按汇总分组/多维数据集

时不时地&#xff0c;您会遇到一个使您达到SQL限制的要求。 我们中的许多人可能会提早放弃并使用Java / [或您的语言]计算内容。 相反&#xff0c;使用SQL可能是如此简单快捷。 如果您使用的是高级数据库&#xff0c;例如DB2 &#xff0c; Oracle &#xff0c; SQL Server &…

TCPUDP

TCP(传输控制协议) 建立连接&#xff0c;形成传输数据的通道在连接中进行大数据传输&#xff08;数据大小不受限制&#xff09;通过三次握手完成连接&#xff0c;是可靠协议&#xff0c;安全送达&#xff08;三次握手向服务器发送请求&#xff0c;响应请求回复&#xff0c;发送…

Windows和linux双系统——修改默认启动顺序

电脑上装了Windows 7和Ubantu双系统&#xff0c;由于Linux系统用的次数比较少并且还是默认的启动项对此很不能容忍&#xff0c;因此得修改Windows为默认的启动项。 由于电脑上的系统引导程序是GRUB&#xff0c;因此修改当然也就落到Linux系统上啦。 修改/boot/grub/grub.cfg该文…

ft232h引脚_usb转串口芯片 ft232的奇怪现象

硬件平台&#xff1a;stm32f407ft232RL按照手册上的电路&#xff0c;我用USB接口给ft232RL供电&#xff0c;如下图&#xff1a;0288f358ccd0026690b2443b41d98f0f_224.png (0 Bytes, 下载次数: 12)2010-12-14 22:54 上传我在这个电路的基础上我用单片机串口和芯片对应的TX和RX相…

微软Team Foundation Service 的Scrum模板中的Feature和Backlog Items 的区别【转载】

Features help us plan work better in Team Foundation Service Scrum process 【原文&#xff1a;http://www.nsilverbullet.net/2013/06/04/features-help-us-plan-work-better-in-team-foundation-service-scrum-process/】 Recently a new work item type named “Featur…

LeWeb – 2011 –综述

在我去机场前几个小时&#xff0c;我将写最后一篇与LeWeb相关的文章。 这次&#xff0c;我将专注于会议本身。 参加过几次开发人员会议&#xff08;虽然不多&#xff0c;但足以给您带来一定的经验&#xff09;&#xff0c;我已经开发了自己的自定义会议等级框架。 我使用以下6条…

Java 入门基础——面向对象的特征

计算机软件系统是现实生活中的业务在计算机中的映射&#xff0c;而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写&#xff0c;让计算机系统能够识别和理解用对象方式组织和编写的程序代码&#xf…

(总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)...

http://www.ha97.com/4009.html转载于:https://www.cnblogs.com/chaizp/p/5111188.html

python游走代码_介绍一个全局最优化的方法:随机游走算法(Random Walk)

1. 关于全局最优化求解全局最优化是一个非常复杂的问题&#xff0c;目前还没有一个通用的办法可以对任意复杂函数求解全局最优值。上一篇文章讲解了一个求解局部极小值的方法——梯度下降法。这种方法对于求解精度不高的情况是实用的&#xff0c;可以用局部极小值近似替代全局最…

iOS单元测试

iOS单元测试异步测试需要建立预期&#xff0c;因为苹果的单元测试都是同步的&#xff0c;测试到异步的时候建立一个预期&#xff0c;预期如果在规定时间&#xff08;自定义&#xff09;完成&#xff0c;代表单元测试通过。 还有 猴子测试 &#xff0c;就是去github上找到猴子测…

调试JVM

在某些&#xff08;极少数&#xff09;情况下&#xff0c;您可能会遇到使JVM本身崩溃的情况。 我最近通过将ThreadGroup的名称设置为null来进行管理 。 在这些情况下&#xff0c;调试JVM本身很有用&#xff0c;这样可以更精确地定位崩溃。 这是完成此操作的步骤&#xff08;它们…