【问题标题】:Minimum Jetty version compatible with Java 11与 Java 11 兼容的最低 Jetty 版本
【发布时间】:2021-09-03 13:13:14
【问题描述】:

兼容Java11的jetty最低版本是多少?

我目前使用的是在 Java7 上运行的 Jetty6.1.3。我尝试简单地升级 jre 和相关依赖项,但它不起作用。

【问题讨论】:

标签: java jetty java-11


【解决方案1】:

取决于您所说的“与 Java11 兼容”是什么意思?

如果您的意思是“它可以工作”,那么请使用 Jetty 9.4.x 系列。

“与 Java11 兼容”可能意味着很多事情,不仅仅是运行时,还涉及围绕 Java 9 引入的新功能(例如 JEP 238 和 MultiRelease JAR 文件)。

对于 Jetty 9.4.x 系列,字节码扫描在与 java 11 兼容之前经历了几次迭代。

  1. 在 Jetty 9.4.9 上,字节码扫描必须忽略当时在第 3 方 jar 文件中找到的 JPMS module-info.class 内容(在 Java 8 运行时运行时)。
  2. 在 Jetty 9.4.9 上,字节码扫描必须忽略 Java 8 运行时上的 META-INF/versions/* 内容。
  3. 在 Jetty 9.4.14 上,字节码扫描必须使用 META-INF/versions/* 智能地在 Java 9+ 运行时进行字节码扫描。
  4. 在 Jetty 9.4.14 上,必须更新字节码扫描以支持新的字节码格式(这意味着 ASM 库更新)

查看过去关于这些主题的答案

如果您的意思是“有效地使用 Java 11”,那么请使用 Jetty 10.0+

与往常一样,让您的 Jetty 和 JVM 保持最新。 (特别是如果你使用 SSL/TLS,因为在那个空间里事情变化非常快)

【讨论】:

    【解决方案2】:

    Eclipse 码头

    Eclipse Jetty 网站称 Jetty 10 和 11 至少都是为 Java 11 构建的。

    Jetty Version Servlet API License Java
    Jetty 9.4.x 3.1 JavaEE 8
    javax.servlet.*
    Java 8
    Jetty 10.0.x 4.0 JavaEE 8
    javax.servlet.*
    Java 11+
    Jetty 11.0.x 5.0 JakartaEE 9
    jakartaee.servlet.*
    Java 11+

    由于从 Oracle Corp 到 Eclipse Foundation 的过渡(Java EE 成为 Jakarta EE),以及随之而来的包名称从 javax.* 到 @987654330 的变化@,两个 Jetty 版本 10 和 11 在功能上是相同的。这两个版本是并行开发的。唯一显着的区别是包名。

    Apache Tomcat

    顺便说一句,Apache Tomcat 也在做同样的事情,并行版本 9 和 10.0,都支持 8+。它们分别使用 javaxjakarta 包命名。

    Tomcat 的下一个版本,版本 10.1.x 需要 Java 11+。 Tomcat 的下一个版本将支持仍在开发中的Jakarta 10 技术的下一个版本,例如Servlet 6。请参阅 Tomcat 网站上的 Which version? 页面。

    在 Java 11 上升级到 Jetty 10

    您可以通过在 Java 11 上转到 Jetty 10 进行直接升级。

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2020-04-02
      相关资源
      最近更新 更多