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

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new cafd3228ab Require JDK 21 as the minimum supported Java version
cafd3228ab is described below

commit cafd3228abba5375e3e96d9631b88d120177ad1e
Author: James Netherton <[email protected]>
AuthorDate: Thu Oct 1 11:31:51 2026 +0100

    Require JDK 21 as the minimum supported Java version
    
    * Require JDK 21 as the minimum supported Java version
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    
    * Update Java API documentation links to JDK 21
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 5.5 <[email protected]>
---
 .github/workflows/camel-master-cron.yaml           | 40 +++++++------------
 .github/workflows/check-dependency-convergence.yml |  4 +-
 .github/workflows/ci-build.yaml                    | 46 +++++++---------------
 .github/workflows/generate-sbom-main.yml           |  2 +-
 .github/workflows/jdk21-build.yaml                 | 33 ----------------
 .github/workflows/pr-validate.yml                  |  6 +--
 .github/workflows/quarkus-lts-ci-build.yaml        | 24 +++++------
 .github/workflows/quarkus-master-cron.yaml         | 28 ++++++-------
 .github/workflows/semeru17-build.yaml              | 34 ----------------
 .sdkmanrc                                          |  4 +-
 AGENTS.md                                          |  2 +-
 Jenkinsfile                                        |  2 +-
 Jenkinsfile.sonarcloud                             |  2 +-
 .../ROOT/pages/contributor-guide/index.adoc        |  2 +-
 .../ROOT/pages/reference/extensions/core.adoc      |  2 +-
 .../ROOT/pages/reference/extensions/ldap.adoc      |  2 +-
 .../modules/ROOT/pages/user-guide/first-steps.adoc |  2 +-
 .../quarkus/core/deployment/util/CamelSupport.java |  2 +-
 extensions/ldap/runtime/src/main/doc/usage.adoc    |  2 +-
 .../quarkus/component/seda/it/SedaRoutes.java      |  9 +----
 .../camel/quarkus/component/seda/it/SedaTest.java  |  2 +-
 .../component/seda/it/SedaVirtualThreadsIT.java    | 10 +----
 .../component/seda/it/SedaVirtualThreadsTest.java  |  7 +---
 integration-tests/infinispan/pom.xml               | 16 --------
 pom.xml                                            |  6 +--
 .../quarkus/maven/UpdateBuildItemsDocMojo.java     |  2 +-
 .../doc-templates/extension-doc-page.adoc          |  2 +-
 .../cq-perf-regression-sample-base/pom.xml         |  4 +-
 28 files changed, 82 insertions(+), 215 deletions(-)

diff --git a/.github/workflows/camel-master-cron.yaml 
b/.github/workflows/camel-master-cron.yaml
index 5e7d00ab44..9bc3e9790e 100644
--- a/.github/workflows/camel-master-cron.yaml
+++ b/.github/workflows/camel-master-cron.yaml
@@ -50,11 +50,11 @@ jobs:
       - name: Check free space on disk
         run: |
           df -h /
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Set Workflow Build ID
         run: |
           [ ! -d ~/build-data ] && mkdir -p ~/build-data
@@ -80,22 +80,10 @@ jobs:
       - name: Setup Maven Cache
         id: maven-cache
         uses: ./.github/actions/setup-maven-cache
-      - name: Set up JDK 25 for the Camel build
-        # Camel compiles its Java 21/25 multi-release sources (e.g. the 
virtual thread aware CamelThreadFactory)
-        # only when built on JDK 21+, so build it like the Camel releases are 
built (JDK 25)
-        uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
-        with:
-          distribution: 'temurin'
-          java-version: '25'
       - name: Build Camel
         run: |
           cd ../camel
           ./mvnw ${CQ_MAVEN_ARGS} clean install -Dquickly -T1C
-      - name: Restore JDK 17 after the Camel build
-        uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
-        with:
-          distribution: 'temurin'
-          java-version: '17'
       - name: Update extension metadata
         run: |
           ./mvnw -N cq:update-quarkus-metadata ${CQ_MAVEN_ARGS}
@@ -184,11 +172,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -265,11 +253,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -359,11 +347,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -410,11 +398,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd integration-tests && mvn clean verify
         shell: bash
         run: |
@@ -455,11 +443,11 @@ jobs:
         with:
           cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
           download-maven-repo: 'true'
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -526,11 +514,11 @@ jobs:
     needs: native-tests
     runs-on: ubuntu-latest
     steps:
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Checkout
         uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
         with:
diff --git a/.github/workflows/check-dependency-convergence.yml 
b/.github/workflows/check-dependency-convergence.yml
index ca6e1dfa62..a316613ce8 100644
--- a/.github/workflows/check-dependency-convergence.yml
+++ b/.github/workflows/check-dependency-convergence.yml
@@ -40,11 +40,11 @@ jobs:
     permissions:
       issues: write
     steps:
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Checkout
         uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
       - name: Setup Maven Cache
diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml
index 30b623f4a5..1d8ae20539 100644
--- a/.github/workflows/ci-build.yaml
+++ b/.github/workflows/ci-build.yaml
@@ -44,9 +44,7 @@ on:
       - '.github/workflows/check-dependency-convergence.yml'
       - '.github/workflows/alternate-jdk-build.yaml'
       - '.github/workflows/generate-sbom-main.yml'
-      - '.github/workflows/jdk21-build.yaml'
       - '.github/workflows/jdk25-build.yaml'
-      - '.github/workflows/semeru17-build.yaml'
       - '.github/workflows/semeru21-build.yaml'
       - '.github/workflows/label-issue.yaml'
       - '.github/workflows/pr-validate.yml'
@@ -81,10 +79,8 @@ on:
       - '.github/workflows/camel-master-cron.yaml'
       - '.github/workflows/check-dependency-convergence.yml'
       - '.github/workflows/generate-sbom-main.yml'
-      - '.github/workflows/jdk21-build.yaml'
       - '.github/workflows/jdk25-build.yaml'
       - '.github/workflows/label-issue.yaml'
-      - '.github/workflows/semeru17-build.yaml'
       - '.github/workflows/semeru21-build.yaml'
       - '.github/workflows/pr-validate.yml'
       - '.github/workflows/quarkus-lts-ci-build.yaml'
@@ -135,12 +131,12 @@ jobs:
           else
             echo "run-checks=false" >> $GITHUB_OUTPUT
           fi
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         if: steps.init.outputs.run-checks == 'true'
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Checkout
         uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
         if: steps.init.outputs.run-checks == 'true'
@@ -219,11 +215,11 @@ jobs:
       - name: Check free space on disk
         run: |
           df -h /
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Clone Camel
         if: github.ref == 'refs/heads/camel-main' || github.base_ref == 
'camel-main'
         run: |
@@ -247,25 +243,11 @@ jobs:
       - name: Setup Maven Cache
         id: maven-cache
         uses: ./.github/actions/setup-maven-cache
-      - name: Set up JDK 25 for the Camel build
-        # Camel compiles its Java 21/25 multi-release sources (e.g. the 
virtual thread aware CamelThreadFactory)
-        # only when built on JDK 21+, so build it like the Camel releases are 
built (JDK 25)
-        if: github.ref == 'refs/heads/camel-main' || github.base_ref == 
'camel-main'
-        uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
-        with:
-          distribution: 'temurin'
-          java-version: '25'
       - name: Build Camel
         if: github.ref == 'refs/heads/camel-main' || github.base_ref == 
'camel-main'
         run: |
           cd ../camel
           ./mvnw ${CQ_MAVEN_ARGS} clean install -Dquickly -T1C
-      - name: Restore JDK 17 after the Camel build
-        if: github.ref == 'refs/heads/camel-main' || github.base_ref == 
'camel-main'
-        uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
-        with:
-          distribution: 'temurin'
-          java-version: '17'
       - name: Detect PR Incremental Build
         id: detect-incremental
         if: github.event_name == 'pull_request' && 
!contains(github.event.pull_request.labels.*.name, 'ci/disable-incremental')
@@ -483,11 +465,11 @@ jobs:
           fetch-depth: 0
       - name: Reclaim Disk Space
         run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -577,11 +559,11 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -679,11 +661,11 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -731,11 +713,11 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -784,11 +766,11 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
diff --git a/.github/workflows/generate-sbom-main.yml 
b/.github/workflows/generate-sbom-main.yml
index 947dc33dec..f63bb60931 100644
--- a/.github/workflows/generate-sbom-main.yml
+++ b/.github/workflows/generate-sbom-main.yml
@@ -39,7 +39,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        java: [ '17' ]
+        java: [ '21' ]
     steps:
       - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
         with:
diff --git a/.github/workflows/jdk21-build.yaml 
b/.github/workflows/jdk21-build.yaml
deleted file mode 100644
index 15e8a4999c..0000000000
--- a/.github/workflows/jdk21-build.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: JDK 21 Build
-
-on:
-  schedule:
-    # Run every Sunday at 2 PM
-    - cron:  '0 14 * * SUN'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-jobs:
-  jdk21-build:
-    uses: ./.github/workflows/alternate-jdk-build.yaml
-    with:
-      jdk-version: '21'
diff --git a/.github/workflows/pr-validate.yml 
b/.github/workflows/pr-validate.yml
index bacd92fc0a..1a0f2f3450 100644
--- a/.github/workflows/pr-validate.yml
+++ b/.github/workflows/pr-validate.yml
@@ -44,9 +44,7 @@ on:
       - '.github/workflows/check-dependency-convergence.yml'
       - '.github/workflows/alternate-jdk-build.yaml'
       - '.github/workflows/generate-sbom-main.yml'
-      - '.github/workflows/jdk21-build.yaml'
       - '.github/workflows/jdk25-build.yaml'
-      - '.github/workflows/semeru17-build.yaml'
       - '.github/workflows/semeru21-build.yaml'
       - '.github/workflows/label-issue.yaml'
       - '.github/workflows/pr-validate.yml'
@@ -83,11 +81,11 @@ jobs:
       run: |
         echo "BRANCH_OPTIONS=-Poss-snapshots" >> $GITHUB_ENV
     - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-    - name: Set up JDK 17
+    - name: Set up JDK 21
       uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
       with:
         distribution: 'temurin'
-        java-version: '17'
+        java-version: '21'
     - name: Setup Maven Cache
       id: maven-cache
       uses: ./.github/actions/setup-maven-cache
diff --git a/.github/workflows/quarkus-lts-ci-build.yaml 
b/.github/workflows/quarkus-lts-ci-build.yaml
index 1fb214ee55..e86fb35eea 100644
--- a/.github/workflows/quarkus-lts-ci-build.yaml
+++ b/.github/workflows/quarkus-lts-ci-build.yaml
@@ -59,11 +59,11 @@ jobs:
       - name: Check free space on disk
         run: |
           df -h /
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Build Quarkus
         run: |
           git clone --depth 1 --branch ${{github.event.inputs.branch}} 
https://github.com/quarkusio/quarkus.git \
@@ -148,11 +148,11 @@ jobs:
           sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
       - name: Reclaim Disk Space
         run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -219,11 +219,11 @@ jobs:
       - name: Set Quarkus SNAPSHOT Version
         run: |
           sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -303,11 +303,11 @@ jobs:
       - name: Set Quarkus SNAPSHOT Version
         run: |
           sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -345,11 +345,11 @@ jobs:
         shell: bash
         run: |
           sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
@@ -382,11 +382,11 @@ jobs:
         with:
           ref: ${{ github.event.inputs.branch }}.x
           fetch-depth: 0
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Setup Maven Cache
         uses: ./.github/actions/setup-maven-cache
         with:
diff --git a/.github/workflows/quarkus-master-cron.yaml 
b/.github/workflows/quarkus-master-cron.yaml
index 1e4b8aa293..aee22d2526 100644
--- a/.github/workflows/quarkus-master-cron.yaml
+++ b/.github/workflows/quarkus-master-cron.yaml
@@ -50,11 +50,11 @@ jobs:
       - name: Check free space on disk
         run: |
           df -h /
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Set Workflow Build ID
         run: |
           [ ! -d ~/build-data ] && mkdir -p ~/build-data
@@ -174,11 +174,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -255,11 +255,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -349,11 +349,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -400,11 +400,11 @@ jobs:
           git config --local user.name "github-actions[bot]"
           git fetch origin main
           git rebase $(cat ~/build-data/main-sha.txt)
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: cd integration-tests && mvn clean verify
         shell: bash
         run: |
@@ -445,11 +445,11 @@ jobs:
         with:
           cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
           download-maven-repo: 'true'
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -516,11 +516,11 @@ jobs:
     needs: native-tests
     runs-on: ubuntu-latest
     steps:
-      - name: Set up JDK 17
+      - name: Set up JDK 21
         uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # 
v6.0.1
         with:
           distribution: 'temurin'
-          java-version: '17'
+          java-version: '21'
       - name: Checkout
         uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
         with:
diff --git a/.github/workflows/semeru17-build.yaml 
b/.github/workflows/semeru17-build.yaml
deleted file mode 100644
index a1f4fb6cbd..0000000000
--- a/.github/workflows/semeru17-build.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: Semeru JDK 17 Build
-
-on:
-  schedule:
-    # Run every Saturday at 8 AM
-    - cron:  '0 8 * * SAT'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-jobs:
-  semeru17-build:
-    uses: ./.github/workflows/alternate-jdk-build.yaml
-    with:
-      jdk-version: '17'
-      jdk-distribution: 'semeru'
diff --git a/.sdkmanrc b/.sdkmanrc
index 04a2ccdc3d..01cc37c7dd 100644
--- a/.sdkmanrc
+++ b/.sdkmanrc
@@ -1,5 +1,5 @@
 # Enable auto-env through the sdkman_auto_env config
 # Add key=value pairs of SDKs to use below
-java=17.0.17-tem
-maven=3.9.15
+java=21.0.12+1.1-tem
+maven=3.9.16
 mvnd=1.0.2
diff --git a/AGENTS.md b/AGENTS.md
index a709c84673..6cbbec8c7e 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -28,7 +28,7 @@ Apache Camel Quarkus provides Quarkus extensions for Apache 
Camel components, en
 - Do NOT introduce Spring Boot or Spring unless explicitly required
 
 ## Technology Stack
-- Java 17+
+- Java 21+
 - GraalVM 25+ / Mandrel 25+
 - Maven 3.9.11+ (For convenience the maven wrapper is provided in the root 
directory and can be invoked as `./mvnw` or `./mvnw.cmd`)
 - Apache Camel 4.x, Quarkus 3.x. Check `pom.xml` for the current Camel, and 
Quarkus versions used.
diff --git a/Jenkinsfile b/Jenkinsfile
index 97d03eda19..d3af3662f3 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_21_latest'
 def MAVEN_PARAMS = '-B -e -ntp -T1C'
 
 pipeline {
diff --git a/Jenkinsfile.sonarcloud b/Jenkinsfile.sonarcloud
index 62d57a97bb..e226c2d41a 100644
--- a/Jenkinsfile.sonarcloud
+++ b/Jenkinsfile.sonarcloud
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_21_latest'
 def MAVEN_PARAMS = '-B -e -ntp'
 
 pipeline {
diff --git a/docs/modules/ROOT/pages/contributor-guide/index.adoc 
b/docs/modules/ROOT/pages/contributor-guide/index.adoc
index 54ad7cfbca..e5639236b6 100644
--- a/docs/modules/ROOT/pages/contributor-guide/index.adoc
+++ b/docs/modules/ROOT/pages/contributor-guide/index.adoc
@@ -11,7 +11,7 @@
   documentation.
 * If you are on Linux, `docker` or `podman` is sufficient for the native mode 
too. Use `-Pnative,docker` instead of `-Pnative`
   if you choose this option.
-* Java 17 or higher (Java 11 is only for Camel Quarkus < 3.0.0).
+* Java 21 or higher.
 * Maven {min-maven-version}+ (unless you use the Maven Wrapper, a.k.a. `mvnw` 
available in the source tree).
 
 [[how-to-build]]
diff --git a/docs/modules/ROOT/pages/reference/extensions/core.adoc 
b/docs/modules/ROOT/pages/reference/extensions/core.adoc
index 37d54bcc76..2abeeab68e 100644
--- a/docs/modules/ROOT/pages/reference/extensions/core.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/core.adoc
@@ -519,7 +519,7 @@ that enabling statistics incurs a minor performance impact 
under very heavy load
 .About the Duration format
 ====
 To write duration values, use the standard `java.time.Duration` format.
-See the 
link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence)[Duration#parse()
 Java API documentation] for more information.
+See the 
link:https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence)[Duration#parse()
 Java API documentation] for more information.
 
 You can also use a simplified format, starting with a number:
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/ldap.adoc 
b/docs/modules/ROOT/pages/reference/extensions/ldap.adoc
index 159cdc58a7..60c30980d4 100644
--- a/docs/modules/ROOT/pages/reference/extensions/ldap.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/ldap.adoc
@@ -57,7 +57,7 @@ Configuration property should follow the pattern:
 quarkus.camel.ldap.dir-contexts.<dirContextName>.<property>
 ----
 
-For more details, refer to the dirContext 
https://docs.oracle.com/en/java/javase/17/docs/api/java.naming/javax/naming/directory/DirContext.html[Javadoc].
+For more details, refer to the dirContext 
https://docs.oracle.com/en/java/javase/21/docs/api/java.naming/javax/naming/directory/DirContext.html[Javadoc].
 The following options are available:
 
 * initial-context-factory
diff --git a/docs/modules/ROOT/pages/user-guide/first-steps.adoc 
b/docs/modules/ROOT/pages/user-guide/first-steps.adoc
index 58c232626a..8bf332dee7 100644
--- a/docs/modules/ROOT/pages/user-guide/first-steps.adoc
+++ b/docs/modules/ROOT/pages/user-guide/first-steps.adoc
@@ -7,7 +7,7 @@ This guide outlines various ways to create a new Camel Quarkus 
application.
 
 * A `git` client
 * An IDE
-* JDK 17+ with `JAVA_HOME` configured appropriately
+* JDK 21+ with `JAVA_HOME` configured appropriately
 * Apache Maven {min-maven-version}+ ({target-maven-version} is recommended)
 * GraalVM with the `native-image` command installed and the `GRAALVM_HOME` 
environment variable set. See
   https://quarkus.io/guides/building-native-image-guide[Building a native 
executable] section of the Quarkus
diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelSupport.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelSupport.java
index b103c8751f..d3138da1de 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelSupport.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelSupport.java
@@ -44,7 +44,7 @@ public final class CamelSupport {
     public static final String CAMEL_SERVICE_BASE_PATH = 
"META-INF/services/org/apache/camel";
     public static final String CAMEL_ROOT_PACKAGE_DIRECTORY = 
"org/apache/camel";
     public static final String CLASSPATH_PREFIX = "classpath:";
-    public static final String COMPILATION_JVM_TARGET = "17";
+    public static final String COMPILATION_JVM_TARGET = "21";
 
     private CamelSupport() {
     }
diff --git a/extensions/ldap/runtime/src/main/doc/usage.adoc 
b/extensions/ldap/runtime/src/main/doc/usage.adoc
index 4a94ae4929..bfb6ac5adc 100644
--- a/extensions/ldap/runtime/src/main/doc/usage.adoc
+++ b/extensions/ldap/runtime/src/main/doc/usage.adoc
@@ -8,7 +8,7 @@ Configuration property should follow the pattern:
 quarkus.camel.ldap.dir-contexts.<dirContextName>.<property>
 ----
 
-For more details, refer to the dirContext 
https://docs.oracle.com/en/java/javase/17/docs/api/java.naming/javax/naming/directory/DirContext.html[Javadoc].
+For more details, refer to the dirContext 
https://docs.oracle.com/en/java/javase/21/docs/api/java.naming/javax/naming/directory/DirContext.html[Javadoc].
 The following options are available:
 
 * initial-context-factory
diff --git 
a/integration-test-groups/foundation/seda/src/main/java/org/apache/camel/quarkus/component/seda/it/SedaRoutes.java
 
b/integration-test-groups/foundation/seda/src/main/java/org/apache/camel/quarkus/component/seda/it/SedaRoutes.java
index b8f14cb691..5c28ea6451 100644
--- 
a/integration-test-groups/foundation/seda/src/main/java/org/apache/camel/quarkus/component/seda/it/SedaRoutes.java
+++ 
b/integration-test-groups/foundation/seda/src/main/java/org/apache/camel/quarkus/component/seda/it/SedaRoutes.java
@@ -16,20 +16,13 @@
  */
 package org.apache.camel.quarkus.component.seda.it;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 
 public class SedaRoutes extends RouteBuilder {
     @Override
     public void configure() throws Exception {
         from("seda:virtualThreaded")
-                .process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        // Avoid Thread.isVirtual to maintain JDK 17 
compatibility
-                        
exchange.getMessage().setBody(Thread.currentThread().getClass().getName());
-                    }
-                })
+                .process(exchange -> 
exchange.getMessage().setBody(Thread.currentThread().isVirtual()))
                 .to("seda:virtualThreadedResults");
     }
 }
diff --git 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaTest.java
 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaTest.java
index 5e1df50b97..1a4a1473a8 100644
--- 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaTest.java
+++ 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaTest.java
@@ -46,7 +46,7 @@ class SedaTest {
 
         RestAssured.get("/seda/virtualThreadedResults")
                 .then()
-                .body(is(Thread.class.getName()))
+                .body(is("false"))
                 .statusCode(200);
     }
 }
diff --git 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsIT.java
 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsIT.java
index 7920405eab..d4b4d5e58c 100644
--- 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsIT.java
+++ 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsIT.java
@@ -17,16 +17,8 @@
 package org.apache.camel.quarkus.component.seda.it;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
-import org.junit.jupiter.api.Test;
 
 @QuarkusIntegrationTest
 class SedaVirtualThreadsIT extends SedaVirtualThreadsTest {
-    /**
-     * Overridden to remove JDK version restrictions as the JDK used in native 
mode should be >= 25
-     */
-    @Override
-    @Test
-    void sedaExecutesOnVirtualThread() {
-        super.sedaExecutesOnVirtualThread();
-    }
+
 }
diff --git 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsTest.java
 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsTest.java
index a9961309aa..4ef03d31be 100644
--- 
a/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsTest.java
+++ 
b/integration-test-groups/foundation/seda/src/test/java/org/apache/camel/quarkus/component/seda/it/SedaVirtualThreadsTest.java
@@ -24,15 +24,12 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledForJreRange;
-import org.junit.jupiter.api.condition.JRE;
 
-import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.is;
 
 @QuarkusTestResource(value = 
SedaVirtualThreadsTest.VirtualThreadsResource.class, restrictToAnnotatedClass = 
true)
 @QuarkusTest
 class SedaVirtualThreadsTest {
-    @EnabledForJreRange(min = JRE.JAVA_21)
     @Test
     void sedaExecutesOnVirtualThread() {
         RestAssured.given()
@@ -43,7 +40,7 @@ class SedaVirtualThreadsTest {
 
         RestAssured.get("/seda/virtualThreadedResults")
                 .then()
-                .body(containsString("java.lang.VirtualThread"))
+                .body(is("true"))
                 .statusCode(200);
     }
 
diff --git a/integration-tests/infinispan/pom.xml 
b/integration-tests/infinispan/pom.xml
index eebe8c15d3..2f6fccb6c9 100644
--- a/integration-tests/infinispan/pom.xml
+++ b/integration-tests/infinispan/pom.xml
@@ -119,22 +119,6 @@
                 <skipTests>true</skipTests>
             </properties>
         </profile>
-        <profile>
-            <id>jdk17-build</id>
-            <activation>
-                <jdk>[17,)</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>--add-opens 
java.base/java.util=ALL-UNNAMED --add-opens 
java.base/java.util.concurrent=ALL-UNNAMED</argLine>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
     </profiles>
 
 </project>
diff --git a/pom.xml b/pom.xml
index bf7de21b0b..97b123ff95 100644
--- a/pom.xml
+++ b/pom.xml
@@ -295,9 +295,9 @@
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
         <!-- maven-compiler-plugin -->
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.release>17</maven.compiler.release>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <maven.compiler.release>21</maven.compiler.release>
 
         <!-- maven-enforcer-plugin -->
         <min-maven-version>3.8.2</min-maven-version>
diff --git 
a/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateBuildItemsDocMojo.java
 
b/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateBuildItemsDocMojo.java
index 90b977d86b..d8754daa54 100644
--- 
a/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateBuildItemsDocMojo.java
+++ 
b/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateBuildItemsDocMojo.java
@@ -91,7 +91,7 @@ public class UpdateBuildItemsDocMojo extends 
AbstractExtensionListMojo {
     String projectVersion;
 
     private final JavaParser javaParser = new JavaParser(
-            new 
ParserConfiguration().setLanguageLevel(ParserConfiguration.LanguageLevel.JAVA_17));
+            new 
ParserConfiguration().setLanguageLevel(ParserConfiguration.LanguageLevel.JAVA_21));
 
     @Override
     public void execute() throws MojoExecutionException {
diff --git 
a/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc 
b/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc
index 4cbdb9cc8b..02933e1553 100644
--- 
a/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc
+++ 
b/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc
@@ -171,7 +171,7 @@ a|[=configDocItem.illustration] 
[[[=anchor]]]`link:#[=anchor][[=configDocItem.ke
 .About the Duration format
 ====
 To write duration values, use the standard `java.time.Duration` format.
-See the 
link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence)[Duration#parse()
 Java API documentation] for more information.
+See the 
link:https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence)[Duration#parse()
 Java API documentation] for more information.
 
 You can also use a simplified format, starting with a number:
 
diff --git a/tooling/perf-regression/cq-perf-regression-sample-base/pom.xml 
b/tooling/perf-regression/cq-perf-regression-sample-base/pom.xml
index 8cd82103f0..66b98d751e 100644
--- a/tooling/perf-regression/cq-perf-regression-sample-base/pom.xml
+++ b/tooling/perf-regression/cq-perf-regression-sample-base/pom.xml
@@ -33,8 +33,8 @@
         <!-- Let's not upgrade hyperfoil-maven-plugin beyond 0.27.x as long as 
camel-quarkus supports JDK17: 
https://github.com/apache/camel-quarkus/issues/8027 -->
         <hyperfoil-maven-plugin.version>0.27.2</hyperfoil-maven-plugin.version>
         <maven.compiler.parameters>true</maven.compiler.parameters>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     </properties>

Reply via email to