什么是com.sun包内?

就像javax包含扩展一样,com.sun包应该包含什么?

它包含标准Java(EE)API的Sun Oracle参考实现。 其中Mojarra (Oracle的参考JSF实现)和Glassfish (Oracle的参考Java EE实现)使用此包。 最好不要在代码中直接使用这些类,因为它会使代码紧密耦合到实现中。 直接编码java(x) API使您可以在不更改代码的情况下更改实现(例如,MyFaces而不是Mojarra和JBoss AS而不是Glassfish)。

请注意,不应将com.sun.*包与sun.*包混淆,后者是Oracle JRE背后的内部类,您不应该在代码中导入/使用它,因为它会使您的代码紧密耦合到JRE make /版。 不使用sun.* package可以让你在所有其他JRE实现(OpenJDK,GCJ等)上运行代码。

内部使用的软件包,您不需要直接访问。 可以在任何版本的Java中更改或删除它们。 您可以在OpenJDK中找到所有sun。*和com.sun。*包的源代码。

有许多地方使用com.sun包(其中一些在其他答案中提到)。 这个答案只是专门解决了JavaFX中com.sun的使用问题。 JavaFX是一个UI库,是OpenJDK的一部分 。

很多JavaFX实现都在com.sun类中 。 当JavaFX是开源的时,JavaFX开发人员就JavaFX中com.sun类的使用做出了以下评论 :

与往常一样,非公共API(或者更确切地说,不支持的API,即javafx命名空间中没有的任何内容,例如com.sun.* )不能依赖于从发行版到发行版。 但是对于那些想知道事情是如何运作的人来说,有一些非常重要的东西埋藏在不受支持的软件包中,对于那些想要真正破解OpenJFX的人来说,这将是更大的兴趣。