java to use jdk 17 (#2686)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3d91644..0a4ecaf 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -136,7 +136,7 @@
       - uses: actions/setup-java@v3
         with:
           distribution: temurin
-          java-version: 11
+          java-version: 17
           cache: "gradle"
 
       - name: Install dependencies
@@ -423,8 +423,8 @@
       - uses: actions/setup-java@v3
         with:
           distribution: temurin
-          # here we intentionally use java 8 so that we also verify java 11 compiles to version 8
-          java-version: 8
+          # here we intentionally use an older version so that we also verify java 17 compiles to it
+          java-version: 11
           cache: "gradle"
 
       - name: Install openssl and certificates (for SSL tests)
diff --git a/LANGUAGES.md b/LANGUAGES.md
index 5fea223..93c4648 100644
--- a/LANGUAGES.md
+++ b/LANGUAGES.md
@@ -1,11 +1,11 @@
 # Apache Thrift Language Support #
 
-Guidance For: 0.17.0 | 
-[0.16.0](https://github.com/apache/thrift/blob/v0.16.0/LANGUAGES.md) | 
-[0.15.0](https://github.com/apache/thrift/blob/v0.15.0/LANGUAGES.md) | 
-[0.14.0](https://github.com/apache/thrift/blob/v0.14.0/LANGUAGES.md) | 
-[0.13.0](https://github.com/apache/thrift/blob/v0.13.0/LANGUAGES.md) | 
-[0.12.0](https://github.com/apache/thrift/blob/v0.12.0/LANGUAGES.md) | 
+Guidance For: 0.17.0 |
+[0.16.0](https://github.com/apache/thrift/blob/v0.16.0/LANGUAGES.md) |
+[0.15.0](https://github.com/apache/thrift/blob/v0.15.0/LANGUAGES.md) |
+[0.14.0](https://github.com/apache/thrift/blob/v0.14.0/LANGUAGES.md) |
+[0.13.0](https://github.com/apache/thrift/blob/v0.13.0/LANGUAGES.md) |
+[0.12.0](https://github.com/apache/thrift/blob/v0.12.0/LANGUAGES.md) |
 [0.11.0](https://github.com/apache/thrift/blob/0.11.0/LANGUAGES.md)
 
 Thrift supports many programming languages and has an impressive test suite that
@@ -187,7 +187,7 @@
 <td align=left><a href="https://github.com/apache/thrift/blob/master/lib/java/README.md">Java (SE)</a></td>
 <!-- Since -----------------><td>0.2.0</td>
 <!-- Build Systems ---------><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
-<!-- Language Levels -------><td>1.8.0_151</td><td>11.0.3</td>
+<!-- Language Levels -------><td>11</td><td>19</td>
 <!-- Field types -----------><td><img src="/doc/images/cred.png" alt=""/></td>
 <!-- Low-Level Transports --><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
 <!-- Transport Wrappers ----><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cred.png" alt=""/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td><td><img src="/doc/images/cgrn.png" alt="Yes"/></td>
diff --git a/build/docker/README.md b/build/docker/README.md
index 4b09700..a41f031 100644
--- a/build/docker/README.md
+++ b/build/docker/README.md
@@ -180,7 +180,7 @@
 | erlang    | OTP-18        | OTP-23        |       |
 | go        | 1.15.10       | 1.16.2        |       |
 | haxe      | 3.2.1         | 3.4.4         | THRIFT-4352: avoid 3.4.2 |
-| java      | 1.8.0\_191     | 11.0.3        |       |
+| java      | 1.8.0\_191     | 17           |       |
 | js        | Node.js 6.17.1, V8 5.1.281.111, npm 3.10.10 | Node.js 10.18.0, V8 6.8.275.32, npm 6.13.4 |     |
 | lua       |               | 5.2.4         | Lua 5.3: see THRIFT-4386 |
 | netstd    | 6.0           | 6.0           |       |
diff --git a/build/docker/ubuntu-bionic/Dockerfile b/build/docker/ubuntu-bionic/Dockerfile
index 493063e..3d27930 100644
--- a/build/docker/ubuntu-bionic/Dockerfile
+++ b/build/docker/ubuntu-bionic/Dockerfile
@@ -167,7 +167,7 @@
       ant \
       ant-optional \
       maven \
-      openjdk-11-jdk-headless && \
+      openjdk-17-jdk-headless && \
       `# Gradle` \
       wget https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip -q -O /tmp/gradle-$GRADLE_VERSION-bin.zip && \
       (echo "f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4  /tmp/gradle-$GRADLE_VERSION-bin.zip" | sha256sum -c -) && \
diff --git a/build/docker/ubuntu-focal/Dockerfile b/build/docker/ubuntu-focal/Dockerfile
index 0ea2780..52f2463 100644
--- a/build/docker/ubuntu-focal/Dockerfile
+++ b/build/docker/ubuntu-focal/Dockerfile
@@ -168,7 +168,7 @@
       ant \
       ant-optional \
       maven \
-      openjdk-11-jdk-headless && \
+      openjdk-17-jdk-headless && \
       `# Gradle` \
       wget https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip -q -O /tmp/gradle-$GRADLE_VERSION-bin.zip && \
       (echo "f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4  /tmp/gradle-$GRADLE_VERSION-bin.zip" | sha256sum -c -) && \
diff --git a/debian/control b/debian/control
index b7f0b96..1b41991 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@
     pkg-config, libtool, bison, flex, libboost-dev | libboost1.56-dev | libboost1.63-all-dev,
     python-all, python-setuptools, python-all-dev, python-all-dbg,
     python3-all, python3-setuptools, python3-all-dev, python3-all-dbg,
-    openjdk-8-jdk | openjdk-8-jdk-headless | openjdk-11-jdk | openjdk-11-jdk-headless | default-jdk,
+    openjdk-17-jdk | openjdk-17-jdk-headless | default-jdk,
     libboost-test-dev | libboost-test1.56-dev | libboost-test1.63-dev, libevent-dev, libssl-dev, perl (>= 5.8.0-7),
     php (>= 5), php-dev (>= 5), libglib2.0-dev, qtchooser, qtbase5-dev-tools
 Maintainer: Thrift Developer's <dev@thrift.apache.org>
diff --git a/doc/install/README.md b/doc/install/README.md
index 3bc4d35..e349f0f 100644
--- a/doc/install/README.md
+++ b/doc/install/README.md
@@ -7,7 +7,7 @@
 * Runtime libraries for lex and yacc might be needed for the compiler.
 
 ## Requirements for building from source
-* GNU build tools: 
+* GNU build tools:
     * autoconf 2.65
     * automake 1.13
     * libtool 1.5.24
@@ -28,8 +28,8 @@
     * zlib (optional)
     * Qt (optional)
 * Java
-    * Java 1.8
-    * Gradle
+    * Java 17
+    * Gradle 7.5.1
 * C#: Mono 1.2.4 (and pkg-config to detect it) or Visual Studio 2005+
 * Python 2.6 (including header files for extension modules)
 * PHP 5.0 (optionally including header files for extension modules)
diff --git a/lib/java/README.md b/lib/java/README.md
index cd12932..7005c60 100644
--- a/lib/java/README.md
+++ b/lib/java/README.md
@@ -52,7 +52,7 @@
 ```bash
 export GRADLE_VERSION="7.5.1"
 # install dependencies
-apt-get install -y --no-install-recommends openjdk-11-jdk-headless wget unzip
+apt-get install -y --no-install-recommends openjdk-17-jdk-headless wget unzip
 # download gradle distribution
 wget https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip -q -O /tmp/gradle-$GRADLE_VERSION-bin.zip
 # check binary integrity
diff --git a/lib/java/gradle/sourceConfiguration.gradle b/lib/java/gradle/sourceConfiguration.gradle
index 47f4ff0..1d4c44c 100644
--- a/lib/java/gradle/sourceConfiguration.gradle
+++ b/lib/java/gradle/sourceConfiguration.gradle
@@ -21,7 +21,7 @@
 // ----------------------------------------------------------------------------
 // Compiler configuration details
 
-// We are using Java 11 toolchain to compile.
+// We are using Java 17 toolchain to compile.
 // This enables decoupling from the Java version that gradle runs, from
 // the actual JDK version for the project. For more details, see
 // https://docs.gradle.org/current/userguide/toolchains.html
@@ -31,7 +31,7 @@
 // also a runtime CI that's based on Java 8 to ensure that.
 java {
     toolchain {
-        languageVersion = JavaLanguageVersion.of(11)
+        languageVersion = JavaLanguageVersion.of(17)
     }
 }
 
@@ -39,8 +39,8 @@
     options.encoding = 'UTF-8'
     options.debug = true
     options.deprecation = true
-    // the following is to build with Java 8 specifications, even when building with JDK9 or later
-    options.release = 8
+    // the following is to build with Java 11 specifications, even when building with later JDK
+    options.release = 11
     options.compilerArgs += [
             '-Werror',
             '-Xlint:deprecation',
diff --git a/lib/java/gradle/unitTests.gradle b/lib/java/gradle/unitTests.gradle
index db9ad82..293bcca 100644
--- a/lib/java/gradle/unitTests.gradle
+++ b/lib/java/gradle/unitTests.gradle
@@ -65,6 +65,8 @@
         outputs.upToDateWhen { false }
     }
 
+    // This is required for Mockito to run under Java 17
+    jvmArgs '--add-opens=java.base/java.lang=ALL-UNNAMED'
     include '**/Test*.class'
     exclude '**/Test*\$*.class'
 
diff --git a/lib/java/src/test/java/org/apache/thrift/transport/TestTSaslTransports.java b/lib/java/src/test/java/org/apache/thrift/transport/TestTSaslTransports.java
index 224da21..d4f8fff 100644
--- a/lib/java/src/test/java/org/apache/thrift/transport/TestTSaslTransports.java
+++ b/lib/java/src/test/java/org/apache/thrift/transport/TestTSaslTransports.java
@@ -492,7 +492,7 @@
 
   public static class SaslAnonymousProvider extends java.security.Provider {
     public SaslAnonymousProvider() {
-      super("ThriftSaslAnonymous", 1.0, "Thrift Anonymous SASL provider");
+      super("ThriftSaslAnonymous", "1.0", "Thrift Anonymous SASL provider");
       put("SaslClientFactory.ANONYMOUS", SaslAnonymousFactory.class.getName());
       put("SaslServerFactory.ANONYMOUS", SaslAnonymousFactory.class.getName());
     }
diff --git a/lib/kotlin/build.gradle.kts b/lib/kotlin/build.gradle.kts
index 90b9e80..06b73f2 100644
--- a/lib/kotlin/build.gradle.kts
+++ b/lib/kotlin/build.gradle.kts
@@ -36,7 +36,7 @@
 
 kotlin {
     jvmToolchain {
-        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
     }
 }
 
diff --git a/lib/kotlin/cross-test-client/build.gradle.kts b/lib/kotlin/cross-test-client/build.gradle.kts
index ff48eed..579d01e 100644
--- a/lib/kotlin/cross-test-client/build.gradle.kts
+++ b/lib/kotlin/cross-test-client/build.gradle.kts
@@ -52,7 +52,7 @@
 
 kotlin {
     jvmToolchain {
-        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
     }
 }
 
diff --git a/lib/kotlin/cross-test-server/build.gradle.kts b/lib/kotlin/cross-test-server/build.gradle.kts
index eda1ebd..4f6e12d 100644
--- a/lib/kotlin/cross-test-server/build.gradle.kts
+++ b/lib/kotlin/cross-test-server/build.gradle.kts
@@ -50,7 +50,7 @@
 
 kotlin {
     jvmToolchain {
-        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
     }
 }