javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
当前回答
java。*包是Java语言的核心包,这意味着使用Java语言的程序员必须使用它们,以便使Java语言有任何使用价值。
javax。*包是可选包,它提供了一种标准的、可伸缩的方式,使所有运行在Java平台上的应用程序都可以使用自定义api。
其他回答
一些包,如javax。Swing最初并没有包含在Java标准库中。Sun公司决定将它们视为官方的,并将它们作为标准库或标准扩展包含到java的早期版本中。
按照惯例,所有标准扩展都以X开头,而随着时间的推移,它们可以升级为一级扩展,就像javax.swing那样。
所有的javax包都是实验性的包。当Swing足够稳定并准备转移到java包时,那里有太多的代码,他们决定保留它,以保持向后兼容性的承诺。这在Laura Lemay和Rogers Candedhead撰写的Sams社论《Learn Java in 21 days》一书中有解释。
I think it's a historical thing - if a package is introduced as an addition to an existing JRE, it comes in as javax. If it's first introduced as part of a JRE (like NIO was, I believe) then it comes in as java. Not sure why the new date and time API will end up as javax following this logic though... unless it will also be available separately as a library to work with earlier versions (which would be useful). Note from many years later: it (date and time API) actually ended up being in java after all.
我相信java包是有限制的——我认为类加载器被设置为只允许java中的类。*从rt.jar或类似的东西加载。(当然在ClassLoader.preDefineClass中有一个检查。)
编辑:虽然官方的解释(orbfish的搜索并没有在第一页左右找到一个)毫无疑问是关于“核心”和“扩展”的,但我仍然怀疑在许多情况下,任何特定软件包的决定背后也有历史原因。是java。bean真的是Java的“核心”吗?
java。*包是Java语言的核心包,这意味着使用Java语言的程序员必须使用它们,以便使Java语言有任何使用价值。
javax。*包是可选包,它提供了一种标准的、可伸缩的方式,使所有运行在Java平台上的应用程序都可以使用自定义api。
Java包是基本包,javax包是扩展包。
Swing是一个扩展,因为AWT是最初的UI API。Swing是在1.1版本之后出现的。