javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
当前回答
所有的javax包都是实验性的包。当Swing足够稳定并准备转移到java包时,那里有太多的代码,他们决定保留它,以保持向后兼容性的承诺。这在Laura Lemay和Rogers Candedhead撰写的Sams社论《Learn Java in 21 days》一书中有解释。
其他回答
Javax过去只用于扩展。但是后来sun将它添加到java库中,忘记了删除x。开发人员开始使用javax编写代码。但后来,太阳公司决定将其改为java。开发人员不喜欢这个想法,因为他们的代码会被毁……所以javax被保留了下来。
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的“核心”吗?
所有的javax包都是实验性的包。当Swing足够稳定并准备转移到java包时,那里有太多的代码,他们决定保留它,以保持向后兼容性的承诺。这在Laura Lemay和Rogers Candedhead撰写的Sams社论《Learn Java in 21 days》一书中有解释。
Java包是基本包,javax包是扩展包。
Swing是一个扩展,因为AWT是最初的UI API。Swing是在1.1版本之后出现的。
javax名称空间通常(这是一个载入的词)用于标准扩展,目前称为可选包。标准扩展是非核心api的子集;非核心api的另一部分显然称为非标准扩展,占用了com.sun这样的命名空间。*或com.ibm..核心api占用了java。名称空间。
在Java API世界中,并不是所有的东西都是从核心开始的,这就是为什么扩展通常诞生于JSR请求的原因。根据“明智的建议”,他们最终会被提升到核心位置。
对这个命名法的兴趣来自于Sun的一个失礼之处——扩展本可以被提升到核心,即从javax迁移。*到java。*打破向后兼容的承诺。程序员们哭得声嘶力竭,理智占上风。这就是为什么Swing API虽然是核心的一部分,但仍然保留在javax中。*名称空间。这也是包从扩展升级到核心的方式——它们只是作为JDK和JRE的一部分提供下载。