1

我正在将 servlet 4.0.1 升级到 servlet 5.0。我在 servlet 4.0.1 中使用了以下 maven 依赖项

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
</dependency> 

当我升级到 servlet 5.0 时,我看到有一个新术语“Jakarta”并且 servlet5 带有 Jakarta API,具有以下 maven 依赖项。

<dependency>
  <groupId>jakarta.servlet</groupId>
  <artifactId>jakarta.servlet-api</artifactId>
  <version>5.0.0</version>
</dependency>

因此,我尝试在互联网上搜索但找不到以下问题

  1. 请解释一下雅加达这个新术语,比如它是如何出现的?
  2. 这是使用 Jakarta API 升级 servlet 5.0 的唯一方法吗?我们可以使用旧的“javax.servlet-api”吗?
  3. 我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
  4. 将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?

如果有的话,还请建议任何文档以供参考

4

2 回答 2

5

Servlet 规范

你说:

我正在将 servlet 4.0.1 升级到 servlet 5.0。

Servlet 规范在 4.0 和 5.0 之间没有显着变化,除了从包命名javax.*转移。jakarta.*

从 Servlet 4 迁移到 Servlet 5,您不会从任何新功能或改进中受益。

码头

你评论说:

升级到 servlet 5.0 的主要原因是 Jetty11。因为这是Jetty11的先决条件。

Jetty 10 与 Jetty 11 相同,但将包名从 更改javax.*jakarta.*。这两个版本是并行开发的。Jetty 11 中没有比 Jetty 10 更好的功能或改进。

(顺便说一下,Apache Tomcat 9.x 和 Tomcat 10.0 也是如此,包命名更改的并行版本。)

如果您现在想保守一点,请坚持使用 Jetty 10 和javax.*包命名。如果你想为未来做准备,请使用 Jetty 11 和jakarta.*包命名。


关于 Oracle Corp 将 Java EE 的控制权移交给 Eclipse 基金会以及随之更名为 Jakarta EE 的过渡,有许多文章、演示文稿和采访。你真的应该对这个 Oracle-to-Jakarta 主题进行一些基本的行业研究,以了解这些变化。从维基百科开始

于 2021-08-09T08:14:52.117 回答
1
  1. 请解释一下雅加达这个新术语,比如它是如何出现的?

Oracle 维护 Java EE,2017 年 9 月 Oracle 宣布 Java EE 将提交给 Eclipse 基金会。“Java”是 Oracle 拥有的商标,因此“Java EE”更名为“Jakarta EE”。

  1. 这是使用 Jakarta API 升级 servlet 5.0 的唯一方法吗?我们可以使用旧的“javax.servlet-api”吗?
  2. 我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗?https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api

Jakarta EE 8 的第一个版本包含 Servlet 4.x,它与 Java EE 8 兼容。Java EE 8 和 Jakarta EE 8 都使用javax.*命名空间。

无论您使用哪一个都可以互相工作。

将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?

要升级到 Servlet 5.0,您必须使用 Jakarta EE 9。从 Jakarta EE 9 起,命名空间从 更改为javax.*jakarta.*因此您必须将所有javax.*包导入更改为jakarta.*包。

此外,如果您使用任何其他库,则必须使用兼容版本。

Jakarta EE Web API 的 maven 依赖项如下。

<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-web-api</artifactId>
    <version>9.1.0</version>
    <scope>provided</scope>
</dependency>

REF:Jakarta EE 9 Web 的 Githup 模板

于 2021-08-09T06:19:59.287 回答