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(){
    @Override
    public boolean filter(Student s){
      return s.getEntryYear() == 2011;
    }
    })
  .map(new MapFunction<Student,Integer>(){
    @Override
    public Integer map(Student s){
      return s.getGrade();
    }
  })
  .reduce(new ReduceFunction<Integer>(){
    @Override
    public 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状态更新

相关文章 :


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值