javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
javax包背后的基本原理是什么?java和javax都包含哪些内容?
我知道很多企业级包都在javax中,Swing、新的日期和时间api (JSR-310)和其他J2SE包也在javax中。
当前回答
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过去只用于扩展。但是后来sun将它添加到java库中,忘记了删除x。开发人员开始使用javax编写代码。但后来,太阳公司决定将其改为java。开发人员不喜欢这个想法,因为他们的代码会被毁……所以javax被保留了下来。
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的一部分提供下载。
最初javax是用于扩展的,有时一些东西会从javax提升到java。
一个问题是Netscape(可能还有IE)限制了可以在java包中的类。
当Swing被设置为从javax“毕业”到java时,出现了一些小问题,因为人们意识到他们必须修改所有的导入。考虑到向后兼容性是Java的主要目标之一,他们改变了主意。
在那个时候,至少对社区(也许对Sun不是)来说,javax的全部意义都消失了。所以现在我们在javax中有了一些可能应该在java中出现的东西……但除了选择套餐名称的人之外,我不知道是否有人能根据具体情况找出其中的基本原理。