为什么要导入javax.swing。*而不是java.swing。*

时间:2010-01-05 08:19:21

标签: java swing package

我不明白为什么在“java”中为少数导入包附加了“x”。是什么原因?不能像其他java.swing.*一样java.io.*吗?

4 个答案:

答案 0 :(得分:20)

Swing最初是Java的扩展 - 一个可单独下载的库。它成为Java 1.2中“主要”JRE的一部分。如果一个单独的库声称一个java。*包,那将是奇怪的,因此目前的情况。还有很多其他扩展也有类似的故事。

Wikipedia article on Swing有关于其历史的更多信息。

答案 1 :(得分:17)

来自Core Java 2:
alt text http://bks5.books.google.fr/books?id=W6bomXWB-TYC&printsec=frontcover&img=1&zoom=5&edge=curl&sig=ACfU3U3IeRSfENUVokGf-d9GUZZBU-tYMQ

名称javax表示Java扩展包,而不是核心包。 Swing类确实是Java 1.1的扩展。因为Swing类不是核心层次结构的一部分,所以可以将Swing类加载到兼容Java 1.1的浏览器中。(浏览器的安全管理器不允许添加任何以“java.开头的包“。)在Java 2平台上,Swing包不再是扩展,而是核心层次结构的一部分。任何与Java 2兼容的Java实现都必须提供Swing类。然而,为了与Java 1.1代码兼容,javax名称仍然存在。 (实际上,Swing包以com.sun.java.swing开头,然后在早期的Java 2 beta版本中暂时转移到java.awt.swing,然后在Java 2 beta版本的后期返回com.sun.java.swing,之后Java程序员的抗议嚎叫,在javax.swing找到了最后的安息之地。)

答案 2 :(得分:5)

由于历史原因和向后兼容性。之前java 1.2 swing作为一个独立的包从java分发(因此javax作为扩展)。

当swing成为标准java分发包的一部分时,保留了名称以便向后兼容。 wikipedia文章

中的详细信息

答案 3 :(得分:1)

x 是因为它们是扩展程序。在java的1.1版本中没有swing,当它被添加时,他们决定将它命名为:javax

有许多具有相似历史的包。