sun.misc.Unsafe是否在JDK9中公开?

我刚刚尝试JDK9发现它sun.misc.Unsafe现在不包含本机方法,而是将它们委托给some

jdk.internal.misc.Unsafe,例如:

@ForceInline

public int getInt(Object o, long offset) {

return theInternalUnsafe.getInt(o, offset);

}

反过来,最新的实际上看起来像旧的sun.misc.Unsafe,但是现在这些方法都带有一些注释:

@HotSpotIntrinsicCandidate

public native void putObject(Object o, long offset, Object x);

那么,使用Unsafe启动JDK9是否“安全” ?现在是公共官方API吗?

回答:

这是一个很好的解释:

https://adtmag.com/blogs/watersworks/2015/08/java-9-hack.aspx

在Java

9中如何处理sun.misc.Unsafe?一方说,这应该是过去糟糕的过去的可怕骇客,应该予以消除。另一方说,大量使用Java是导致Java在基础架构领域兴起的原因,而流行的工具仍然需要Java。问题是,双方都是正确的。…

Reinhold在OpenJDK邮件列表中写道,建议在定义和使用它们的模块中封装不受支持的内部API,包括sun.misc.Unsafe。该提案现在是正式的Java增强提案(JEP)。本周发布的JEP

260(“封装大多数内部API”)旨在“默认情况下使大多数JDK内部API无法访问,但保留一些关键的,广泛使用的内部API,直到对其全部或大部分进行支持的替代品为止功能。”

简短的答案:您不应该在从头开始开发的任何新应用程序中使用它。

以上是 sun.misc.Unsafe是否在JDK9中公开? 的全部内容, 来源链接: utcz.com/qa/414357.html

回到顶部