写点什么

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

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

关注

评论

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

数字货币交易所开发的功能与特点

Flink SQL 实战:双流 join 场景应用

Apache Flink

flink 流计算

智慧社区管理平台建设,智慧平安小区整体解决方案

t13823115967

智慧社区安防系统平台开发

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者联盟

DevOps 运维 云原生 华为云

区块链数字货币交易所开发的简介

千里公路建设尽收眼底,3D可视化监测管养运,领导都惊呆了

一只数据鲸鱼

物联网 数据可视化 3D可视化 公路建设 智慧交通

智慧公安防控管理平台搭建,重点人员管控系统解决方案

t13823115967

智慧公安

有没有听说过通达快递?

escray

极客时间 极客大学 课程作业 大作业 架构师训练营第 1 期

Python的GIL

yunson

Python GIL

获奖名单|七日更挑战成功!

InfoQ写作社区官方

奖品 七日更 热门活动

程序员修炼之路:你该知道的 7 个必经阶段

阿里巴巴云原生

阿里云 程序员 云原生 自我思考 成长笔记

这道面试题,出错率90%

田维常

面试

电商平台如何激发内容生态

马踏飞机747

内容 内容分发网络 电商

我参与阿里巴巴 ASoC-Seata 的一些感悟

阿里巴巴云原生

阿里云 开发者 云原生 感悟 seata

漫画 | 带你领略前端发展史的江湖恩怨情仇

苏南

程序员 大前端 漫画 时代发展

LINUX SHELL脚本攻略

田维常

敏捷团队的质量保障赋能

BY林子

质量保障 质量赋能 敏捷测试

OpenKruise 2021 规划曝光:More than workloads

阿里巴巴云原生

阿里云 开源 容器 云原生 调度器

深度解析!滴滴内部开源Spring IoC和AOP源码小册

Java架构追梦

Java spring 架构 aop ioc

Linux进程知识干货|收藏

赖猫

c++ Linux 后台开发 运维

四年三次获奖,PostgreSQL再度荣获“年度数据库”桂冠!

PostgreSQLChina

数据库 postgresql 开源

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡软件测试

测试

对冲基金的子基金模式vs集中管理

9527

7 天开发后台系统技术小结

老魚

程序员 全栈 建站

软件测试--中间件介绍

测试人生路

软件测试 中间件

区块链app开发要多少钱?如何根据项目需求了解价格?

2020年11期券商App行情刷新及交易体验评测报告

博睿数据

APM 数据 AIOPS 证券

国外低代码平台趟过那些坑,对国内低代码企业有哪些启示?

DT极客

纵观 ActiveX 平台的兴衰史,看开发控件的技术演变

葡萄城技术团队

SpreadJS activex

如何防止短信验证码接口被恶意调用攻击?

香芋味的猫丶

短信 短信防刷 接口安全 验证码

架构师训练营 - 大作业二

Pudding

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