BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Oracle确定Unsafe类处理策略

| 作者 Victor Grazi 关注 19 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2015年8月14日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

近来,sun.misc.Unsafe这一Java库类成了一个备受争议的话题。上周,Oracle首席Java架构师和Jigsaw项目经理Mark Reinhold在博文中就该类的未来阐述了一些观点。

Reinhold将Oracle的处理策略简要描述为:

  • 如果它[编者注:任何特定的sun.misc.Unsafe特性]在JDK 8中有一个受支持的替代选项,那么我们将在JDK 9中将其封装;
  • 如果它在JDK 8中没有一个受支持的替代选项,那么我们将不会在JDK 9中将其封装,以便外部代码仍然可以使用它;而且,
  • 如果它在JDK 9中有一个受支持的替代选项,那么我们将在JDK 9中弃用它,并且会在JDK 10中将其封装,甚或移除。

OpenJDK提案JEP 260已经被授权“封装大部分内部API”,它的创建反映了Oracle的策略。Jigsaw 项目已经严重拖期,Oracle试图用它模块化JDK,并提供Java模块化开发功能。

sun.misc.Unsafe是一个不受支持的Java类,它提供了底层“非安全”(按Java沙箱标准)操作的基本实现。传统上,自Java创建以来,Java创建者Sun Microsystems公司就不赞成使用“sun”包

Unsafe并不是一个正统的Java类,它来自不受支持的sun.misc包。关于这个讨论中的问题,现在需要关注的是,它将来仅限于通过Jigsaw项目的JDK模块来访问。

Unsafe包含以下几类操作:

  • 线程锁定
  • 线程parking和unparking
  • volatile访问
  • native比较和交换
  • 直接内存访问和分配
  • 声明式异常

由于这些方法在很大程度上是Java中唯一可以访问这类特性的方法,所以该库广泛应用于JDK及许多第三方库中。

已经有一个名为Variable Handles的方案,可以提供部分内存访问和volatile访问特性,但目前为止,Unsafe的其它功能仍有待晋升为一等公民。

高性能社区似乎很高兴看到事情确定了下来。

Hazelcast的Christoph Engelbert告诉InfoQ:

对于新策略所涉及的、关于sun.misc.Unsafe及其它私有API的暴露、移除或弃用,我非常赞赏。对于由那些广泛应用的私有API所造成的不幸状况,Hazelcast和我本人,我们都认为这可能是最好的解决方案。

Ben Cotton是Mechanical Sympathy低延迟社区论坛的一名活跃分子,他告诉InfoQ:

对于编写本地“大数据”实现,如今的Java应用程序开发人员需要真正的补救措施。当前,Java虽然支持NIO库,但却没有提供一个比2gb(一次调用)更好的API用于本地内存分配。Java 9用一个受支持的API替换了sun.misc.Unsafe,而且该API还有助于大数据应用程序开发。对此,我非常高兴。

InfoQ曾试图联系Oracle进行确认,但他们拒绝置评。

查看英文原文:Oracle Carving Strategy for Unsafe Library

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT