速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Java 8 新闻:发布候选版面世、新的原子数、放弃简易实现(Stripped Implementations)

  • 2014-02-18
  • 本文字数:1519 字

    阅读完需:约 5 分钟

Java 8 的第一个发布候选版(RC)已于 2 月初面世。第一个发布候选版 b128 是 2 月 4 日发布的,第二个版本则于一周后在 OpenJDK 邮件列表中宣告问世

Java 8 RC2 修复了新的 Comparator API 中的一个严重缺陷——新的 _thenComparing()_ 方法有一个不必要的类型约束。 bug 报告指出:

在 java.util.Comparator 中,下面的方法要求类型 U 扩展 java.lang.Comparable。

复制代码
<U extends Comparable<? super U>> Comparator<T> thenComparing(
Function<? super T, ? extends U> keyExtractor,
Comparator<? super U> keyComparator);

但是这一约束是不必要的,因为 keyComparator 用于比较的是提取出的 key 对象。

Java 8 RC2 还修复了在 Mac OS X 上的一个读权限问题。发布候选版可以从 https://jdk8.java.net/download.html 下载。

根据 JDK 8 的 bug 跟踪系统上的信息,Java 8 将于 3 月 17 日圣帕特里克节这天发布。截至本文写作时,还有 3 个问题尚未解决,都与文档有关。

在其他与 Java 8 有关的新闻中,Drew Stephens 最近发布的数据表明,Java 8 的原子数实现快了很多。此外,出于法律方面的原因,Mark Reinhold 提议放弃简易实现(Stripped Implementations)。

新的原子数实现

除了 Lambdas( 335 )和新的日期与时间 API( JSR 310 ),Java 8 还包含了对特定的多线程应用类非常重要的原子数实现。Palamino Labs 的负责人 Drew Stephens 最近撰文谈到了 LongAdder 和 DoubleAdder 的引入

尽管 LongAdder DoubleAdder 的引入不是那么光彩夺目,但是对于特定的多线程应用类而言,非常重要。这两个原子数实现在多线程竞态条件下提供了比 AtomicInteger AtomicLong 更好的性能。

一些简单的基准测试就能说明其性能差别,下面的基准测试,我们使用了一个 m3.2xlarge EC2 实例,它可以访问一个 Intel Xeon E5-2670 处理器的全部 8 个核心。

在单线程条件下,新的 LongAdder 会慢 1/3,但是当多个线程竞争着增加字段时,LongAdder 就体现出了其价值。请注意,每个线程唯一要做的是尝试增加计数器——这是一个最极端的综合基准测试。这里的竞争比你现实中可能看到的大部分应用更为强烈,但有时你 _ 确实 _ 需要这类共享计数器,而 LongAdder 能提供很大的帮助。

Drew 继续演示了 AtomicLong,它在单线程条件下快一点。然而,在使用两个线程时,它要慢 4 倍;当线程数与核数相同时,它几乎慢 5 倍。他还指出,“当线程数超过 CPU 的物理核数时,LongAdder 的性能就保持恒定了”。

放弃简易实现

简易实现是 Java 8 的一个计划特性,支持将 Java SE 的定制实现与要基于它运行的应用打包到一起。不依赖应用所使用代码的元素可以移除。对于想把 Java 嵌入到设备中的应用,这类实现可能是有用的(比如家用设备)。

Mark Reinhold 最近提议从 Java SE 8 中去掉简易实现。他援引了法律问题作为理由。

为保持兼容性并防止分裂, Java SE 8 的简易实现特性需要对 TCK 许可做一些重大的修改。

我已经和 Oracle 的法务部门就这些修订共同工作过一段时间。我们有一个初始草案,但是现在遗憾的是,我认为专家组成员、JCP 执行委员会成员和其他各方已经没有足够的时间审阅和评注这些修改了。

因此我建议从 Java SE 8 中去掉简易实现特性。这只需要修改规范和 TCK 规则,不需要修改参考实现或实际的 TCK 测试。

Reinhold 还写道,他认为简易实现对于 Java 平台的未来很是重要,该特性可能会在 Java SE 9 之前的版本中加入。

Java 8 的发布已经近在咫尺。更易用的日期、闭包、更好的并发和一个新的 JavaScript 引擎,离我们只有一个月之遥了!你会升级吗?如果不升级,是有技术方面的原因阻止你升级吗?

查看英文原文: Java 8 News: Release Candidates Available, New Atomic Numbers and Stripped Implementations Dropped

2014-02-18 18:422307
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 135.0 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

字节跳动+京东+360(1),Android工程师必备知识

android 程序员 移动开发

字节跳动+京东+360,字节跳动+京东+美团+腾讯面试总结

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象(2),android开发入门基础教程

android 程序员 移动开发

字节码插桩--你也可以轻松掌握(1),收割快手,字节,百度,美团的Offer之旅

程序员 移动开发

字节跳动1面Too simple2面怀疑人生,宅家修炼“65天,flutter开源项目集合

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象 (1),安卓面试题宝典app

android 程序员 移动开发

学会这些Android开发热门前沿知识,2020年你就不用愁了!

android 程序员 移动开发

字节跳动最新开源!超实用的UI轮子库,我只是个轮子搬运工

android 程序员 移动开发

字节跳动正式启动2021届秋季校招!这份字节跳动历年校招Android面试真题解析,你确定不收藏

android 程序员 移动开发

字节跳动面试,第三面挂了,这原因我服了,快速上手

android 程序员 移动开发

学习 View 事件分发,就像外地人上了黑车!(1),kotlin安卓开发书籍

android 程序员 移动开发

完美!腾讯技术官发布Android零基础就业宝典,不用再怀疑人生了

android 程序员 移动开发

小厂开发五年,成功入职腾讯,这是我的复盘和总结,阿里P8Android架构师谈

android 程序员 移动开发

工作出现瓶颈,学习效率下降?通学这份Android进阶知识体系

android 程序员 移动开发

字节三面:ButterKnife为什么执行效率为什么比其他注入框架高?它的原理是什么

android 程序员 移动开发

学习不系统学过的Android知识全忘记了?思维导图+手写笔记

android 程序员 移动开发

安卓指纹对称加密及登录功能的实现,阿里P8大牛从零开始教Android开源框架

android 程序员 移动开发

对标小程序 _ _快应用_开发入门指南,移动应用开发课程设计

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象(1),讲的真详细

android 程序员 移动开发

学习 View 事件分发,就像外地人上了黑车!,真的已经讲烂了

android 程序员 移动开发

字节面试官:看了3000多份简历,面试1000场后,androidjni开发书籍

android 程序员 移动开发

孽缘啊,同套面试题中午我把你挂了,晚上你把我挂了,农民工看完都会了

android 程序员 移动开发

安卓指纹对称加密及登录功能的实现(1),技术实现

android 程序员 移动开发

字节跳动厂内部超高质量Flutter+Kotlin笔记!技术与实战篇

android 程序员 移动开发

字节跳动技术整理:Android-Camera内存问题剖析,为什么Flutter能最好地改变移动开发

android 程序员 移动开发

屌丝的眼泪,因为错过的初恋,才搞清楚PNG图片压缩原理

android 程序员 移动开发

字节码插桩--你也可以轻松掌握,2021年Android工作或许更难找

android 程序员 移动开发

实现Flutter离线验证码组件,跳槽面试大厂被拒

android 程序员 移动开发

屌丝的眼泪,因为错过的初恋,才搞清楚PNG图片压缩原理(1)

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象,android设计模式总结

android 程序员 移动开发

安卓11重磅上线,快来看看,是不是熟悉的配方,大专生面试阿里P7居然过了

android 程序员 移动开发

Java 8新闻:发布候选版面世、新的原子数、放弃简易实现(Stripped Implementations)_Java_Matt Raible_InfoQ精选文章