javax与java包

javax与java包,java,Java,javax包背后的基本原理是什么?什么进入java,什么进入javax 我知道很多enterprise-y软件包都使用javax,但Swing、新的日期和时间api(JSR-310)和其他J2SE软件包也是如此。我认为这是一个历史性的事情——如果一个软件包作为现有JRE的一个附加组件引入,它将以javax的形式出现。如果它最初是作为JRE的一部分引入的(我相信像NIO一样),那么它将以java的形式出现。但是,不确定为什么新的日期和时间API最终会成为遵循此逻辑的javax。。。除非它也将作为一

javax包背后的基本原理是什么?什么进入java,什么进入javax


我知道很多enterprise-y软件包都使用javax,但Swing、新的日期和时间api(JSR-310)和其他J2SE软件包也是如此。

我认为这是一个历史性的事情——如果一个软件包作为现有JRE的一个附加组件引入,它将以
javax
的形式出现。如果它最初是作为JRE的一部分引入的(我相信像NIO一样),那么它将以
java
的形式出现。但是,不确定为什么新的日期和时间API最终会成为遵循此逻辑的
javax
。。。除非它也将作为一个库单独提供,以使用早期版本(这将非常有用)多年后的注释:它实际上最终还是出现在
java
中。

我相信
java
包有一些限制-我认为类加载器的设置只允许
java.*
中的类从
rt.jar
或类似的东西加载。(当然有一个签入
ClassLoader.preDefineClass


编辑:虽然官方的解释(orbfish建议的搜索结果在第一页左右没有给出)毫无疑问是“核心”与“扩展”,但我仍然怀疑,在许多情况下,任何特定包的决定背后也有历史原因。例如,
java.beans
真的是java的“核心”吗?

java
包是base,而
javax
包是扩展

Swing是一个扩展,因为AWT是最初的UI API。Swing随后出现在1.1版中。

javax名称空间通常(这是一个加载的单词)用于标准扩展,目前称为。标准扩展是非核心API的子集;非核心API的另一部分显然称为非标准扩展,它占用了com.sun.*或com.ibm等名称空间。。核心API占用了java。命名空间

并非JavaAPI世界中的一切都是从核心开始的,这就是为什么扩展通常是从JSR请求中产生的。基于“明智的建议”,他们最终被提升为核心


对这个术语的兴趣来自Sun的一个失误——扩展本可以升级到核心,即从javax.*迁移到java.*打破了向后兼容性的承诺。程序员们喊得声音嘶哑,更明智的想法占了上风。这就是为什么Swing API虽然是核心的一部分,但仍然保留在javax.*名称空间中。这也是软件包从扩展升级到核心的方式——它们只是作为JDK和JRE的一部分提供下载。

最初
javax
是用于扩展的,有时东西会从
javax
升级到java

一个问题是Netscape(可能还有IE)限制了java包中可能包含的类

当Swing从
javax
设置为“graduate”到
java
时,出现了一种小爆炸,因为人们意识到他们必须修改所有导入内容。考虑到向后兼容性是Java的主要目标之一,他们改变了主意


在那个时候,至少对社区(可能不是Sun)来说,
javax
的整个意义都消失了。现在我们在javax中有了一些东西,它们可能应该在
java
中。。。但是,除了选择包名的人之外,我不知道是否有人能够根据具体情况找出理由。

java.*包是核心的java语言包,这意味着使用java语言的程序员必须使用它们,才能有价值地使用java语言


javax.*包是可选的包,它提供了一种标准的、可扩展的方式,使自定义API可用于Java平台上运行的所有应用程序。

javax过去仅用于扩展。但后来sun将其添加到java库中,却忘了删除x。开发人员开始使用javax编写代码。然而,后来Sun决定将其更改为java。开发人员不喜欢这个想法,因为他们担心代码会被破坏。。。所以javax被保留了下来。

一些包,比如
javax.swing
最初并没有包含在java标准库中。太阳公司决定将它们视为官方的,并将它们作为标准库或标准扩展名纳入java的早期版本。
按照惯例,所有的标准扩展都以
X
开始,但随着时间的推移,它们可以像
javax那样升级到一流。swing

swing不是1.1的一部分。有一个版本的Swing作为一个库在1.1上运行,它的关键是“库”,而不是JDK的一部分。我的版本错了吗?我的javadocs表明JButton是从1.3开始的,所以可能我的内存不足。那么为什么新的日期和时间API是在javax中呢。。日期和时间不是“基础”?“…新的日期和时间api(JSR-310)…”-Oracle/Sun的某位员工认为最好将其放在javax中,因为它是核心库的较新扩展。如果你不同意,最好向他们提出。仅供参考:他们恢复了这个决定,JSR-310被放在
java下。时间
:“当Swing设置为从javax“毕业”到java时,出现了一种小爆炸,因为人们意识到他们必须修改所有的导入。”人们抱怨说,由于使用了预生产质量代码,正则表达式可以完成一些事情?是的。在Sun决定将其保留在javax包中之前,我在VisualCafe中编写了一个工具来在两者(javax和java)之间进行转换,为javax中的一个添加了弃用警告。因为aa阅读器点击alt-t并键入它比我使用iPad剪切和粘贴更容易?;)