sun.misc.Unsafe是否在JDK9中公开?
我刚刚尝试JDK9
发现它sun.misc.Unsafe
现在不包含本机方法,而是将它们委托给some
jdk.internal.misc.Unsafe
,例如:
@ForceInlinepublic int getInt(Object o, long offset) {
return theInternalUnsafe.getInt(o, offset);
}
反过来,最新的实际上看起来像旧的sun.misc.Unsafe
,但是现在这些方法都带有一些注释:
@HotSpotIntrinsicCandidatepublic 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