写点什么

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:422566
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

货运飞船 3D 可视化监管,相隔万里都能得心应手?

一只数据鲸鱼

数据可视化 3D可视化 数字孪生 智慧航天 飞船

智慧平安社区建设解决方案,昆明智能安防小区搭建

强!上线3天获10w浏览量,京东T8纯手码Redis缓存手册,我粉了

Java 数据库 redis 架构 面试

Vitalik Buterin眼中的区块链信任模型

CECBC

Cisco VPC peer-gateway 对直连BFD邻居建立的影响

Qunar技术沙龙

后端 Cisco BFD

数字新金融到底是什么样的金融

CECBC

什么是数据仓库

奔向架构师

数据库 数据仓库 数据架构 话题讨论 7月日更

【LeetCode每日一题 Day 3】3. 无重复字符的最长子串

编程熊

程序员 面试 算法 LeetCode 笔试

WICC 2021 召开在即 服务开发者生态是大会主要亮点

融云 RongCloud

美国高通公司发布Snapdragon 700移动平台,为中高端终端提供优质功能

BeeWorks

Flink+ 数据湖 Iceberg 的体验

Qunar技术沙龙

架构 运维 flink 消费 kafka 后端 flink sql 执行过程

国内市场主流音视频产品主要功能分析

anyRTC开发者

音视频 WebRTC 语音通话 实时通讯 视频通话

容器化 | 基于 Kubernetes 的新一代 MySQL 高可用架构实现方案

RadonDB

MySQL Kubernetes 容器 RadonDB KubeSphere

想要做音乐玩音乐,有这一个软件就够了!

懒得勤快

🏆「推荐收藏」【Spring源码专题】彻底让你明白【IOC容器初始化】运行原理和源码流程

码界西柚

spring 容器 源码分析 7月日更

模块1

cherrycheek

规则引擎-ice接入

waitmoon

规则引擎

苹果公司在WWDC会议前意外泄露了新的移动平台

BeeWorks

免费分享入门学习Java的优秀图书

Java入门到架构

Java 书籍 Java入门

为技术系统打“疫苗”,爱奇艺攻防演练平台的探索实践

爱奇艺技术产品团队

架构 安全攻防 开发 混沌工程

字节跳动实习生删库高操作

学神来啦

Linux 程序员 职场搞笑 linux运维

详解智能优化算法:遗传算法和蚁群算法

华为云开发者联盟

算法 遗传算法 智能优化算法 蚁群算法

不愧是阿里内部“SpringCloudAlibaba学习笔记”上线7天就获22w 浏览量!

Java 程序员 架构 面试 微服务

中国的区块链技术,究竟发展到哪里了?

CECBC

药以安为先,如何用技术升级助力药品质量升级?

BeeWorks

什么?你们项目没用过主从复制和读写分离?

真的香!Github一夜爆火被各大厂要求直接下架的面试题库也太全了

Java 程序员 面试 java编程

2种方法将YouTube视频转MP3音频

资源君

分享 教程 经验 youtube转mp3 格式转换

IPFS挖矿靠谱吗?IPFS挖矿合法吗?

区块链 IPFS

在企业软件中负责任地使用开放源代码

BeeWorks

科创人|容联七陌CEO陈光:90后街舞少年的CEO修炼手册

科创人

人工智能 创业 程序员

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