Java 9中将移除 Sun.misc.Unsafe

标签: JAVA JVM | 发表时间:2015-08-18 00:57 | 作者:曲东方
出处:http://ifeve.com

原文链接    译者: 曲东方

灾难将至,Java 9中将移除 Sun.misc.Unsafe

Oracle 正在 计划在Java 9中去掉 sun.misc.Unsafe API。 这绝对将是一场灾难,有可能会彻底破坏整个 java 生态圈。 几乎每个使用 java开发的工具、软件基础设施、高性能开发库都在底层使用了 sun.misc.Unsafe。 下面是上面链接中文档提到一个小列表:

  • Netty
  • Hazelcast
  • Cassandra
  • Mockito / EasyMock / JMock / PowerMock
  • Scala Specs
  • Spock
  • Robolectric
  • Grails
  • Neo4j
  • Spring Framework
  • Akka
  • Apache Kafka
  • Apache Wink
  • Apache Storm
  • Apache Hadoop
  • Apache Continuum

… 这个列表很长。。。

然而, Oracle 看起来是铁了心毫无理由的去掉它。下面是一个来自他们 邮件列表的评论: n

恕我直言 — sun.misc.Unsafe 必须死掉。 它是“不安全”的。它必须被废弃。请忽略一切理论上(想象中的)羁绊,从此走上正确的道路吧。

这个工程师似乎是毫无根据的憎恨 Unsafe。。。

Oracle应该怎么做?

当前Unsafe 类是一个强有力的工具。 没有必要去掉它。对这个类的特性有些明确的需求,这就是为什么事实上几乎每个 Java 程序都在使用它,不知不觉中许多流行的 Java库也在使用它。

提供完整的文档、发布 Unsafe 类

Oracle 应该接受现实,并将Unsafe转为公开 API,提供完善的文档和开发示例。 当前,没有准确的文档,开发中需要通过 stackoverflow 帖子或者其他一些随机的博客学习怎么使用 Unsafe。 移除 Unsafe 的一个主要论据是:使用它太容易让开发中犯错了。如果有完善的官方文档或许可以改善这一现状。

随 Unsafe一起发布新的替代 API

除了 Unsafe 文档外,Oracle 应该发布一个更易用的 API,提供 Unsafe 相同的功能。 这是上面文档中的提议的一部分。然而这不太应该以移除 Unsafe 为代价。 人们在开发新软件的时候就会逐步过渡到新的 API, Unsafe 就自动被废弃了。

这类似于向 Java 8引入 java.time 包中的新的 DateTime API。 新的日期 API 的引入并不表示之前的 DateTime API 被彻底移除或者隐藏到某个特殊 JVM flag 里。那样也肯定会引发一些事故。

实际上最可能会变成什么样子?

根据事情的发展趋势,Oracle 看起来会:

  1. 在 Java 9正常模式下移除 Unsafe 类。
  2. 仅在必须的情况下通过向 JVM 传递一个特殊的 flag 启动 Unsafe

这将导致绝对的灾难!

  • 不仅类似 Cassandra 或Zookeeper 等基础软件,几乎所有的 Java 程序,包括 web 应用也会挂掉,因为他们使用的基础库可能在底层使用了 Unsafe
  • 从此打开 Unsafe flag 将会成为启动 JVM 的默认 flag 之一,因为如果不打开它的话 Java 应用会在毫无提示的情况下崩溃。
  • 因为大多数环境不会默认把这个JVM flag 打开,当他们的系统升级 Java时软件系统会挂掉。 Java 打破了向后兼容的承诺。所有的基础库、软件基础设施从此变为两个版本:
    • Java 9之前的版本 – 使用 Unsafe
    • Java 9兼容 – 不使用 Unsafe
  • 迁移至 Java 9的进程会因此而变缓慢,这将影响整个 Java 生态系统。这将会类似于 Python 2升级到 Python 3的过程。

这种错误 JVM 社区之前曾经犯过

你是不是任务这太荒唐了,Oracle 绝不可能犯这样的错误?事实上它曾做过类似的事情了, 例如 Java 7中的字节码校验器

结论

现在是该让大家开始意识到这个问题的时候了。从 JVM中去掉 Unsafe或者把它隐藏在某个特殊的 flag 里面势必导致一场灾难。

参考链接

原创文章,转载请注明: 转载自 并发编程网 – ifeve.com

本文链接地址: Java 9中将移除 Sun.misc.Unsafe

相关 [java 中将 sun] 推荐:

前Sun CEO:Android无需获Java API许可

- - 业界
北京时间4月27日,据国外媒体 CNET报道,前Sun首席执行官Jonathan Schwartz周四在甲骨文诉谷歌侵权案中作证时称,Java API不应被视为专利或受Sun的保护,只要谷歌不使用Java这个词. Schwartz解释开放软件的性质时表示:“这些都是开放的API,我们想让更多的人使用,我们希望建起最大的帐篷,邀请尽可能多的人来.

Sun曾要价1亿美元向谷歌兜售Java专利遭拒

- oky - cnBeta.COM
新浪科技讯 北京时间7月22日上午消息,谷歌律师罗伯特・范尼斯特(Robert Van Nest)周四透露,Sun Microsystems在被甲骨文收购以前,曾提出以1亿美元的价格向谷歌出售Java专利,但遭到后者的拒绝.

谷歌曾与Sun几近达成2800万美元Java许可协议

- SUN - cnBeta.COM
据国外媒体报道,谷歌上周末在向法院递交的文件中披露,由于对平台控制权存在分歧,谷歌和Sun有关联合开发Android的谈判最终破裂. 谷歌和Sun几近达成未来3年以2800万美元许可2000项Java专利的协议. 甲骨文去年收购了Sun,并起诉谷歌Android侵犯了与Java相关的专利和商标权.

Java之父逐个评价甲骨文对Sun技术的处理

- - Solidot
在甲骨文收购Sun四周年之际,Java之父James Gosling逐一评价了甲骨文对Sun不同技术的处理结果. Gosling在2010年离开了甲骨文,目前担任海洋机器人公司Liquid Robotics的首席软件架构师. Gosling认为甲骨文对Solaris OS的处理是灾难性的,彻底杀死了Solaris,因为许可费太高,Solaris服务器用户只能迁移到Linux;他认为甲骨文对Java、GlassFish和NetBeans的处理还算可以;MySQL目前还苟活着,但正被分支和NoSQL所取代.

前Sun开发人员为Android,iOS等其他移动平台提供JAVA的WORA支持

- - InfoQ cn
2012年,在以色列出现了一个名为 Codename one的公司,该公司旨在生成一种新的Java SDK,该SDK将允许Java开发人员通过一个单一的代码库就能为包括iOS,Android,BlackBerry和Windows Phone等一系列的移动设备编写本地应用. 对于iOS,Codename one通过自己的云服务器先将Java代码转换成C或者Objective C代码,然后再将转换后的源代码编译成本地应用程序.

Sun JDK 1.6内存管理

- 小丑鱼 - 淘宝JAVA中间件团队博客
分为使用篇、调优篇和实现篇三个部分,使用篇为填鸭式,调优篇为pattern式,实现篇为启发式,三个PPT的目标为:. 1.掌握Sun JDK的内存区域的划分;. 2.掌握Sun JDK垃圾收集器的使用方法和触发时机;. 4.掌握一些基本的GC调优的方法;. 5.了解自动内存管理的常见实现方法,以及Sun JDK所做的优化.

Java 9中将移除 Sun.misc.Unsafe

- - 并发编程网 - ifeve.com
原文链接    译者: 曲东方. 灾难将至,Java 9中将移除 Sun.misc.Unsafe. Oracle 正在 计划在Java 9中去掉. 这绝对将是一场灾难,有可能会彻底破坏整个 java 生态圈. 几乎每个使用 java开发的工具、软件基础设施、高性能开发库都在底层使用了 sun.misc.Unsafe.

故事十八 STORY 18 by Sun Long

- Yao - Jia Za Zhi
假杂志邀请来讲第十八个故事的又是一位宁波的摄影师孙龙,因为要将的系列作品与大海相关,更是备感亲切. 孙龙的“海岸线”,与张晓在路上的、旁观的状态不一样,更多是一种身在其中的眷恋与深情,主观的情绪在一些细枝末节上若隐若显. 对于从小长大生活的地方,每个人都在自己的心里会藏着一些秘密、情绪,或者不露声色的痕迹.

新款诺基亚WP7手机Sun出现

- 洞箫 - cnBeta.COM
继Searay和Sabre型号的诺基亚WP7机型出现后,又有一款产品出现在法国运营商Orange的产品名录中,它的名字叫Sun,是一款运行Windows 7.5 Phone (Mango)的机型,内置一颗1.4GHz的处理器,一体成型聚碳酸酯外壳,16GB存储器,800万像素摄像头,3.7英寸AMOLED屏幕,microSIM卡槽,预计发布时间11月7日.

Nokia Sun「曙光」乍现,又一款 Windows Phone 现身?

- 品味视界 - Engadget 中国版
Nokia 今年究竟会出多少部 Windows Phone. 法国网站 Mon Windows Phone 发现一支目前为止仍未见过的手机型号 -- Nokia Sun,出现在 Orange 官网的上市清单中. 这款最新泄露的 Nokia 手机它的确也和日前已经谣言满天飞的 Nokia SeaRay 与 Sabre 一样,符合目前为止该公司对其「芒果(Mango)」手机的命名规则.