JavaFX& JEP 253:Java9发布后,'skin'API仍然可用吗?

时间:2016-09-14 18:12:01

标签: javafx javafx-8 skin

我的理解是,当Java9发布时,将无法再访问当前受限但仍用于JavaFX控件的com.sun。* API;但是,“皮肤”API将公开或以其他方式可访问,以便此更改仅适用于“行为”API。这个观点是基于我阅读JEP 253的最新更新(两周以来相对较近)。对于那些对JavaFX及其演化过程有更多经验的人(不需要太多),可以安全地假设当前的'皮肤'API仍然可以访问(并且变得不受限制)吗?我不指望任何保证,但如果这是一个不确定的命题,那么可能会对可能发生的事情进行最佳估计。

提前感谢您的回复!

1 个答案:

答案 0 :(得分:1)

正如JEP 253所述:

  

随着即将发布的Java 9,特别是在Project Jigsaw中引入模块之间的强大边界,开发人员会发现他们的代码将不再编译或运行,因为com.sun。*包将会不再可访问。

为了为已在com.sun.javafx.scene.control.skin中创建皮肤类的子类的开发人员提供一些支持,这些类将被移动到JavaFX 9中的公共包javafx.scene.control.skin。JEP并不羞于说明这是为了支持那些首先忽略了关于使用这些类的官方建议的开发人员。

JEP还声明

  

目的是将许多JavaFX控件外观移动到适当的公共包中,最有可能是javafx.scene.control.skin。没有意图也移动相关的行为类。

这意味着行为类将保留在非公共API中,因此在Java 9中将无法访问。皮肤类将移动到不同的包,因此依赖于当前com.sun.javafx.scene.control.skin包的代码将不会在Java 9中编译或运行,但可以修改它来执行此操作。依赖于行为类的代码将无法编译或运行,并且无法修改以执行此操作。

JEP列出了已移动的类。此外,可以看到JavaFX 9的当前早期访问API文档,其外观类已移至javafx.scene.control.skin here