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