javax vs java包
javax包的基本原理是什么? 什么进入java和什么进入javax?
我知道javax中有很多enterprise-y包,但Swing,新的日期和时间api(JSR-310)以及其他J2SE包也是如此。
我认为这是一个历史性的事情 - 如果一个软件包是作为现有JRE的补充而引入的,它就会以javax
。 如果它是作为JRE的一部分首次引入的(就像NIO一样,我相信),那么它会以java
。 不知道为什么新的日期和时间API会按照这个逻辑结束为javax
,除非它也可以单独作为一个库与早期版本一起使用(这很有用)。 多年后注意到:毕竟它实际上最终都是在java
。
我相信对java
包有一些限制 - 我认为类加载器的设置只允许从rt.jar
或类似的类加载java.*
中的类。 ( ClassLoader.preDefineClass
肯定有一个检查。)
编辑:虽然官方解释(搜索orbfish建议没有在第一页左右产生)是毫无疑问的“核心”与“扩展”,我仍然怀疑,在许多情况下,任何特定的软件包的决定有一个也是背后的历史原因。 例如, java.beans
真的是Java的核心吗?
最初的javax旨在用于扩展,有时甚至会将事件从javax推广到java。
一个问题是Netscape(可能是IE)限制了java包中的类。
当Swing被设置为从javax“毕业”java时,有一种微型炸弹,因为人们意识到他们将不得不修改所有的导入。 鉴于向后兼容性是Java的主要目标之一,他们改变了主意。
在那个时候,至少对于社区来说(可能不是Sun),javax的全部点都丢失了。 所以现在我们在javax中有一些可能应该在java中的东西......但除了选择包名的人之外,我不知道是否有人可以根据具体情况找出理由。
java包是“base”,而javax包是扩展。
Swing是一个扩展,因为AWT是最初的UI API。 之后Swing在1.1版本中出现。
链接地址: http://www.djcxy.com/p/84169.html