当我们的jar附带的类被添加到Java标准库中时会发生什么



我目前正在考虑将JSR-310、javax.time.Duration的一小部分添加到我们的库中。

这目前运行得非常好。

但是JSR-310计划集成在Java 8中!当在Java 8上执行我们的应用程序时,如果标准库中同时存在javax.time.Duration类和我们的jar文件附带的同一类,会发生什么?

其中一个类会被默默忽略吗?(哪一个?)当Java 8虚拟机试图从我们的库加载类时,会发生错误吗?

是否有任何兼容性问题需要我注意?

JVM遵循类路径来确定要加载的类。如果存在多个类,则后面的类将被忽略。

对于JVM本身中包含的类,这些是在类路径之前搜索的bootclasspath的一部分。

除非API发生了突破性的变化,否则您不应该注意到这一差异,Java 8将有效地忽略您额外的JAR。

这个问题现在可以澄清了。

JDK1.8类将位于java.time命名空间中,并且不能被重写(因为它们深入Java的核心)。

提供了一个后台端口项目,允许在JDK1.7上使用非常类似的API。它使用org.threeten.bp命名空间。其想法是,在大多数情况下,向JDK1.8过渡只需要对包进行重命名。

javax.time命名空间已不再使用。

相关内容

  • 没有找到相关文章

最新更新