javax 包是什么
本文写于 2022-06-17
为什么叫 javax
在很多 Java 程序中我们都可以看到 javax
包的身影,那么他到底是何方神圣呢?为什么它长得和 java 如此相似,只是多了一个 x
而已。
早期,Java 自带的类通常都是放在 java
开头的包中的——在最早的时候确实是这样。但后来出现了一些没有包含在标准函数库中的包。这些被称为“扩展”,英文就是 extension。
扩展有两种类型:标准的与非标准的。Sun 认可的扩展就是标准扩展,其余的即为非标准类型(非标准扩展不一定会被认可使用)。标准扩展都以 javax
作为包名称开头。
随着版本的迭代,标准扩展就逐渐被认为可以成为 Java 标准库的一部分了。
但 Sun 公司在发行 1.2 版本时,将包名从 javax
换成了 java
。开发者们发现他们之前所写的每一个程序都要跟着改写——不知道多少 import 述句是以 javax
开头的。
在最后的关头,开发者终于说服 Sun 采用“管它的命名传统,先保护程序再说”的方法。
所以现在看到函数库中以 javax
开头的包就会知道它以前曾经是扩展,后来才有了标准的名份。
javax 里面是什么
javax
里面的接口就是 JavaEE 规范的定义。
写过 Servlet 的同学应该知道,javax.servlet
中只提供给我们了接口,并没有具体的实现——必须要借助 Tomcat 或别的服务器程序才能够使 servlet 程序跑起来。
你猜的不错,javax
中的包都只提供了接口,具体的实现是各个开发者、开发团队自己开发的,javax
中并不提供。
例如 javax.sql
提供的接口由 MySQL、SQLite、Oracle……等等服务器软件自行实现。
为什么 jdk 下载完后 javax 只有这么几个包
jdk 会自带一些常用的 javax 包,但 javax 并不只有这么一些,还有很多的包需要你自行引入,例如非常常用的 bean validation。
从 javax 到 jakarta
Java 是 Sun 公司创建的项目,但 Sun 公司后来被 Oracle 给收购了。
Oracle 将 JavaEE 规范捐赠给了 Eclipse 基金会。
但是 Oracle 有一个意见,JavaEE
需要改名,不能再带着 Java 这个词。
因此 Eclipse 基金会在讨论后,将 JavaEE
重命名为了 JakartaEE
。javax
也就变成了 jakartax
。
(完)