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,一经查实,立即删除!

相关文章

程序设计语言

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

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发展…

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 &…

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

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

调试JVM

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

ActiveMQ已准备好黄金时段

ActiveMQ项目始于2005年-在很大程度上&#xff0c;它一直是Apache Software Foundation的顶级项目。 ActiveMQ项目的目的一直是提供世界一流的企业消息传递解决方案&#xff0c;其中经纪人能够提供从支持IP的智能设备一直到企业后端的高可用性的连通性。 ActiveMQ提供跨语言客户…

r语言 adf检验_r语言中如何进行两组独立样本秩和检验

r语言中如何进行两组独立样本秩和检验​tecdat.cn安装所需的包wants <- c("coin") has <- wants %in% rownames(installed.packages()) if(any(!has)) install.packages(wants[!has])>一个样本测试set.seed(123) medH0 <- 30 DV <- sample(0:100, 20,…

MyEclipse 8.5安装Aptana

Aptana简介 Aptana是一个非常强大,开源,专注于JavaScript的Ajax开发IDE它的特性包括&#xff1a; 1、JavaScript,JavaScript函数,HTML,CSS语言的Code Assist功能 2、Outliner(大纲)&#xff1a;显示JavaScript,HTML和CSS的代码结构 3、支持 JavaScript&#xff0c…

2016-1-10 手势解锁demo的实现

一&#xff1a;实现自定义view&#xff0c;在.h,.m文件中代码如下: #import <UIKit/UIKit.h> class ZLLockView; protocol ZLLockViewDelegate <NSObject> - (void)lockView:(ZLLockView *)lockView didSelectedPwd: (NSString *)pwd; end interface ZLLockView : …

GWT入门

GWT是Google Web Development Kit的缩写&#xff0c;可让程序员使用Java开发Ajax Web应用程序。 GWT编译器将Java代码转换为JavaScript和html代码。 GWT应用程序称为模块&#xff0c;并且使用xml文件描述模块&#xff0c;假定该模块名称为xml文件的“ mymodule”名称为“ mymod…

AJAX入门——工作原理

理解同步交互和异步交互 举个例子&#xff1a;普通B/S模式(同步) AJAX技术(异步) * 同步&#xff1a; 提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。 发送方发出数据后&#xff0c;等接收方发回响应以后才发下一个数据包的…

Android Studio IDE Out of Memory

场景&#xff1a; 尝试过各种方式&#xff0c;IDE重装&#xff0c;重新启动&#xff0c;设置IDE MEMORY大小JDK MEMORY大小都无效 终于在FILE->INVALIDATE CACHES/RESTART 中点击重新启动之后问题攻克了。转载于:https://www.cnblogs.com/yxwkf/p/5128094.html

在Spring MVC REST应用程序中自动生成WADL

上一次我们学习了WADL的基础知识 。 语言本身并没有那么有趣&#xff0c;只写了一篇有关它的文章&#xff0c;但是本文的标题揭示了为什么我们需要这些知识。 JSR 311的许多实现&#xff1a;JAX-RS&#xff1a;RESTful Web服务的Java API提供了开箱即用的运行时WADL生成&#x…

关于DJANGO和JAVASCRIPT的时间

最近&#xff0c;实际一些简单统计时&#xff0c;要到库里去检索数据出来用HIGHCHARTS画图&#xff0c; 作一个简单的回照。。 DJANGO用TEMPLATEVIEW来作。专业&#xff0c;正规&#xff1a;&#xff09; class SAView(TemplateView):template_name version/sa_site.htmlpagin…

Vue.js组件学习

组件可以扩展HTML元素&#xff0c;封装可重用的HTML代码&#xff0c;我们可以将组件看作自定义的HTML元素。组件系统提供了一种抽象&#xff0c;让我们可以使用独立可复用的小组件来构建大型应用。 一个简单组件例子(全局注册&#xff09; <!DOCTYPE html> <html>&…

Winform MD5

1&#xff1a;MD5 http://www.cmd5.com/ 字节数组----字符串 //将字节数组中每个元素按照指定的编码格式解析成字符串//直接将数组ToString()//将字节数组中的每个元素ToString() //ToString("Params") ToString("x") //可以将十进制字符串转换为16进制字符…

HTML元素显示与隐藏

在WEB开发中&#xff0c;前台HTML中经常需要控制元素的隐藏与显示&#xff0c;我们最为最常见是二级导航栏&#xff08;通过鼠标的移动来触发onmouseover&#xff0c;onmouseout事件来实现二级菜单的显示与隐藏&#xff09;二级菜单的显示与隐藏。 然而控制元素的影响与显示有…