This is an automated email from the ASF dual-hosted git repository.

HTHou pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new e47fa9279aa [To dev/1.3] Upgrade minimum JDK to 17 and migrate JavaX 
to Jakarta (#18499)
e47fa9279aa is described below

commit e47fa9279aad1669e4326a92f97291159587d1be
Author: Haonan <[email protected]>
AuthorDate: Mon Aug 24 15:51:54 2026 +0800

    [To dev/1.3] Upgrade minimum JDK to 17 and migrate JavaX to Jakarta (#18499)
---
 .github/workflows/compile-check.yml                |  52 ---------
 .github/workflows/daily-it.yml                     |   2 +-
 .github/workflows/daily-ut.yml                     |  17 ++-
 .github/workflows/multi-language-client.yml        |  15 +++
 .github/workflows/sonar-codecov.yml                |   4 +-
 Jenkinsfile                                        |   2 +-
 LICENSE-binary                                     |  43 +++++---
 README.md                                          |   4 +-
 README_ZH.md                                       |   4 +-
 example/jdbc/pom.xml                               |   4 +-
 example/pipe-count-point-processor/pom.xml         |   4 +-
 example/pom.xml                                    |   4 +-
 .../iotdb/it/env/cluster/config/MppBaseConfig.java |   3 +-
 .../cli/src/assembly/resources/sbin/start-cli.sh   |  16 +--
 iotdb-client/client-cpp/README.md                  |   5 +-
 iotdb-client/client-cpp/pom.xml                    |   8 +-
 iotdb-client/jdbc/README.md                        |   4 +-
 .../src/test/resources/iotdb-common.properties     |   2 +-
 .../src/assembly/resources/conf/confignode-env.sh  |  61 ++++-------
 .../assembly/resources/sbin/start-confignode.bat   |  20 ++--
 .../consensus/response/cq/ShowCQResp.java          |   2 +-
 .../schema/ClusterSchemaQuotaStatistics.java       |   2 +-
 .../mnode/container/ConfigMNodeContainer.java      |   2 +-
 iotdb-core/consensus/pom.xml                       |   4 +-
 iotdb-core/datanode/pom.xml                        |   4 +-
 .../src/assembly/resources/conf/datanode-env.sh    |  70 +++++-------
 .../src/assembly/resources/sbin/start-datanode.bat |  19 ++--
 .../org/apache/iotdb/db/audit/AuditLogger.java     |   2 +-
 .../iotdb/db/conf/rest/IoTDBRestServiceConfig.java |   2 +-
 .../resource/memory/PipeDynamicMemoryBlock.java    |   2 +-
 .../db/protocol/rest/filter/ApiOriginFilter.java   |  15 +--
 .../protocol/rest/filter/AuthorizationFilter.java  |  36 ++++---
 .../protocol/rest/filter/BasicSecurityContext.java |   2 +-
 .../rest/handler/AuthorizationHandler.java         |   4 +-
 .../protocol/rest/handler/QueryRowLimitUtils.java  |   2 +-
 .../db/protocol/rest/impl/PingApiServiceImpl.java  |   4 +-
 .../protocol/rest/v1/handler/ExceptionHandler.java |   2 +-
 .../rest/v1/handler/QueryDataSetHandler.java       |   2 +-
 .../rest/v1/impl/GrafanaApiServiceImpl.java        |   4 +-
 .../protocol/rest/v1/impl/RestApiServiceImpl.java  |   4 +-
 .../protocol/rest/v2/handler/ExceptionHandler.java |   2 +-
 .../protocol/rest/v2/handler/FastLastHandler.java  |   2 +-
 .../rest/v2/handler/QueryDataSetHandler.java       |   3 +-
 .../rest/v2/impl/GrafanaApiServiceImpl.java        |   4 +-
 .../protocol/rest/v2/impl/RestApiServiceImpl.java  |   4 +-
 .../execution/schedule/task/DriverTaskId.java      |   2 +-
 .../plan/execution/config/ConfigExecution.java     |   2 +-
 .../plan/expression/unary/InExpression.java        |   2 +-
 .../metedata/read/LevelTimeSeriesCountNode.java    |   2 +-
 .../node/metedata/read/TimeSeriesCountNode.java    |   2 +-
 .../metedata/read/TimeSeriesSchemaScanNode.java    |   2 +-
 .../logfile/FakeCRC32Deserializer.java             |   3 +-
 .../schemaregion/logfile/SchemaLogReader.java      |   2 +-
 .../mem/mnode/container/MemMNodeContainer.java     |   2 +-
 .../mnode/container/CachedMNodeContainer.java      |   3 +-
 .../view/visitor/TransformToExpressionVisitor.java |   2 +-
 .../org/apache/iotdb/db/service/RestService.java   |   8 +-
 .../compaction/schedule/CompactionWorker.java      |   2 +-
 .../rest/v1/handler/QueryDataSetHandlerTest.java   |   2 +-
 .../rest/v2/handler/FastLastHandlerTest.java       |   2 +-
 .../src/test/resources/iotdb-common.properties     |   2 +-
 .../src/test/resources/iotdb-system.properties     |   2 +-
 .../conf/iotdb-system.properties.template          |   2 +-
 .../src/assembly/resources/sbin/health_check.bat   |   4 +-
 .../src/assembly/resources/sbin/health_check.sh    |   2 +-
 iotdb-protocol/openapi/pom.xml                     |  26 +++--
 library-udf/pom.xml                                |   4 +-
 pom.xml                                            | 119 +++++++++------------
 68 files changed, 305 insertions(+), 367 deletions(-)

diff --git a/.github/workflows/compile-check.yml 
b/.github/workflows/compile-check.yml
deleted file mode 100644
index b20e8edd999..00000000000
--- a/.github/workflows/compile-check.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-#  This workflow will compile IoTDB under jdk8 to check for compatibility 
issues
-
-name: Compile Check
-
-on:
-  push:
-    branches:
-      - master
-      - 'rel/1.*'
-      - 'rc/1.*'
-    paths-ignore:
-      - 'docs/**'
-      - 'site/**'
-  pull_request:
-    branches:
-      - master
-      - 'rel/1.*'
-      - 'rc/1.*'
-    paths-ignore:
-      - 'docs/**'
-      - 'site/**'
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
-
-jobs:
-  compile-check:
-    strategy:
-      fail-fast: false
-      matrix:
-        java: [8]
-        os: [ ubuntu-latest ]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: liberica
-          java-version: ${{ matrix.java }}
-      - name: Compiler Test
-        shell: bash
-        run: |
-          mvn clean compile -P with-integration-tests -ntp
diff --git a/.github/workflows/daily-it.yml b/.github/workflows/daily-it.yml
index 3deeb4834c4..e429ca28258 100644
--- a/.github/workflows/daily-it.yml
+++ b/.github/workflows/daily-it.yml
@@ -20,7 +20,7 @@ jobs:
       fail-fast: false
       max-parallel: 20
       matrix:
-        java: [ 8, 17 ]
+        java: [ 17 ]
     runs-on: [self-hosted, iotdb]
     #      group: self-hosted
     #      labels: iotdb
diff --git a/.github/workflows/daily-ut.yml b/.github/workflows/daily-ut.yml
index b8ff46ca24f..68165c62426 100644
--- a/.github/workflows/daily-ut.yml
+++ b/.github/workflows/daily-ut.yml
@@ -13,6 +13,7 @@ env:
   MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
   MAVEN_ARGS: --batch-mode --no-transfer-progress
   DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
+  JDK_VERSION: 17
 
 jobs:
   unit-test:
@@ -20,25 +21,19 @@ jobs:
       fail-fast: false
       max-parallel: 15
       matrix:
-        java: [ 8 ]
-        os: [ ubuntu-latest, windows-latest ]
+        os: [ ubuntu-latest, macos-latest, windows-latest ]
         it_task: [ 'others', 'datanode' ]
-        include:
-          - java: 17
-            os: macos-latest
-            it_task: 'datanode'
-          - java: 17
-            os: macos-latest
-            it_task: 'others'
     runs-on: ${{ matrix.os }}
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
+      - name: Set up JDK ${{ env.JDK_VERSION }}
         uses: actions/setup-java@v4
         with:
           distribution: corretto
-          java-version: ${{ matrix.java }}
+          java-version: ${{ env.JDK_VERSION }}
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
       - name: Cache Maven packages
         uses: actions/cache@v4
         with:
diff --git a/.github/workflows/multi-language-client.yml 
b/.github/workflows/multi-language-client.yml
index 65629ce12d0..4b6bd9deac4 100644
--- a/.github/workflows/multi-language-client.yml
+++ b/.github/workflows/multi-language-client.yml
@@ -51,6 +51,11 @@ jobs:
 
     steps:
       - uses: actions/checkout@v4
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: corretto
+          java-version: 17
       - name: Install CPP Dependencies (Ubuntu)
         if: runner.os == 'Linux'
         shell: bash
@@ -136,6 +141,11 @@ jobs:
         with:
           token: ${{secrets.GITHUB_TOKEN}}
           submodules: recursive
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: corretto
+          java-version: 17
       - name: Cache Maven packages
         uses: actions/cache@v4
         with:
@@ -166,6 +176,11 @@ jobs:
         with:
           python-version: ${{ matrix.python }}
       - uses: actions/checkout@v4
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: corretto
+          java-version: 17
       - name: Cache Maven packages
         uses: actions/cache@v4
         with:
diff --git a/.github/workflows/sonar-codecov.yml 
b/.github/workflows/sonar-codecov.yml
index 234a7caff5b..e29ff35cf67 100644
--- a/.github/workflows/sonar-codecov.yml
+++ b/.github/workflows/sonar-codecov.yml
@@ -64,11 +64,11 @@ jobs:
     if: github.event_name == 'pull_request' && 
github.event.pull_request.head.repo.full_name == 'apache/iotdb' || 
github.event_name == 'push'
     steps:
       - uses: actions/checkout@v4
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@v4
         with:
           distribution: corretto
-          java-version: 17
+          java-version: 21
       - name: Cache Maven packages
         uses: actions/cache@v4
         with:
diff --git a/Jenkinsfile b/Jenkinsfile
index db45da55e18..f6f659dc41b 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -34,7 +34,7 @@ pipeline {
 
     tools {
         maven 'maven_3_latest'
-        jdk 'jdk_11_latest'
+        jdk 'jdk_17_latest'
     }
 
     options {
diff --git a/LICENSE-binary b/LICENSE-binary
index 6bcddb85554..d14c894798c 100644
--- a/LICENSE-binary
+++ b/LICENSE-binary
@@ -225,15 +225,24 @@ com.google.guava.guava:32.1.2-jre
 com.fasterxml.jackson.core:jackson-annotations:2.16.2
 com.fasterxml.jackson.core:jackson-core:2.16.2
 com.fasterxml.jackson.core:jackson-databind:2.16.2
-jakarta.inject:jakarta.inject:2.6.1
+com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base:2.16.2
+com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:2.16.2
+com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.16.2
+io.swagger.core.v3:swagger-annotations-jakarta:2.2.50
+io.swagger.core.v3:swagger-core-jakarta:2.2.50
+io.swagger.core.v3:swagger-integration-jakarta:2.2.50
+io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.50
+io.swagger.core.v3:swagger-models-jakarta:2.2.50
+jakarta.inject:jakarta.inject-api:2.0.1
 at.yawk.lz4:lz4-java:1.10.0
 com.github.ben-manes.caffeine:caffeine:2.9.3
-org.eclipse.jetty:jetty-http:9.4.58.v20250814
-org.eclipse.jetty:jetty-io:9.4.58.v20250814
-org.eclipse.jetty:jetty-security:9.4.58.v20250814
-org.eclipse.jetty:jetty-server:9.4.58.v20250814
-org.eclipse.jetty:jetty-servlet:9.4.58.v20250814
-org.eclipse.jetty:jetty-util:9.4.58.v20250814
+org.eclipse.jetty:jetty-http:12.0.36
+org.eclipse.jetty:jetty-io:12.0.36
+org.eclipse.jetty:jetty-security:12.0.36
+org.eclipse.jetty:jetty-server:12.0.36
+org.eclipse.jetty:jetty-session:12.0.36
+org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.36
+org.eclipse.jetty:jetty-util:12.0.36
 com.google.code.findbugs:jsr305:3.0.2
 com.librato.metrics:librato-java:2.1.0
 org.apache.thrift:libthrift:0.23.0
@@ -261,7 +270,7 @@ io.airlift.airline:0.9
 
 BSD 3-Clause
 ------------
-org.antlr:antlr-runtime:4.9.3
+org.antlr:antlr4-runtime:4.9.3
 org.ow2.asm:asm:9.3
 org.jline:jline:3.26.2
 
@@ -275,19 +284,29 @@ MIT License
 ------------
 org.slf4j:slf4j-api:2.0.9
 com.bugsnag:bugsnag:3.7.2
+io.github.classgraph:classgraph:4.8.184
 
 
 EPL 1.0
 ------------
 com.h2database:h2-mvstore:2.1.212
-ch.qos.logback:logback-classic:1.3.15
-ch.qos.logback:logback-core:1.3.15
+
+
+EPL 2.0
+------------
+ch.qos.logback:logback-classic:1.5.34
+ch.qos.logback:logback-core:1.5.34
+jakarta.annotation:jakarta.annotation-api:3.0.0
+jakarta.servlet:jakarta.servlet-api:6.0.0
+
+EDL 1.0
+------------
+jakarta.activation:jakarta.activation-api:2.1.0
+jakarta.xml.bind:jakarta.xml.bind-api:3.0.1
 
 
 CDDL 1.1
 ------------
-jakarta.annotation:jakarta.annotation-api:1.3.5
-jakarta.servlet:jakarta.servlet-api:4.0.4
 javax.xml.bind:jaxb-api:2.4.0-b180725.0427
 org.glassfish.jaxb:jaxb-runtime:2.3.6
 
diff --git a/README.md b/README.md
index d219e4d9657..fcfb5aec08b 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@
 ![](https://github-size-badge.herokuapp.com/apache/iotdb.svg)
 ![](https://img.shields.io/github/downloads/apache/iotdb/total.svg)
 
![](https://img.shields.io/badge/platform-win%20%7C%20macos%20%7C%20linux-yellow.svg)
-![](https://img.shields.io/badge/java--language-1.8%20%7C%2011%20%7C%2017-blue.svg)
+![](https://img.shields.io/badge/java--language-17+-blue.svg)
 [![IoTDB 
Website](https://img.shields.io/website-up-down-green-red/https/shields.io.svg?label=iotdb-website)](https://iotdb.apache.org/)
 [![Maven 
Version](https://maven-badges.herokuapp.com/maven-central/org.apache.iotdb/iotdb-parent/badge.svg)](http://search.maven.org/#search|gav|1|g:"org.apache.iotdb")
 [![Gitpod 
Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/apache/iotdb)
@@ -89,7 +89,7 @@ This short guide will walk you through the basic process of 
using IoTDB. For a m
 
 To use IoTDB, you need to have:
 
-1. Java >= 1.8 (1.8, 11 to 17 are verified. Please make sure the environment 
path has been set accordingly).
+1. Java >= 17 (17 to 25 are verified. Please make sure the environment path 
has been set accordingly).
 2. Maven >= 3.6 (If you want to compile and install IoTDB from source code).
 3. Set the max open files num as 65535 to avoid the "too many open files" 
error.
 4. (Optional) Set the somaxconn as 65535 to avoid "connection reset" error 
when the system is under high load.
diff --git a/README_ZH.md b/README_ZH.md
index cf25fccd901..8995f93efe6 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -28,7 +28,7 @@
 ![](https://github-size-badge.herokuapp.com/apache/iotdb.svg)
 ![](https://img.shields.io/github/downloads/apache/iotdb/total.svg)
 
![](https://img.shields.io/badge/platform-win%20%7C%20macos%20%7C%20linux-yellow.svg)
-![](https://img.shields.io/badge/java--language-1.8%20%7C%2011%20%7C%2017-blue.svg)
+![](https://img.shields.io/badge/java--language-17+-blue.svg)
 [![Language grade: 
Java](https://img.shields.io/lgtm/grade/java/g/apache/iotdb.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/iotdb/context:java)
 [![IoTDB 
Website](https://img.shields.io/website-up-down-green-red/https/shields.io.svg?label=iotdb-website)](https://iotdb.apache.org/)
 [![Maven 
Version](https://maven-badges.herokuapp.com/maven-central/org.apache.iotdb/iotdb-parent/badge.svg)](http://search.maven.org/#search|gav|1|g:"org.apache.iotdb")
@@ -86,7 +86,7 @@ IoTDB的主要特点如下:
 ## 环境准备
 
 要使用IoTDB,您需要:
-1. Java >= 1.8 (目前 1.8、11 到 17 已经被验证可用。请确保环变量境路径已正确设置)。
+1. Java >= 17 (目前 17 到 25 已经被验证可用。请确保环变量境路径已正确设置)。
 2. Maven >= 3.6 (如果希望从源代码编译和安装IoTDB)。
 3. 设置 max open files 为 65535,以避免"too many open files"错误。
 4. (可选) 将 somaxconn 设置为 65535 以避免系统在高负载时出现 "connection reset" 错误。 
diff --git a/example/jdbc/pom.xml b/example/jdbc/pom.xml
index 08bfee7abdf..0fa4a500567 100644
--- a/example/jdbc/pom.xml
+++ b/example/jdbc/pom.xml
@@ -29,8 +29,8 @@
     <artifactId>jdbc-example</artifactId>
     <name>IoTDB: Example: JDBC</name>
     <properties>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>
diff --git a/example/pipe-count-point-processor/pom.xml 
b/example/pipe-count-point-processor/pom.xml
index 6e9e802bfad..766203552f2 100644
--- a/example/pipe-count-point-processor/pom.xml
+++ b/example/pipe-count-point-processor/pom.xml
@@ -29,8 +29,8 @@
     <artifactId>pipe-count-point-processor-example</artifactId>
     <name>IoTDB: Example: Pipe: Count Point Processor</name>
     <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>
diff --git a/example/pom.xml b/example/pom.xml
index 562a6fbffab..4d0707ca9fc 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -49,8 +49,8 @@
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
                     <configuration>
-                        <source>8</source>
-                        <target>8</target>
+                        <source>17</source>
+                        <target>17</target>
                     </configuration>
                 </plugin>
                 <plugin>
diff --git 
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
 
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
index 975ae1a5682..e0758de70c9 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
@@ -19,8 +19,9 @@
 
 package org.apache.iotdb.it.env.cluster.config;
 
+import jakarta.validation.constraints.NotNull;
+
 import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
 
 import java.io.FileWriter;
 import java.io.IOException;
diff --git a/iotdb-client/cli/src/assembly/resources/sbin/start-cli.sh 
b/iotdb-client/cli/src/assembly/resources/sbin/start-cli.sh
index 0e5f7d92c88..df4377e3812 100755
--- a/iotdb-client/cli/src/assembly/resources/sbin/start-cli.sh
+++ b/iotdb-client/cli/src/assembly/resources/sbin/start-cli.sh
@@ -132,20 +132,24 @@ JVM_VERSION=${jvmver%_*}
 version_arr=(${JVM_VERSION//./ })
 
 illegal_access_params=""
-#GC log path has to be defined here because it needs to access IOTDB_HOME
 if [ "${version_arr[0]}" = "1" ] ; then
-    # Java 8
     MAJOR_VERSION=${version_arr[1]}
 else
-    #JDK 11 and others
     MAJOR_VERSION=${version_arr[0]}
-    # Add argLine for Java 11 and above, due to [JEP 396: Strongly Encapsulate 
JDK Internals by Default] (https://openjdk.java.net/jeps/396)
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
 fi
 
+if [ "$MAJOR_VERSION" -lt 17 ] ; then
+    echo "IoTDB requires Java 17 or later."
+    exit 1
+fi
+
+# Add argLine for Java 17 and above, due to [JEP 396: Strongly Encapsulate JDK 
Internals by Default] (https://openjdk.java.net/jeps/396)
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
+
+JVM_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
 
 set -o noglob
 
iotdb_cli_params="-Dlogback.configurationFile=${IOTDB_CLI_CONF}/logback-cli.xml"
-exec "$JAVA" $iotdb_cli_params $illegal_access_params -cp "$CLASSPATH" 
"$MAIN_CLASS" $PARAMETERS
+exec "$JAVA" $JVM_OPTS $iotdb_cli_params $illegal_access_params -cp 
"$CLASSPATH" "$MAIN_CLASS" $PARAMETERS
 
 exit $?
diff --git a/iotdb-client/client-cpp/README.md 
b/iotdb-client/client-cpp/README.md
index 1ce08dc560a..d24186e0f81 100644
--- a/iotdb-client/client-cpp/README.md
+++ b/iotdb-client/client-cpp/README.md
@@ -304,9 +304,8 @@ mvn -P with-cpp -pl iotdb-client/client-cpp spotless:check
 mvn -P with-cpp -pl iotdb-client/client-cpp spotless:apply
 ```
 
-On JDK 8 the C++ Spotless profile is skipped automatically (Spotless's
-clang-format integration requires Spotless 2.44+, which itself requires
-JDK 11+).
+The C++ Spotless profile is registered on the repository baseline, JDK 17+.
+Use JDK 17 or newer for `spotless:check` / `spotless:apply`.
 
 ## Package layout
 
diff --git a/iotdb-client/client-cpp/pom.xml b/iotdb-client/client-cpp/pom.xml
index 418ef22fdf6..750cbad4585 100644
--- a/iotdb-client/client-cpp/pom.xml
+++ b/iotdb-client/client-cpp/pom.xml
@@ -391,15 +391,11 @@
                 <build.tests>OFF</build.tests>
             </properties>
         </profile>
-        <!--
-          Spotless <clangFormat> needs Spotless 2.44+; root POM downgrades to
-          2.27.1 on JDK8 and cannot parse cpp config. Only register C++ rules
-          when JDK 11+.
-        -->
+        <!-- Spotless <clangFormat> needs Spotless 2.44+; only register C++ 
rules on the repository baseline, JDK 17+. -->
         <profile>
             <id>spotless-cpp</id>
             <activation>
-                <jdk>[11,)</jdk>
+                <jdk>[17,)</jdk>
             </activation>
             <build>
                 <plugins>
diff --git a/iotdb-client/jdbc/README.md b/iotdb-client/jdbc/README.md
index 02e7e585b80..9d8c5409dfd 100644
--- a/iotdb-client/jdbc/README.md
+++ b/iotdb-client/jdbc/README.md
@@ -23,7 +23,7 @@
 
 ## Dependencies
 
-* JDK >= 1.8
+* JDK >= 17
 * Maven >= 3.6
 
 ## How to package only jdbc project
@@ -269,4 +269,4 @@ Start a data source instance (supposed you have started 
IoTDB):
 jdbc:ds-create -dc org.apache.iotdb.jdbc.IoTDBDriver -u root -p root -url 
"jdbc:iotdb://127.0.0.1:6667/" IoTDB
 ```
 Try query:
-`jdbc:query IoTDB "select * from root"`
\ No newline at end of file
+`jdbc:query IoTDB "select * from root"`
diff --git a/iotdb-client/session/src/test/resources/iotdb-common.properties 
b/iotdb-client/session/src/test/resources/iotdb-common.properties
index ec9b6914ef8..5c2150a3789 100644
--- a/iotdb-client/session/src/test/resources/iotdb-common.properties
+++ b/iotdb-client/session/src/test/resources/iotdb-common.properties
@@ -31,7 +31,7 @@ enable_rest_service=true
 # The request rowLimit/row_limit value cannot exceed this limit.
 # rest_query_default_row_size_limit=10000
 
-# Whether to display rest service interface information through swagger. eg: 
http://ip:port/swagger.json
+# Whether to display rest service interface information through OpenAPI. eg: 
http://ip:port/openapi.json
 # enable_swagger=false
 
 # is SSL enabled
diff --git 
a/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.sh 
b/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.sh
index 065f08dee35..7767f4bdbf5 100644
--- a/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.sh
+++ b/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.sh
@@ -201,53 +201,37 @@ fi
 java_ver_output=`"$JAVA" -version 2>&1`
 jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 
'NR==1 {print $2}' | cut -d\- -f1`
 JVM_VERSION=${jvmver%_*}
-JVM_PATCH_VERSION=${jvmver#*_}
-if [ "$JVM_VERSION" \< "1.8" ] ; then
-    echo "IoTDB requires Java 8u92 or later."
-    exit 1;
+version_arr=(${JVM_VERSION//./ })
+if [ "${version_arr[0]}" = "1" ] ; then
+    MAJOR_VERSION=${version_arr[1]}
+else
+    MAJOR_VERSION=${version_arr[0]}
 fi
 
-if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt 92 ] ; then
-    echo "IoTDB requires Java 8u92 or later."
+if [ "$MAJOR_VERSION" -lt 17 ] ; then
+    echo "IoTDB requires Java 17 or later."
     exit 1;
 fi
 
-version_arr=(${JVM_VERSION//./ })
-
 illegal_access_params=""
 #GC log path has to be defined here because it needs to access CONFIGNODE_HOME
-if [ "${version_arr[0]}" = "1" ] ; then
-    # Java 8
-    MAJOR_VERSION=${version_arr[1]}
-    echo "$CONFIGNODE_JMX_OPTS" | grep -q "^-[X]loggc"
-    if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
-        # only add -Xlog:gc if it's not mentioned in jvm-server.options file
-        mkdir -p ${CONFIGNODE_HOME}/logs
-        if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
-            CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS 
-Xloggc:${CONFIGNODE_HOME}/logs/gc.log  -XX:+PrintGCDateStamps 
-XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime 
-XX:+PrintPromotionFailure -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=10M"
-        fi
-    fi
-else
-    #JDK 11 and others
-    MAJOR_VERSION=${version_arr[0]}
-    # See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for 
details about the syntax
-    # The following is the equivalent to -XX:+PrintGCDetails 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
-    echo "$CONFIGNODE_JMX_OPTS" | grep -q "^-[X]log:gc"
-    if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
-        # only add -Xlog:gc if it's not mentioned in jvm-server.options file
-        mkdir -p ${CONFIGNODE_HOME}/logs
-        if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
-            CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS 
-Xlog:gc=info,heap*=info,age*=info,safepoint=info,promotion*=info:file=${CONFIGNODE_HOME}/logs/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760"
-        fi
+# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for 
details about the syntax
+# The following is the equivalent to -XX:+PrintGCDetails 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
+echo "$CONFIGNODE_JMX_OPTS" | grep -q "^-[X]log:gc"
+if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
+    # only add -Xlog:gc if it's not mentioned in jvm-server.options file
+    mkdir -p ${CONFIGNODE_HOME}/logs
+    if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
+        CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS 
-Xlog:gc=info,heap*=info,age*=info,safepoint=info,promotion*=info:file=${CONFIGNODE_HOME}/logs/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760"
     fi
-    # Add argLine for Java 11 and above, due to [JEP 396: Strongly Encapsulate 
JDK Internals by Default] (https://openjdk.java.net/jeps/396)
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.nio=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.io=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.net=ALL-UNNAMED"
 fi
+# Add argLine for Java 17 and above, due to [JEP 396: Strongly Encapsulate JDK 
Internals by Default] (https://openjdk.java.net/jeps/396)
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.nio=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.io=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.net=ALL-UNNAMED"
 
 
 calculate_memory_sizes
@@ -310,4 +294,3 @@ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-XX:+CrashOnOutOfMemoryError"
 
 echo "ConfigNode on heap memory size = ${ON_HEAP_MEMORY}B, off heap memory 
size = ${OFF_HEAP_MEMORY}B"
 echo "If you want to change this configuration, please check 
conf/confignode-env.sh."
-
diff --git 
a/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat 
b/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
index 40c5869549e..c2ea82acebf 100644
--- a/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
+++ b/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
@@ -46,15 +46,15 @@ for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java 
-fullversion 2^>^&1') do (
 
 set JAVA_VERSION=%MAJOR_VERSION%
 
-@REM we do not check jdk that version less than 1.8 because they are too 
stale...
-IF "%JAVA_VERSION%" == "6" (
-       echo IoTDB only supports jdk >= 8, please check your java version.
-       goto finally
-)
-IF "%JAVA_VERSION%" == "7" (
-       echo IoTDB only supports jdk >= 8, please check your java version.
-       goto finally
-)
+       @REM IoTDB requires JDK 17 or later.
+       IF "%JAVA_VERSION%" == "" (
+               echo Failed to determine Java version. IoTDB only supports jdk 
^>= 17, please check your java installation.
+               goto finally
+       )
+       IF %JAVA_VERSION% LSS 17 (
+               echo IoTDB only supports jdk ^>= 17, please check your java 
version.
+               goto finally
+       )
 
 if "%OS%" == "Windows_NT" setlocal
 
@@ -206,4 +206,4 @@ pause
 
 :finally
 @ENDLOCAL
-pause
\ No newline at end of file
+pause
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/cq/ShowCQResp.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/cq/ShowCQResp.java
index f922888baed..52af4a78b7e 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/cq/ShowCQResp.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/cq/ShowCQResp.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TCQEntry;
 import org.apache.iotdb.confignode.rpc.thrift.TShowCQResp;
 import org.apache.iotdb.consensus.common.DataSet;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.Comparator;
 import java.util.List;
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaQuotaStatistics.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaQuotaStatistics.java
index 8d87d5b2715..b99fa62f869 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaQuotaStatistics.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaQuotaStatistics.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.confignode.manager.schema;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.Map;
 import java.util.Set;
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/container/ConfigMNodeContainer.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/container/ConfigMNodeContainer.java
index 72012ba84c2..32926b02c1f 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/container/ConfigMNodeContainer.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/container/ConfigMNodeContainer.java
@@ -21,7 +21,7 @@ package 
org.apache.iotdb.confignode.persistence.schema.mnode.container;
 import org.apache.iotdb.commons.schema.node.utils.IMNodeContainer;
 import org.apache.iotdb.confignode.persistence.schema.mnode.IConfigMNode;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.AbstractMap;
 import java.util.Collection;
diff --git a/iotdb-core/consensus/pom.xml b/iotdb-core/consensus/pom.xml
index 90ec92c0024..f5892d729b9 100644
--- a/iotdb-core/consensus/pom.xml
+++ b/iotdb-core/consensus/pom.xml
@@ -32,8 +32,8 @@
         <consensus.it.skip>${consensus.test.skip}</consensus.it.skip>
         <consensus.test.skip>false</consensus.test.skip>
         <consensus.ut.skip>${consensus.test.skip}</consensus.ut.skip>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
     </properties>
     <dependencies>
         <dependency>
diff --git a/iotdb-core/datanode/pom.xml b/iotdb-core/datanode/pom.xml
index 299e50f1be9..f0c2d609fc3 100644
--- a/iotdb-core/datanode/pom.xml
+++ b/iotdb-core/datanode/pom.xml
@@ -287,8 +287,8 @@
             <artifactId>netty-buffer</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-servlet</artifactId>
+            <groupId>org.eclipse.jetty.ee10</groupId>
+            <artifactId>jetty-ee10-servlet</artifactId>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jersey.inject</groupId>
diff --git a/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.sh 
b/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.sh
index af3cc6ae9dd..a8b1fdd763b 100755
--- a/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.sh
+++ b/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.sh
@@ -203,59 +203,40 @@ fi
 java_ver_output=`"$JAVA" -version 2>&1`
 jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 
'NR==1 {print $2}' | cut -d\- -f1`
 JVM_VERSION=${jvmver%_*}
-JVM_PATCH_VERSION=${jvmver#*_}
-if [ "$JVM_VERSION" \< "1.8" ] ; then
-    echo "IoTDB requires Java 8u92 or later."
-    exit 1;
+version_arr=(${JVM_VERSION//./ })
+if [ "${version_arr[0]}" = "1" ] ; then
+    MAJOR_VERSION=${version_arr[1]}
+else
+    MAJOR_VERSION=${version_arr[0]}
 fi
 
-if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt 92 ] ; then
-    echo "IoTDB requires Java 8u92 or later."
+if [ "$MAJOR_VERSION" -lt 17 ] ; then
+    echo "IoTDB requires Java 17 or later."
     exit 1;
 fi
 
-version_arr=(${JVM_VERSION//./ })
-
 illegal_access_params=""
 #GC log path has to be defined here because it needs to access IOTDB_HOME
-if [ "${version_arr[0]}" = "1" ] ; then
-    # Java 8
-    MAJOR_VERSION=${version_arr[1]}
-    echo "$IOTDB_JMX_OPTS" | grep -q "^-[X]loggc"
-    if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
-        # only add -Xlog:gc if it's not mentioned in jvm-server.options file
-        mkdir -p ${IOTDB_HOME}/logs
-        if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
-            IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -Xloggc:${IOTDB_HOME}/logs/gc.log 
-XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime 
-XX:+PrintPromotionFailure -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=10M"
-            # For more detailed GC information, you can uncomment option below.
-            # NOTE: more detailed GC information may bring larger GC log files.
-            # IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-Xloggc:${IOTDB_HOME}/logs/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails 
-XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure 
-XX:+UseGCLogFileRotation -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC 
-XX:+PrintReferenceGC -XX:+PrintSafepointStatistics 
-XX:PrintSafepointStatisticsCount=1 -XX:NumberOfGCLogFiles=10 
-XX:GCLogFileSize=100M"
-        fi
-    fi
-else
-    #JDK 11 and others
-    MAJOR_VERSION=${version_arr[0]}
-    # See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for 
details about the syntax
-    # The following is the equivalent to -XX:+PrintGCDetails 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
-    echo "$IOTDB_JMX_OPTS" | grep -q "^-[X]log:gc"
-    if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
-        # only add -Xlog:gc if it's not mentioned in jvm-server.options file
-        mkdir -p ${IOTDB_HOME}/logs
-        if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
-            IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-Xlog:gc=info,heap*=info,age*=info,safepoint=info,promotion*=info:file=${IOTDB_HOME}/logs/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760"
-            # For more detailed GC information, you can uncomment option below.
-            # NOTE: more detailed GC information may bring larger GC log files.
-            # IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-Xlog:gc*=debug,heap*=debug,age*=trace,metaspace*=info,safepoint*=debug,promotion*=info:file=${IOTDB_HOME}/logs/gc.log:time,uptime,pid,tid,level,tags:filecount=10,filesize=100M"
-        fi
+# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for 
details about the syntax
+# The following is the equivalent to -XX:+PrintGCDetails 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
+echo "$IOTDB_JMX_OPTS" | grep -q "^-[X]log:gc"
+if [ "$?" = "1" ] ; then # [X] to prevent ccm from replacing this line
+    # only add -Xlog:gc if it's not mentioned in jvm-server.options file
+    mkdir -p ${IOTDB_HOME}/logs
+    if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
+        IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-Xlog:gc=info,heap*=info,age*=info,safepoint=info,promotion*=info:file=${IOTDB_HOME}/logs/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760"
+        # For more detailed GC information, you can uncomment option below.
+        # NOTE: more detailed GC information may bring larger GC log files.
+        # IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS 
-Xlog:gc*=debug,heap*=debug,age*=trace,metaspace*=info,safepoint*=debug,promotion*=info:file=${IOTDB_HOME}/logs/gc.log:time,uptime,pid,tid,level,tags:filecount=10,filesize=100M"
     fi
-    # Add argLine for Java 11 and above, due to [JEP 396: Strongly Encapsulate 
JDK Internals by Default] (https://openjdk.java.net/jeps/396)
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.nio=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.io=ALL-UNNAMED"
-    illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.net=ALL-UNNAMED"
 fi
+# Add argLine for Java 17 and above, due to [JEP 396: Strongly Encapsulate JDK 
Internals by Default] (https://openjdk.java.net/jeps/396)
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.lang=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.util=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.nio=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.io=ALL-UNNAMED"
+illegal_access_params="$illegal_access_params 
--add-opens=java.base/java.net=ALL-UNNAMED"
 
 
 calculate_memory_sizes
@@ -348,4 +329,3 @@ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -XX:+SafepointTimeout"
 
 echo "DataNode on heap memory size = ${ON_HEAP_MEMORY}B, off heap memory size 
= ${OFF_HEAP_MEMORY}B"
 echo "If you want to change this configuration, please check 
conf/datanode-env.sh."
-
diff --git a/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat 
b/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
index c80aaf6f551..1a13bd3e641 100755
--- a/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
+++ b/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
@@ -48,15 +48,15 @@ for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java 
-fullversion 2^>^&1') do (
 
 set JAVA_VERSION=%MAJOR_VERSION%
 
-@REM we do not check jdk that version less than 1.8 because they are too 
stale...
-IF "%JAVA_VERSION%" == "6" (
-       echo IoTDB only supports jdk >= 8, please check your java version.
-       goto finally
-)
-IF "%JAVA_VERSION%" == "7" (
-       echo IoTDB only supports jdk >= 8, please check your java version.
-       goto finally
-)
+       @REM IoTDB requires JDK 17 or later.
+       IF "%JAVA_VERSION%" == "" (
+               echo Failed to determine Java version. IoTDB only supports jdk 
^>= 17, please check your java installation.
+               goto finally
+       )
+       IF %JAVA_VERSION% LSS 17 (
+               echo IoTDB only supports jdk ^>= 17, please check your java 
version.
+               goto finally
+       )
 
 @REM 
-----------------------------------------------------------------------------
 @REM SET DIR
@@ -272,4 +272,3 @@ pause
 :finally
 @ENDLOCAL
 pause
-
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
index 5019d3ab8fe..c4aa9ad01c3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
@@ -44,7 +44,7 @@ import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.time.ZoneId;
 import java.util.List;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceConfig.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceConfig.java
index bca061a905f..cf29470b066 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceConfig.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceConfig.java
@@ -27,7 +27,7 @@ public class IoTDBRestServiceConfig {
   /** Set the REST Service port. */
   private int restServicePort = 18080;
 
-  /** Whether to display rest service interface information through swagger. */
+  /** Whether to display rest service interface information through OpenAPI. */
   private boolean enableSwagger = false;
 
   /** Enable the REST Service ssl. */
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeDynamicMemoryBlock.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeDynamicMemoryBlock.java
index 3dbac912db3..87a8b4a45cf 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeDynamicMemoryBlock.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeDynamicMemoryBlock.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.pipe.resource.memory;
 
 import org.apache.tsfile.utils.Pair;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.function.Consumer;
 import java.util.stream.Stream;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/ApiOriginFilter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/ApiOriginFilter.java
index aacc2bcc09a..b7d4d99d297 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/ApiOriginFilter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/ApiOriginFilter.java
@@ -17,16 +17,17 @@
 
 package org.apache.iotdb.db.protocol.rest.filter;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
 
-public class ApiOriginFilter implements javax.servlet.Filter {
+public class ApiOriginFilter implements Filter {
   @Override
   public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
       throws IOException, ServletException {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
index 878705ad0bc..79adb6e8b23 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
@@ -28,15 +28,15 @@ import 
org.apache.iotdb.db.protocol.session.RestClientSession;
 import org.apache.iotdb.db.protocol.session.SessionManager;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-import javax.servlet.annotation.WebFilter;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ContainerResponseFilter;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.Provider;
+import jakarta.servlet.annotation.WebFilter;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.container.ContainerResponseContext;
+import jakarta.ws.rs.container.ContainerResponseFilter;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.ext.Provider;
 
 import java.io.IOException;
 import java.time.ZoneId;
@@ -57,14 +57,14 @@ public class AuthorizationFilter implements 
ContainerRequestFilter, ContainerRes
 
   @Override
   public void filter(ContainerRequestContext containerRequestContext) throws 
IOException {
+    String requestPath = containerRequestContext.getUriInfo().getPath();
 
-    if ("OPTIONS".equals(containerRequestContext.getMethod())
-        || "ping".equals(containerRequestContext.getUriInfo().getPath())
-        || (config.isEnableSwagger()
-            && 
"swagger.json".equals(containerRequestContext.getUriInfo().getPath()))) {
+    if ("OPTIONS".equals(containerRequestContext.getMethod()) || 
"ping".equals(requestPath)) {
       return;
-    } else if (!config.isEnableSwagger()
-        && 
"swagger.json".equals(containerRequestContext.getUriInfo().getPath())) {
+    } else if (isOpenApiPath(requestPath)) {
+      if (config.isEnableSwagger()) {
+        return;
+      }
       Response resp =
           
Response.status(Status.NOT_FOUND).type(MediaType.APPLICATION_JSON).entity("").build();
       containerRequestContext.abortWith(resp);
@@ -155,4 +155,10 @@ public class AuthorizationFilter implements 
ContainerRequestFilter, ContainerRes
       SESSION_MANAGER.removeCurrSession();
     }
   }
+
+  private boolean isOpenApiPath(String requestPath) {
+    return "openapi".equals(requestPath)
+        || "openapi.json".equals(requestPath)
+        || "openapi.yaml".equals(requestPath);
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/BasicSecurityContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/BasicSecurityContext.java
index 28030577a93..6c04aac62a6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/BasicSecurityContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/BasicSecurityContext.java
@@ -17,7 +17,7 @@
 
 package org.apache.iotdb.db.protocol.rest.filter;
 
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.SecurityContext;
 
 import java.security.Principal;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
index eba8d8b365f..86a9172ca76 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
@@ -23,8 +23,8 @@ import 
org.apache.iotdb.db.protocol.rest.model.ExecutionStatus;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 public class AuthorizationHandler {
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/QueryRowLimitUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/QueryRowLimitUtils.java
index 00f8a993ae8..dff0d3efb51 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/QueryRowLimitUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/QueryRowLimitUtils.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.protocol.rest.handler;
 import org.apache.iotdb.db.protocol.rest.model.ExecutionStatus;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 public final class QueryRowLimitUtils {
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/impl/PingApiServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/impl/PingApiServiceImpl.java
index f85de024b47..6fc0d0b701d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/impl/PingApiServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/impl/PingApiServiceImpl.java
@@ -23,8 +23,8 @@ import 
org.apache.iotdb.db.protocol.rest.model.ExecutionStatus;
 import org.apache.iotdb.db.service.ExternalRPCService;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 public class PingApiServiceImpl extends PingApiService {
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/ExceptionHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/ExceptionHandler.java
index af3cea191e2..acc705181be 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/ExceptionHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/ExceptionHandler.java
@@ -34,7 +34,7 @@ import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.Response.Status;
 
 import java.io.IOException;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
index b87ace54df4..3a2050c3c3b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
@@ -36,7 +36,7 @@ import org.apache.tsfile.common.conf.TSFileConfig;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.block.TsBlock;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/GrafanaApiServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/GrafanaApiServiceImpl.java
index 8ba6eb44337..4c0f80f2317 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/GrafanaApiServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/GrafanaApiServiceImpl.java
@@ -49,8 +49,8 @@ import org.apache.iotdb.rpc.TSStatusCode;
 import com.google.common.base.Joiner;
 import org.apache.commons.lang3.StringUtils;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 import java.time.ZoneId;
 import java.util.List;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/RestApiServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/RestApiServiceImpl.java
index b5361cd8be6..fb480611009 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/RestApiServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/impl/RestApiServiceImpl.java
@@ -48,8 +48,8 @@ import org.apache.iotdb.db.utils.CommonUtils;
 import org.apache.iotdb.db.utils.SetThreadName;
 import org.apache.iotdb.rpc.TSStatusCode;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 import java.time.ZoneId;
 import java.util.Optional;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/ExceptionHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/ExceptionHandler.java
index 345706d726d..1b989e46220 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/ExceptionHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/ExceptionHandler.java
@@ -34,7 +34,7 @@ import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.Response.Status;
 
 import java.io.IOException;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandler.java
index af1657a8b13..3927a69585c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandler.java
@@ -33,7 +33,7 @@ import org.apache.iotdb.service.rpc.thrift.TSLastDataQueryReq;
 import org.apache.tsfile.common.constant.TsFileConstant;
 import org.apache.tsfile.read.TimeValuePair;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
index e77265abe1d..5fe14cc5ce4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
@@ -36,7 +36,7 @@ import org.apache.tsfile.common.conf.TSFileConfig;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.block.TsBlock;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -127,6 +127,7 @@ public class QueryDataSetHandler {
       for (int i = 0; i < datasetHeader.getRespColumns().size(); i++) {
         
targetDataSet.addColumnNamesItem(datasetHeader.getRespColumns().get(i));
         targetDataSet.addValuesItem(new ArrayList<>());
+        
targetDataSet.addDataTypesItem(datasetHeader.getRespDataTypes().get(i).name());
         targetDataSetIndexToSourceDataSetIndex[i] = i;
       }
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/GrafanaApiServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/GrafanaApiServiceImpl.java
index b57306fce8c..8fd41ac18aa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/GrafanaApiServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/GrafanaApiServiceImpl.java
@@ -49,8 +49,8 @@ import org.apache.iotdb.rpc.TSStatusCode;
 import com.google.common.base.Joiner;
 import org.apache.commons.lang3.StringUtils;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 import java.time.ZoneId;
 import java.util.List;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/RestApiServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/RestApiServiceImpl.java
index cc81600c8e7..d25547e26f4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/RestApiServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/impl/RestApiServiceImpl.java
@@ -64,8 +64,8 @@ import org.apache.iotdb.service.rpc.thrift.TSLastDataQueryReq;
 
 import org.apache.tsfile.read.TimeValuePair;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.SecurityContext;
 
 import java.time.ZoneId;
 import java.util.HashMap;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/schedule/task/DriverTaskId.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/schedule/task/DriverTaskId.java
index 3dff2044a6e..b8e3b19c73e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/schedule/task/DriverTaskId.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/schedule/task/DriverTaskId.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.db.queryengine.common.PlanFragmentId;
 import org.apache.iotdb.db.queryengine.common.QueryId;
 import org.apache.iotdb.db.queryengine.execution.schedule.queue.ID;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.Objects;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index 86bb3b0ad2d..33173a5e598 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -43,7 +43,7 @@ import 
org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
index 0ace411cd94..e1cbc5ccac1 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
@@ -31,7 +31,7 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor
 import org.apache.tsfile.utils.RamUsageEstimator;
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
index c4c05893300..fc964afc029 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
@@ -32,7 +32,7 @@ import org.apache.iotdb.db.schemaengine.template.Template;
 
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
index 6f7483132a3..e6ad4b02572 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
@@ -32,7 +32,7 @@ import org.apache.iotdb.db.schemaengine.template.Template;
 
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
index 1e52eb9012f..e1e7986b90e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
@@ -31,7 +31,7 @@ import org.apache.iotdb.db.schemaengine.template.Template;
 
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/FakeCRC32Deserializer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/FakeCRC32Deserializer.java
index 9ecca265a9d..6f3dda44334 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/FakeCRC32Deserializer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/FakeCRC32Deserializer.java
@@ -22,8 +22,9 @@ package org.apache.iotdb.db.schemaengine.schemaregion.logfile;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.validation.constraints.NotNull;
+
 import javax.annotation.concurrent.NotThreadSafe;
-import javax.validation.constraints.NotNull;
 
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
index 3cc8e203e9d..c84f5dd220c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
@@ -25,7 +25,7 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.io.BufferedInputStream;
 import java.io.EOFException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/container/MemMNodeContainer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/container/MemMNodeContainer.java
index 44c16126ea8..9ae559c311e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/container/MemMNodeContainer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/container/MemMNodeContainer.java
@@ -22,7 +22,7 @@ package 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.conta
 import org.apache.iotdb.commons.schema.node.utils.IMNodeContainer;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.AbstractMap;
 import java.util.Collection;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/container/CachedMNodeContainer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/container/CachedMNodeContainer.java
index 7fe205993da..7cdd08fccdd 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/container/CachedMNodeContainer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/container/CachedMNodeContainer.java
@@ -23,9 +23,10 @@ import org.apache.iotdb.commons.schema.MergeSortIterator;
 import org.apache.iotdb.commons.schema.node.utils.IMNodeContainer;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.ICachedMNode;
 
+import jakarta.validation.constraints.NotNull;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
 
 import java.util.AbstractMap;
 import java.util.ArrayList;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
index 7ad1de7a5cb..1f7e9d439e8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
@@ -76,7 +76,7 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
 
 import org.apache.tsfile.utils.Pair;
 
-import javax.ws.rs.NotSupportedException;
+import jakarta.ws.rs.NotSupportedException;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/RestService.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/RestService.java
index fa8df0c9a69..a0b091e9350 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/RestService.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/RestService.java
@@ -23,6 +23,8 @@ import org.apache.iotdb.db.conf.rest.IoTDBRestServiceConfig;
 import org.apache.iotdb.db.conf.rest.IoTDBRestServiceDescriptor;
 import org.apache.iotdb.db.protocol.rest.filter.ApiOriginFilter;
 
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
 import org.eclipse.jetty.http.HttpVersion;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
@@ -30,14 +32,12 @@ import org.eclipse.jetty.server.SecureRequestCustomizer;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.glassfish.jersey.servlet.ServletContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 
 import java.util.EnumSet;
 
@@ -97,7 +97,7 @@ public class RestService implements IService {
     holder.setInitOrder(1);
     holder.setInitParameter(
         "jersey.config.server.provider.packages",
-        "io.swagger.jaxrs.listing, io.swagger.sample.resource, 
org.apache.iotdb.db.protocol.rest");
+        "io.swagger.v3.jaxrs2.integration.resources, 
org.apache.iotdb.db.protocol.rest");
     holder.setInitParameter(
         "jersey.config.server.provider.classnames",
         "org.glassfish.jersey.media.multipart.MultiPartFeature");
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionWorker.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionWorker.java
index 03c0636cb38..a6581961929 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionWorker.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionWorker.java
@@ -29,7 +29,7 @@ import 
org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandlerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandlerTest.java
index d0f6709bc60..88ddca1fabd 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandlerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandlerTest.java
@@ -33,7 +33,7 @@ import org.apache.tsfile.read.common.block.TsBlock;
 import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.junit.Test;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayDeque;
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandlerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandlerTest.java
index 786db7492d1..a768ca4939c 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandlerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/protocol/rest/v2/handler/FastLastHandlerTest.java
@@ -30,7 +30,7 @@ import org.apache.tsfile.read.TimeValuePair;
 import org.apache.tsfile.utils.TsPrimitiveType;
 import org.junit.Test;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/test/resources/iotdb-common.properties 
b/iotdb-core/datanode/src/test/resources/iotdb-common.properties
index c713332aa44..6b0b90de64e 100644
--- a/iotdb-core/datanode/src/test/resources/iotdb-common.properties
+++ b/iotdb-core/datanode/src/test/resources/iotdb-common.properties
@@ -27,7 +27,7 @@ enable_rest_service=true
 # the binding port of the REST service
 # rest_service_port=18080
 
-# Whether to display rest service interface information through swagger. eg: 
http://ip:port/swagger.json
+# Whether to display rest service interface information through OpenAPI. eg: 
http://ip:port/openapi.json
 # enable_swagger=false
 
 # The maximum row limit for REST and Grafana query responses.
diff --git a/iotdb-core/datanode/src/test/resources/iotdb-system.properties 
b/iotdb-core/datanode/src/test/resources/iotdb-system.properties
index 00082cba0a1..a7662ee3182 100644
--- a/iotdb-core/datanode/src/test/resources/iotdb-system.properties
+++ b/iotdb-core/datanode/src/test/resources/iotdb-system.properties
@@ -45,7 +45,7 @@ enable_rest_service=true
 # the binding port of the REST service
 # rest_service_port=18080
 
-# Whether to display rest service interface information through swagger. eg: 
http://ip:port/swagger.json
+# Whether to display rest service interface information through OpenAPI. eg: 
http://ip:port/openapi.json
 # enable_swagger=false
 
 # The maximum row limit for REST and Grafana query responses.
diff --git 
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
 
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index cff101654cf..b7b01398e38 100644
--- 
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++ 
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -558,7 +558,7 @@ enable_rest_service=false
 # Datatype: int
 rest_service_port=18080
 
-# Whether to display rest service interface information through swagger. eg: 
http://ip:port/swagger.json
+# Whether to display rest service interface information through OpenAPI. eg: 
http://ip:port/openapi.json
 # effectiveMode: restart
 # Datatype: boolean
 enable_swagger=false
diff --git 
a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat 
b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
index 19c40f3974e..96f66df0483 100644
--- a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
+++ b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
@@ -164,7 +164,7 @@ exit /b
 
 :local_jdk_check
 echo Check: Installation Environment(JDK)
-echo Requirement: JDK Version ^>=1.8
+echo Requirement: JDK Version ^>=17
 echo Result: JDK Version %JAVA_VERSION%
 exit /b
 
@@ -635,4 +635,4 @@ for /f "delims=" %%i in ('powershell -NoProfile -Command 
"$v=$host.Version.Major
 
 echo %command_line% | findstr /i /c:"iotdb" >nul && set is_iotdb=1
 endlocal & set "is_iotdb=%is_iotdb%"
-exit /b
\ No newline at end of file
+exit /b
diff --git 
a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.sh 
b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.sh
index 9cb08bb5e33..e6c703b237c 100644
--- a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.sh
+++ b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.sh
@@ -316,7 +316,7 @@ local_dirs_check() {
 
 local_jdk_check() {
   echo "Check: Installation Environment(JDK)"
-  echo "Requirement: JDK Version >=1.8"
+  echo "Requirement: JDK Version >=17"
 
   if [ -z $JAVA ] ; then
     echo "Result: Unable to find java executable. Check JAVA_HOME and PATH 
environment variables. "
diff --git a/iotdb-protocol/openapi/pom.xml b/iotdb-protocol/openapi/pom.xml
index b58e2081a66..9af67174c7f 100644
--- a/iotdb-protocol/openapi/pom.xml
+++ b/iotdb-protocol/openapi/pom.xml
@@ -30,20 +30,20 @@
     <name>IoTDB: Protocol: OpenAPI</name>
     <dependencies>
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-annotations-jakarta</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-models-jakarta</artifactId>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-annotations</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.jackson.jaxrs</groupId>
-            <artifactId>jackson-jaxrs-json-provider</artifactId>
+            <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
+            <artifactId>jackson-jakarta-rs-json-provider</artifactId>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
@@ -62,8 +62,12 @@
             <artifactId>jakarta.ws.rs-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-jaxrs</artifactId>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-jaxrs2-jakarta</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-integration-jakarta</artifactId>
         </dependency>
         <!-- Just needed for unused import code -->
         <dependency>
@@ -105,6 +109,8 @@
                                 <artifactId>iotdb-rest-service</artifactId>
                                 
<artifactVersion>${project.version}</artifactVersion>
                                 <dateLibrary>java8</dateLibrary>
+                                <library>jersey3</library>
+                                <useJakartaEe>true</useJakartaEe>
                                 <useGzipFeature>true</useGzipFeature>
                             </configOptions>
                         </configuration>
@@ -132,6 +138,8 @@
                                 <artifactId>iotdb-rest-service</artifactId>
                                 
<artifactVersion>${project.version}</artifactVersion>
                                 <dateLibrary>java8</dateLibrary>
+                                <library>jersey3</library>
+                                <useJakartaEe>true</useJakartaEe>
                                 <useGzipFeature>true</useGzipFeature>
                             </configOptions>
                         </configuration>
@@ -159,6 +167,8 @@
                                 <artifactId>iotdb-rest-service</artifactId>
                                 
<artifactVersion>${project.version}</artifactVersion>
                                 <dateLibrary>java8</dateLibrary>
+                                <library>jersey3</library>
+                                <useJakartaEe>true</useJakartaEe>
                                 <useGzipFeature>true</useGzipFeature>
                             </configOptions>
                         </configuration>
diff --git a/library-udf/pom.xml b/library-udf/pom.xml
index 09a0a4e8285..a02b63b03a9 100644
--- a/library-udf/pom.xml
+++ b/library-udf/pom.xml
@@ -29,8 +29,8 @@
     <artifactId>library-udf</artifactId>
     <name>IoTDB: UDF</name>
     <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
     </properties>
     <dependencies>
         <dependency>
diff --git a/pom.xml b/pom.xml
index c073263bdba..082fa90a23e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,19 +49,16 @@
         <module>library-udf</module>
     </modules>
     <properties>
-        <!-- This was the last version to support Java 8 -->
         <airlift-units.version>1.7</airlift-units.version>
         <airlift.version>206</airlift.version>
         <!--airlift-stats.version>235</airlift-stats.version-->
         <airline.version>0.9</airline.version>
-        <!-- This was the last version to support Java 8 -->
         <antlr4.version>4.9.3</antlr4.version>
         <!-- By default, the argLine is empty-->
         <argLine/>
         <awaitility.version>4.2.0</awaitility.version>
         <boost.include.dir/>
         <bouncycastle.version>1.84</bouncycastle.version>
-        <!-- This was the last version to support Java 8 -->
         <caffeine.version>2.9.3</caffeine.version>
         <cglib.version>3.3.0</cglib.version>
         <checker-qual.version>3.38.0</checker-qual.version>
@@ -83,11 +80,9 @@
         <felix.version>5.1.9</felix.version>
         <findbugs.jsr305.version>3.0.2</findbugs.jsr305.version>
         <fusesource-mqtt-client.version>1.16</fusesource-mqtt-client.version>
-        <!-- JDK1.8 only support google java format 1.7-->
         <google.java.format.version>1.22.0</google.java.format.version>
         <gson.version>2.13.1</gson.version>
         <guava.version>32.1.2-jre</guava.version>
-        <!-- This was the last version to support Java 8 -->
         <h2.version>2.2.224</h2.version>
         <httpclient.version>4.5.14</httpclient.version>
         <httpcore.version>4.4.16</httpcore.version>
@@ -97,38 +92,31 @@
     -->
         <iotdb-tools-thrift.version>0.23.0.0</iotdb-tools-thrift.version>
         <jackson.version>2.16.2</jackson.version>
-        <!-- This is the last version to support the javax namespace -->
-        <jakarta.servlet-api.version>4.0.4</jakarta.servlet-api.version>
-        <!-- This is the last version to support the javax namespace -->
-        <jakarta.validation-api.version>2.0.2</jakarta.validation-api.version>
-        <!-- This is the last version to support the javax namespace -->
-        <jakarta.ws.rs-api.version>2.1.6</jakarta.ws.rs-api.version>
+        <jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
+        <jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
+        <jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
+        <jakarta.ws.rs-api.version>3.1.0</jakarta.ws.rs-api.version>
         <java-websocket.version>1.5.4</java-websocket.version>
         <jcip-annotations.version>1.0-1</jcip-annotations.version>
-        <!-- This is the last version to support the javax namespace -->
-        <jersey.version>2.40</jersey.version>
-        <!-- This was the last version to support Java 8 -->
-        <jetty.version>9.4.58.v20250814</jetty.version>
+        <jersey.version>3.1.11</jersey.version>
+        <jetty.version>12.0.36</jetty.version>
         <jline.version>3.26.2</jline.version>
         <jna.version>5.14.0</jna.version>
         <jtransforms.version>3.1</jtransforms.version>
         <junit.version>4.13.2</junit.version>
-        <!-- This was the last version to support Java 8 -->
-        <logback.version>1.3.16</logback.version>
+        <logback.version>1.5.34</logback.version>
         <lz4-java.version>1.10.1</lz4-java.version>
         <maven.assembly.version>3.6.0</maven.assembly.version>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
         <micrometer.version>1.11.4</micrometer.version>
         <milo.version>0.6.14</milo.version>
         <!-- It seems that powermock is having issues with the newest mockito 
versions -->
         <mockito.version>2.23.4</mockito.version>
-        <!-- This was the last version to support Java 8 -->
         <!--mockito.version>4.11.0</mockito.version-->
         <moquette.version>0.18.0</moquette.version>
         <netty.version>4.1.134.Final</netty.version>
-        <!-- This was the last version to support Java 8 -->
-        <openapi.generator.version>6.6.0</openapi.generator.version>
+        <openapi.generator.version>7.10.0</openapi.generator.version>
         <osgi.version>7.0.0</osgi.version>
         <pax-jdbc-common.version>1.5.6</pax-jdbc-common.version>
         <powermock.version>2.0.9</powermock.version>
@@ -156,10 +144,9 @@
         <sonar.organization>apache</sonar.organization>
         <!-- Override this to `true`, if you want to disable spotless -->
         <spotless.skip>false</spotless.skip>
-        <spotless.version>2.43.0</spotless.version>
+        <spotless.version>2.44.5</spotless.version>
         <clang.format.version>17.0.6</clang.format.version>
-        <!-- This was the last version to support Java 8 -->
-        <swagger.version>1.6.14</swagger.version>
+        <swagger.version>2.2.50</swagger.version>
         <thrift.exec-cmd.executable>chmod</thrift.exec-cmd.executable>
         <thrift.exec.absolute.path/>
         <thrift.version>0.23.0</thrift.version>
@@ -311,6 +298,11 @@
                 <artifactId>jsr305</artifactId>
                 <version>${findbugs.jsr305.version}</version>
             </dependency>
+            <dependency>
+                <groupId>jakarta.annotation</groupId>
+                <artifactId>jakarta.annotation-api</artifactId>
+                <version>${jakarta.annotation-api.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.google.code.gson</groupId>
                 <artifactId>gson</artifactId>
@@ -512,29 +504,24 @@
                 <version>${xz.version}</version>
             </dependency>
             <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-annotations</artifactId>
+                <groupId>io.swagger.core.v3</groupId>
+                <artifactId>swagger-annotations-jakarta</artifactId>
                 <version>${swagger.version}</version>
             </dependency>
             <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-models</artifactId>
+                <groupId>io.swagger.core.v3</groupId>
+                <artifactId>swagger-models-jakarta</artifactId>
                 <version>${swagger.version}</version>
             </dependency>
             <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-jaxrs</artifactId>
+                <groupId>io.swagger.core.v3</groupId>
+                <artifactId>swagger-jaxrs2-jakarta</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger.core.v3</groupId>
+                <artifactId>swagger-integration-jakarta</artifactId>
                 <version>${swagger.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>javax.validation</groupId>
-                        <artifactId>validation-api</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>javax.ws.rs</groupId>
-                        <artifactId>jsr311-api</artifactId>
-                    </exclusion>
-                </exclusions>
             </dependency>
             <dependency>
                 <groupId>org.fusesource.mqtt-client</groupId>
@@ -602,8 +589,8 @@
                 <version>${jetty.version}</version>
                 <exclusions>
                     <exclusion>
-                        <groupId>javax.servlet</groupId>
-                        <artifactId>javax.servlet-api</artifactId>
+                        <groupId>jakarta.servlet</groupId>
+                        <artifactId>jakarta.servlet-api</artifactId>
                     </exclusion>
                 </exclusions>
             </dependency>
@@ -618,8 +605,8 @@
                 <version>${jersey.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.eclipse.jetty</groupId>
-                <artifactId>jetty-servlet</artifactId>
+                <groupId>org.eclipse.jetty.ee10</groupId>
+                <artifactId>jetty-ee10-servlet</artifactId>
                 <version>${jetty.version}</version>
             </dependency>
             <dependency>
@@ -688,8 +675,8 @@
                 <version>${jackson.version}</version>
             </dependency>
             <dependency>
-                <groupId>com.fasterxml.jackson.jaxrs</groupId>
-                <artifactId>jackson-jaxrs-json-provider</artifactId>
+                <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
+                <artifactId>jackson-jakarta-rs-json-provider</artifactId>
                 <version>${jackson.version}</version>
             </dependency>
             <dependency>
@@ -723,10 +710,11 @@
                 <version>2.18.0</version>
             </dependency>
             <!-- Conflict:
-        jackson-json-provider (pulls in 2.15.2),
+        jackson-jakarta-rs-json-provider (pulls in 2.15.2),
         jackson-databind (pulls in 2.15.2),
         jackson-databind-jsd310 (pulls in 2.15.2),
-        swagger-jaxrs (pulls in 2.14.2)
+        swagger-jaxrs2-jakarta (pulls in 2.15.2),
+        swagger-integration-jakarta (pulls in 2.15.2)
       -->
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
@@ -859,7 +847,7 @@
                                 <style>GOOGLE</style>
                             </googleJavaFormat>
                             <importOrder>
-                                <order>org.apache.iotdb,,javax,java,\#</order>
+                                
<order>org.apache.iotdb,,jakarta,javax,java,\#</order>
                             </importOrder>
                             <removeUnusedImports/>
                         </java>
@@ -1066,7 +1054,7 @@
             </plugin>
             <!--
         Strange things usually happen if you run with a too low Java version.
-        This plugin not only checks the minimum java version of 1.8, but also
+        This plugin not only checks the minimum java version of 17, but also
         checks all dependencies (and transitive dependencies) for reported 
CVEs.
       -->
             <plugin>
@@ -1138,7 +1126,7 @@
                             <fail>true</fail>
                             <rules>
                                 <requireJavaVersion>
-                                    <version>1.8.0</version>
+                                    <version>[17,)</version>
                                 </requireJavaVersion>
                                 <banVulnerable 
implementation="org.sonatype.ossindex.maven.enforcer.BanVulnerableDependencies">
                                     <excludeCoordinates>
@@ -1168,15 +1156,6 @@
                                             <version>2.4.8</version>
                                         </exclude>
                                         <!--
-                      We can't update to a fixed version as we're stuck with 
this version
-                      as it was the last to support the javax namespace.
-                    -->
-                                        <exclude>
-                                            
<groupId>org.glassfish.jersey.core</groupId>
-                                            
<artifactId>jersey-common</artifactId>
-                                            <version>2.4.8</version>
-                                        </exclude>
-                                        <!--
                       TODO: For this CVE no fix exists yet, however we should 
keep an eye on this:
                       
https://docs.google.com/presentation/d/1W5KU7ffh4dheR8iD54ulABImi6byAhSI-OhEKw2adRo/edit#slide=id.gaf11915f86_0_0
                     -->
@@ -1525,14 +1504,14 @@
             </properties>
         </profile>
         <profile>
-            <id>.java-9-and-above</id>
+            <id>.java-17-and-above</id>
             <activation>
-                <jdk>[9,)</jdk>
+                <jdk>[17,)</jdk>
             </activation>
             <properties>
-                <maven.compiler.release>8</maven.compiler.release>
+                <maven.compiler.release>17</maven.compiler.release>
                 <!--
-                    Add argLine for Java 9 and above, due to
+                    Add argLine for Java 17 and above, due to
                     [JEP 260: Encapsulate Most Internal APIs],
                     [JEP 396: Strongly Encapsulate JDK Internals by Default],
                     [JEP 403: Strongly Encapsulate JDK Internals]
@@ -1552,14 +1531,14 @@
                       ]]></argLine>
             </properties>
         </profile>
-        <!-- Current version of spotless cannot support JDK11 below -->
+        <!-- Current version of spotless cannot support JDK17 below -->
         <profile>
-            <id>.java-11-below</id>
+            <id>.java-17-below</id>
             <activation>
-                <jdk>(,11]</jdk>
+                <jdk>(,17)</jdk>
             </activation>
             <properties>
-                <!-- This was the last version to support Java 8, Just for run 
-->
+                <!-- Keep old Spotless disabled when running below the minimum 
supported JDK. -->
                 <spotless.version>2.27.1</spotless.version>
                 <!-- To avoid format conflicts -->
                 <spotless.skip>true</spotless.skip>
@@ -1639,7 +1618,7 @@
                                 </goals>
                                 <phase>generate-sources</phase>
                                 <configuration>
-                                    <generator>java</generator>
+                                    
<generator>java:generated_annotations=suppress</generator>
                                 </configuration>
                             </execution>
                             <execution>

Reply via email to