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

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f107fd9ac8 IGNITE-22996 Move Ignite sources to JDK11 (#11508)
7f107fd9ac8 is described below

commit 7f107fd9ac8dd5d6bd4ebadbe283bd30568f707b
Author: Maksim Timonin <[email protected]>
AuthorDate: Wed Sep 11 18:45:34 2024 +0300

    IGNITE-22996 Move Ignite sources to JDK11 (#11508)
---
 .github/workflows/commit-check.yml                 |   3 +-
 .github/workflows/publish-snapshot.yml             |   2 +-
 bin/control.bat                                    |   8 +-
 bin/ignite.bat                                     |   8 +-
 bin/include/functions.sh                           |   6 +-
 bin/include/jvmdefaults.bat                        |  19 ---
 bin/include/jvmdefaults.sh                         |  19 +--
 bin/index-reader.bat                               |   8 +-
 deliveries/docker/apache-ignite-net/Dockerfile     |   2 +-
 deliveries/docker/apache-ignite/arm64/Dockerfile   |   4 +-
 deliveries/docker/apache-ignite/run.sh             |  19 +--
 deliveries/docker/apache-ignite/x86_64/Dockerfile  |   4 +-
 docs/README.adoc                                   |   2 +-
 docs/_docs/includes/cpp-prerequisites.adoc         |   2 +-
 docs/_docs/includes/dotnet-prerequisites.adoc      |   2 +-
 docs/_docs/includes/prereqs.adoc                   |   2 +-
 .../monitoring-metrics/new-metrics-system.adoc     |   2 +-
 .../net-specific/net-cross-platform-support.adoc   |   6 +-
 docs/_docs/net-specific/net-troubleshooting.adoc   |   3 +-
 .../perf-and-troubleshooting/memory-tuning.adoc    |   2 +-
 docs/_docs/quick-start/java.adoc                   |   8 +-
 docs/_docs/restapi.adoc                            |   8 +-
 docs/_docs/security/sandbox.adoc                   |   2 +-
 docs/_docs/security/tde.adoc                       |  10 +-
 docs/_docs/tools/control-script.adoc               |   4 +-
 docs/_docs/tools/informatica.adoc                  |   2 +-
 examples/README.md                                 |   4 +-
 examples/pom-standalone-lgpl.xml                   |   4 +-
 examples/pom-standalone.xml                        |   4 +-
 modules/checkstyle/pom.xml                         |   4 +-
 .../jdbc/thin/JdbcThinConnectionSSLTest.java       |   8 +-
 .../PersistenceBasicCompatibilityTest.java         |   2 +-
 .../internal/plugin/IgniteLogInfoProviderImpl.java |   2 +-
 .../platform/memory/PlatformMemoryPool.java        |   7 +-
 .../suggestions/JvmConfigurationSuggestions.java   |   9 --
 .../ignite/internal/util/FeatureChecker.java       |   8 +-
 .../apache/ignite/internal/util/GridCleaner.java   |  99 -------------
 .../apache/ignite/internal/util/GridUnsafe.java    |   8 +-
 .../JvmConfigurationSuggestionsTest.java           |  86 -----------
 .../ignite/internal/util/GridCleanerTest.java      |  44 ------
 .../ignite/testsuites/IgniteBasicTestSuite2.java   |   5 -
 .../dns_failure_test/BlockingNameService.java      |  20 +--
 modules/ducktests/tests/docker/Dockerfile          |   2 +-
 modules/ducktests/tests/docker/ducker-ignite       |   2 +-
 modules/ducktests/tests/docker/run_tests.sh        |   4 +-
 modules/kubernetes/config/Dockerfile               |   2 +-
 modules/numa-allocator/README.md                   |   4 +-
 .../Impl/Unmanaged/Jni/JvmDll.cs                   |   6 +-
 modules/platforms/dotnet/examples/README.md        |   2 +-
 modules/tools/pom.xml                              |  15 +-
 .../tools/ant/beautifier/GridJavadocAntTask.java   |  40 +++--
 .../ignite/tools/javadoc/IgniteLinkTaglet.java     | 164 ---------------------
 packaging/deb/control                              |   2 +-
 packaging/rpm/apache-ignite.spec                   |   4 +-
 parent/pom.xml                                     |  14 +-
 55 files changed, 113 insertions(+), 619 deletions(-)

diff --git a/.github/workflows/commit-check.yml 
b/.github/workflows/commit-check.yml
index 36d6425e580..b736458a4f5 100644
--- a/.github/workflows/commit-check.yml
+++ b/.github/workflows/commit-check.yml
@@ -31,7 +31,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        java: [ '8', '11' ]
+        java: [ '11' ]
     name: Check java code on JDK ${{ matrix.java }}
     steps:
       - uses: actions/checkout@v4
@@ -63,7 +63,6 @@ jobs:
           ./mvnw test-compile 
-Pall-java,licenses,lgpl,checkstyle,examples,all-scala,scala,check-licenses -B 
-V
 
       - name: Run abandoned tests checks.
-        if: ${{ matrix.java == '8' }}
         run : |
           ./mvnw test -Pcheck-test-suites,all-java,all-scala,scala -B -V
 
diff --git a/.github/workflows/publish-snapshot.yml 
b/.github/workflows/publish-snapshot.yml
index 9a9a5f1e3cb..04f22a182e3 100644
--- a/.github/workflows/publish-snapshot.yml
+++ b/.github/workflows/publish-snapshot.yml
@@ -35,7 +35,7 @@ jobs:
       - name: Set up Java
         uses: actions/setup-java@v2
         with:
-          java-version: 8
+          java-version: 11
           distribution: 'adopt'
           server-id: apache.snapshots.https
           server-username: NEXUS_USER
diff --git a/bin/control.bat b/bin/control.bat
index 4174125c007..135329331e9 100644
--- a/bin/control.bat
+++ b/bin/control.bat
@@ -28,7 +28,7 @@ if "%OS%" == "Windows_NT"  setlocal
 if defined JAVA_HOME  goto checkJdk
     echo %0, ERROR:
     echo JAVA_HOME environment variable is not found.
-    echo Please point JAVA_HOME variable to location of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to location of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -37,7 +37,7 @@ goto error_finish
 if exist "%JAVA_HOME%\bin\java.exe" goto checkJdkVersion
     echo %0, ERROR:
     echo JAVA is not found in JAVA_HOME=%JAVA_HOME%.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -55,10 +55,10 @@ set JAVA_VER_STR=%JAVA_VER_STR:"=%
 for /f "tokens=1,2 delims=." %%a in ("%JAVA_VER_STR%.x") do set 
MAJOR_JAVA_VER=%%a& set MINOR_JAVA_VER=%%b
 if %MAJOR_JAVA_VER% == 1 set MAJOR_JAVA_VER=%MINOR_JAVA_VER%
 
-if %MAJOR_JAVA_VER% LSS 8 (
+if %MAJOR_JAVA_VER% LSS 11 (
     echo %0, ERROR:
     echo The version of JAVA installed in %JAVA_HOME% is incorrect.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
     goto error_finish
 )
diff --git a/bin/ignite.bat b/bin/ignite.bat
index 1bfa82c95ae..1368fc39a45 100644
--- a/bin/ignite.bat
+++ b/bin/ignite.bat
@@ -28,7 +28,7 @@ if "%OS%" == "Windows_NT"  setlocal
 if defined JAVA_HOME  goto checkJdk
     echo %0, ERROR:
     echo JAVA_HOME environment variable is not found.
-    echo Please point JAVA_HOME variable to location of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to location of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -37,7 +37,7 @@ goto error_finish
 if exist "%JAVA_HOME%\bin\java.exe" goto checkJdkVersion
     echo %0, ERROR:
     echo JAVA is not found in JAVA_HOME=%JAVA_HOME%.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -55,10 +55,10 @@ set JAVA_VER_STR=%JAVA_VER_STR:"=%
 for /f "tokens=1,2 delims=." %%a in ("%JAVA_VER_STR%.x") do set 
MAJOR_JAVA_VER=%%a& set MINOR_JAVA_VER=%%b
 if %MAJOR_JAVA_VER% == 1 set MAJOR_JAVA_VER=%MINOR_JAVA_VER%
 
-if %MAJOR_JAVA_VER% LSS 8 (
+if %MAJOR_JAVA_VER% LSS 11 (
     echo %0, ERROR:
     echo The version of JAVA installed in %JAVA_HOME% is incorrect.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
        goto error_finish
 )
diff --git a/bin/include/functions.sh b/bin/include/functions.sh
index f3cef38f626..0016e447e87 100755
--- a/bin/include/functions.sh
+++ b/bin/include/functions.sh
@@ -66,7 +66,7 @@ checkJava() {
         if [ $RETCODE -ne 0 ]; then
             echo $0", ERROR:"
             echo "JAVA_HOME environment variable is not found."
-            echo "Please point JAVA_HOME variable to location of JDK 1.8 or 
later."
+            echo "Please point JAVA_HOME variable to location of JDK 11 or 
later."
             echo "You can also download latest JDK at http://java.com/download";
 
             exit 1
@@ -82,10 +82,10 @@ checkJava() {
     #
     javaMajorVersion "$JAVA"
 
-    if [ $version -lt 8 ]; then
+    if [ $version -lt 11 ]; then
         echo "$0, ERROR:"
         echo "The $version version of JAVA installed in JAVA_HOME=$JAVA_HOME 
is incompatible."
-        echo "Please point JAVA_HOME variable to installation of JDK 1.8 or 
later."
+        echo "Please point JAVA_HOME variable to installation of JDK 11 or 
later."
         echo "You can also download latest JDK at http://java.com/download";
         exit 1
     fi
diff --git a/bin/include/jvmdefaults.bat b/bin/include/jvmdefaults.bat
index a7ffad9f236..942e9243cbb 100644
--- a/bin/include/jvmdefaults.bat
+++ b/bin/include/jvmdefaults.bat
@@ -24,25 +24,6 @@ set value=""
 :: First argument is the version of the java
 :: Second argument is the current value of the jvm options
 :: Third value is the name of the environment variable that jvm options should 
be set to
-if %java_version% == 8 (
-    set value= ^
-    -XX:+AggressiveOpts ^
-    %current_value%
-)
-
-if %java_version% GEQ 9 if %java_version% LSS 11 (
-    set value= ^
-    -XX:+AggressiveOpts ^
-    --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED ^
-    --add-exports=java.base/sun.nio.ch=ALL-UNNAMED ^
-    --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED ^
-    --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED ^
-    --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED 
^
-    --illegal-access=permit ^
-    --add-modules=java.xml.bind ^
-    %current_value%
-)
-
 if %java_version% GEQ 11 if %java_version% LSS 14 (
     set value= ^
     --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED ^
diff --git a/bin/include/jvmdefaults.sh b/bin/include/jvmdefaults.sh
index 5b93a547960..1bcb72733b7 100644
--- a/bin/include/jvmdefaults.sh
+++ b/bin/include/jvmdefaults.sh
@@ -24,24 +24,7 @@ getJavaSpecificOpts() {
   current_value=$2
   value=""
 
-  if [ $version -eq 8 ] ; then
-      value="\
-          -XX:+AggressiveOpts \
-           ${current_value}"
-
-  elif [ $version -gt 8 ] && [ $version -lt 11 ]; then
-      value="\
-          -XX:+AggressiveOpts \
-          --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
-          --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
-          --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
-          --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
-          
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
-          --illegal-access=permit \
-          --add-modules=java.xml.bind \
-          ${current_value}"
-
-  elif [ "${version}" -ge 11 ] && [ "${version}" -lt 14 ]; then
+  if [ "${version}" -ge 11 ] && [ "${version}" -lt 14 ]; then
       value="\
           --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
           --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
diff --git a/bin/index-reader.bat b/bin/index-reader.bat
index c1b1dda2fcf..afb1b89ace0 100644
--- a/bin/index-reader.bat
+++ b/bin/index-reader.bat
@@ -27,7 +27,7 @@ if "%OS%" == "Windows_NT"  setlocal
 if defined JAVA_HOME  goto checkJdk
     echo %0, ERROR:
     echo JAVA_HOME environment variable is not found.
-    echo Please point JAVA_HOME variable to location of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to location of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -36,7 +36,7 @@ goto error_finish
 if exist "%JAVA_HOME%\bin\java.exe" goto checkJdkVersion
     echo %0, ERROR:
     echo JAVA is not found in JAVA_HOME=%JAVA_HOME%.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
 goto error_finish
 
@@ -54,10 +54,10 @@ set JAVA_VER_STR=%JAVA_VER_STR:"=%
 for /f "tokens=1,2 delims=." %%a in ("%JAVA_VER_STR%.x") do set 
MAJOR_JAVA_VER=%%a& set MINOR_JAVA_VER=%%b
 if %MAJOR_JAVA_VER% == 1 set MAJOR_JAVA_VER=%MINOR_JAVA_VER%
 
-if %MAJOR_JAVA_VER% LSS 8 (
+if %MAJOR_JAVA_VER% LSS 11 (
     echo %0, ERROR:
     echo The version of JAVA installed in %JAVA_HOME% is incorrect.
-    echo Please point JAVA_HOME variable to installation of JDK 1.8 or later.
+    echo Please point JAVA_HOME variable to installation of JDK 11 or later.
     echo You can also download latest JDK at http://java.com/download.
     goto error_finish
 )
diff --git a/deliveries/docker/apache-ignite-net/Dockerfile 
b/deliveries/docker/apache-ignite-net/Dockerfile
index 050956b23e7..ac6e118e3f1 100644
--- a/deliveries/docker/apache-ignite-net/Dockerfile
+++ b/deliveries/docker/apache-ignite-net/Dockerfile
@@ -23,7 +23,7 @@ RUN mkdir -p /usr/share/man/man1
 RUN apt update && apt install apt-utils -y --no-install-recommends
 
 ## Install JRE
-RUN apt update && apt install openjdk-8-jre-headless -y --no-install-recommends
+RUN apt update && apt install openjdk-11-jre-headless -y 
--no-install-recommends
 
 WORKDIR /app
 
diff --git a/deliveries/docker/apache-ignite/arm64/Dockerfile 
b/deliveries/docker/apache-ignite/arm64/Dockerfile
index d4828acfb2c..1e1098c0ba8 100644
--- a/deliveries/docker/apache-ignite/arm64/Dockerfile
+++ b/deliveries/docker/apache-ignite/arm64/Dockerfile
@@ -15,8 +15,8 @@
 # limitations under the License.
 #
 
-# Start from Java 8 based on Ubuntu Focal Linux image (there is no Alpine 
Linux image with Java 8 on ARM64)
-ARG JDK_VERSION=8
+# Start from Java 11 based on Ubuntu Focal Linux image (there is no Alpine 
Linux image with Java 11 on ARM64)
+ARG JDK_VERSION=11
 FROM eclipse-temurin:${JDK_VERSION}-jre-focal
 
 # Settings
diff --git a/deliveries/docker/apache-ignite/run.sh 
b/deliveries/docker/apache-ignite/run.sh
index bacb588325c..1c8eff2dea0 100755
--- a/deliveries/docker/apache-ignite/run.sh
+++ b/deliveries/docker/apache-ignite/run.sh
@@ -73,24 +73,9 @@ if [ -z "${JVM_OPTS}" ] ; then
 fi
 
 #
-# Add Java extra option 
+# Add Java extra option
 #
-if [ "${version}" -eq 8 ] ; then
-    JVM_OPTS="\
-        -XX:+AggressiveOpts \
-         ${JVM_OPTS}"
-elif [ "${version}" -gt 8 ] && [ "${version}" -lt 11 ]; then
-    JVM_OPTS="\
-        -XX:+AggressiveOpts \
-        --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
-        --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
-        --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
-        --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
-        
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
-        --illegal-access=permit \
-        --add-modules=java.xml.bind \
-        ${JVM_OPTS}"
-elif [ "${version}" -ge 11 ] ; then
+if [ "${version}" -ge 11 ] ; then
     JVM_OPTS="\
         --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
         --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
diff --git a/deliveries/docker/apache-ignite/x86_64/Dockerfile 
b/deliveries/docker/apache-ignite/x86_64/Dockerfile
index fd302f191a5..3e1b1aebd07 100644
--- a/deliveries/docker/apache-ignite/x86_64/Dockerfile
+++ b/deliveries/docker/apache-ignite/x86_64/Dockerfile
@@ -15,8 +15,8 @@
 # limitations under the License.
 #
 
-# Start from Java 8 based on Alpine Linux image
-ARG JDK_VERSION=8
+# Start from Java 11 based on Alpine Linux image
+ARG JDK_VERSION=11
 FROM eclipse-temurin:${JDK_VERSION}-jre-alpine
 
 # Settings
diff --git a/docs/README.adoc b/docs/README.adoc
index 710f7847fc6..118944bcfd4 100644
--- a/docs/README.adoc
+++ b/docs/README.adoc
@@ -153,7 +153,7 @@ When referencing an external resource, make the link to 
open in a new window by
 
 [source, adoc]
 ----
-link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols[Supported
 protocols,window=_blank]
+link:https://docs.oracle.com/en/java/javase/11/security/java-security-overview1.html#GUID-FCF419A7-B856-46DD-A36F-C6F88F9AF37F[Supported
 protocols,window=_blank]
 ----
 
 
diff --git a/docs/_docs/includes/cpp-prerequisites.adoc 
b/docs/_docs/includes/cpp-prerequisites.adoc
index dd8fdefd27e..cbb169f4a4a 100644
--- a/docs/_docs/includes/cpp-prerequisites.adoc
+++ b/docs/_docs/includes/cpp-prerequisites.adoc
@@ -14,7 +14,7 @@
 // limitations under the License.
 [width="100%",cols="1,3"]
 |===
-|JDK|Oracle JDK 8, 11 or 17, Open JDK 8, 11 or 17, IBM JDK 8, 11 or 17
+|JDK|Oracle JDK 11 or 17, Open JDK 11 or 17, IBM JDK 11 or 17
 |OS|Windows Vista, Windows Server 2008 and later versions, Ubuntu (18.04 64 
bit)
 |Network|No restrictions (10G recommended)
 |Hardware|No restrictions
diff --git a/docs/_docs/includes/dotnet-prerequisites.adoc 
b/docs/_docs/includes/dotnet-prerequisites.adoc
index 08bd943c910..c9b2feeb51a 100644
--- a/docs/_docs/includes/dotnet-prerequisites.adoc
+++ b/docs/_docs/includes/dotnet-prerequisites.adoc
@@ -14,7 +14,7 @@
 // limitations under the License.
 [width="100%",cols="1,3"]
 |===
-|JDK |Oracle JDK 8, 11 or 17, Open JDK 8, 11 or 17, IBM JDK 8, 11 or 17
+|JDK |Oracle JDK 11 or 17, Open JDK 11 or 17, IBM JDK 11 or 17
 |.NET Framework |.NET 4.0+, .NET Core 2.0+
 //|IDE |Visual Studio 2010+, Rider, Visual Studio Code
 |===
diff --git a/docs/_docs/includes/prereqs.adoc b/docs/_docs/includes/prereqs.adoc
index a39e30f738d..6964c1d19c2 100644
--- a/docs/_docs/includes/prereqs.adoc
+++ b/docs/_docs/includes/prereqs.adoc
@@ -14,7 +14,7 @@
 // limitations under the License.
 [width="100%",cols="1,3"]
 |===
-|JDK |Oracle JDK 8, 11 or 17 Open JDK 8, 11 or 17, IBM JDK 8, 11 or 17
+|JDK |Oracle JDK 11 or 17 Open JDK 11 or 17, IBM JDK 11 or 17
 |OS |Linux (any flavor), Mac OSX (10.6 and up), Windows (XP and up),
 Windows Server (2008 and up), Oracle Solaris
 |ISA |x86, x64, SPARC, PowerPC, ARM64
diff --git a/docs/_docs/monitoring-metrics/new-metrics-system.adoc 
b/docs/_docs/monitoring-metrics/new-metrics-system.adoc
index 5f2de5d21a5..b914f59a454 100644
--- a/docs/_docs/monitoring-metrics/new-metrics-system.adoc
+++ b/docs/_docs/monitoring-metrics/new-metrics-system.adoc
@@ -135,7 +135,7 @@ JVM_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=${J
 
 ==== Understanding MBean's ObjectName
 
-Every JMX Mbean has an 
https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html[ObjectName,window=_blank].
+Every JMX Mbean has an 
https://docs.oracle.com/en/java/javase/11/docs/api/java.management/javax/management/ObjectName.html[ObjectName,window=_blank].
 The ObjectName is used to identify the bean.
 The ObjectName consists of a domain and a list of key properties, and can be 
represented as a string as follows:
 
diff --git a/docs/_docs/net-specific/net-cross-platform-support.adoc 
b/docs/_docs/net-specific/net-cross-platform-support.adoc
index b343665f423..abd05f5ea6b 100644
--- a/docs/_docs/net-specific/net-cross-platform-support.adoc
+++ b/docs/_docs/net-specific/net-cross-platform-support.adoc
@@ -24,7 +24,7 @@ applications for Linux and macOS, as well as Windows.
 *Requirements:*
 
 * https://www.microsoft.com/net/download/[.NET Core SDK 2.0+, window=_blank]
-* http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java 8+, 
window=_blank] (macOS requires JDK, otherwise JRE works)
+* http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java 11+, 
window=_blank] (macOS requires JDK, otherwise JRE works)
 
 *Running Examples*
 https://ignite.apache.org/download.cgi#binaries[Binary distribution, 
window=_blank] includes .NET Core examples:
@@ -48,10 +48,6 @@ If you changed the default location of Java, then specify 
the actual path using
 
 == Known Issues
 
-*No Java runtime present, requesting install*
-
-Java `8u151` has a known bug on macOS: 
https://bugs.openjdk.java.net/browse/JDK-7131356[JDK-7131356, window=_blank]. 
Make sure to install `8u152` or later.
-
 *Serializing delegates is not supported on this platform*
 
 .NET Core does not support delegate serialization, 
`System.MulticastDelegate.GetObjectData`
diff --git a/docs/_docs/net-specific/net-troubleshooting.adoc 
b/docs/_docs/net-specific/net-troubleshooting.adoc
index cc4617bf255..01305be7a89 100644
--- a/docs/_docs/net-specific/net-troubleshooting.adoc
+++ b/docs/_docs/net-specific/net-troubleshooting.adoc
@@ -72,8 +72,7 @@ so if you have x86 AND x64 JDK installed, it will work in any 
mode.
 
 The `126 ERROR_MOD_NOT_FOUND` code can occur due to missing dependencies:
 
-* JDK 8 requires 
https://www.microsoft.com/en-us/download/details.aspx?id=14632[Microsoft Visual 
C{pp} 2010 Redistributable Package, window=_blank]
-* Later JDK versions require 
https://www.microsoft.com/en-us/download/details.aspx?id=48145[Microsoft Visual 
C{pp} 2015 Redistributable Package, window=_blank] or later
+* JDK require 
https://www.microsoft.com/en-us/download/details.aspx?id=48145[Microsoft Visual 
C{pp} 2015 Redistributable Package, window=_blank] or later
 
 === Java class is not found
 
diff --git a/docs/_docs/perf-and-troubleshooting/memory-tuning.adoc 
b/docs/_docs/perf-and-troubleshooting/memory-tuning.adoc
index dfaedff5b40..e452b27233a 100644
--- a/docs/_docs/perf-and-troubleshooting/memory-tuning.adoc
+++ b/docs/_docs/perf-and-troubleshooting/memory-tuning.adoc
@@ -90,7 +90,7 @@ practices on GC logs and heap dumps collection.
 Below are sets of example JVM configurations for applications that can utilize 
Java Heap on server nodes heavily, thus
 triggering long — or frequent, short — stop-the-world GC pauses.
 
-For JDK 1.8+ deployments you should use G1 garbage collector.
+For JDK 11+ deployments you should use G1 garbage collector.
 The settings below are a good starting point if 10GB heap is more than enough 
for your server nodes:
 
 [source,shell]
diff --git a/docs/_docs/quick-start/java.adoc b/docs/_docs/quick-start/java.adoc
index 4dbcf6fcc40..fbea06636da 100644
--- a/docs/_docs/quick-start/java.adoc
+++ b/docs/_docs/quick-start/java.adoc
@@ -22,7 +22,7 @@ Ignite was officially tested on:
 
 include::includes/prereqs.adoc[]
 
-If you use Java version 11 or later, see <<Running Ignite with Java 11 or 
later>> for details.
+See <<Running Ignite with Java 11 or later>> for additional JVM parameters.
 
 == Installing Ignite
 
@@ -136,7 +136,7 @@ public class HelloWorld {
 ====
 Don't forget to add imports for HelloWorld.java. It should be trivial as long 
as Maven solves all of the dependencies.
 
-Plus, you might need to add these settings to your pom.xml if the IDE keeps 
using Java compiler from a version earlier than 1.8:
+Plus, you might need to add these settings to your pom.xml if the IDE keeps 
using Java compiler from a version earlier than 11:
 [source,xml]
 ----
 <build>
@@ -145,8 +145,8 @@ Plus, you might need to add these settings to your pom.xml 
if the IDE keeps usin
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <configuration>
-                <source>1.8</source>
-                <target>1.8</target>
+                <source>11</source>
+                <target>11</target>
             </configuration>
         </plugin>
     </plugins>
diff --git a/docs/_docs/restapi.adoc b/docs/_docs/restapi.adoc
index 4db745b6eae..0409ed21223 100644
--- a/docs/_docs/restapi.adoc
+++ b/docs/_docs/restapi.adoc
@@ -199,21 +199,21 @@ of the argument. The REST API supports both <<Java 
Types>> and <<Custom Types>>.
 |`date`
 |`java.sql.Date`
 
-The date value should be in the format as specified in the `valueOf(String)` 
method in the 
link:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html#valueOf-java.lang.String-[Java
 documentation ,window=_blank]
+The date value should be in the format as specified in the `valueOf(String)` 
method in the 
link:https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/Date.html#valueOf(java.lang.String)[Java
 documentation ,window=_blank]
 
 Example: 2018-01-01
 
 |`time`
 |`java.sql.Time`
 
-The time value should be in the format as specified in the `valueOf(String)` 
method in the 
link:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html#valueOf-java.lang.String-[Java
 documentation ,window=_blank]
+The time value should be in the format as specified in the `valueOf(String)` 
method in the 
link:https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/Date.html#valueOf(java.lang.String)[Java
 documentation ,window=_blank]
 
 Example: 01:01:01
 
 |`timestamp`
 |`java.sql.Timestamp`
 
-The timestamp value should be in the format as specified in the 
`valueOf(String)` method in the 
link:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html#valueOf-java.lang.String-[Java
 documentation ,window=_blank]
+The timestamp value should be in the format as specified in the 
`valueOf(String)` method in the 
link:https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/Date.html#valueOf(java.lang.String)[Java
 documentation ,window=_blank]
 
 Example: 2018-02-18%2001:01:01
 
@@ -2947,4 +2947,4 @@ Returns HTTP Status code 200 if kernal has started, and 
503 otherwise
   "response": "grid has started",
   "successStatus": 0
 }
-----
\ No newline at end of file
+----
diff --git a/docs/_docs/security/sandbox.adoc b/docs/_docs/security/sandbox.adoc
index 03a5632ce43..86aa0c00b38 100644
--- a/docs/_docs/security/sandbox.adoc
+++ b/docs/_docs/security/sandbox.adoc
@@ -29,7 +29,7 @@ The activation of Ignite Sandbox involves the configuration 
of an `SecurityManag
 === Install SecurityManager
 
 Due to the fact, that Ignite Sandbox is based on the Java Sandbox model, and
-link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/spec/security-spec.doc6.html#a19349[SecurityManager,window=_blank]
+link:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/SecurityManager.html[SecurityManager,window=_blank]
 is an important part of that model, you need to have it installed.
 The SecurityManager is responsible for checking, which security policy is 
currently in effect. It also performs access control checks.
 The security manager is not automatically installed when an application is 
running. If you run Ignite as a separate application,
diff --git a/docs/_docs/security/tde.adoc b/docs/_docs/security/tde.adoc
index 5d060c062f5..5cd1ca7bbba 100644
--- a/docs/_docs/security/tde.adoc
+++ b/docs/_docs/security/tde.adoc
@@ -109,9 +109,9 @@ A keystore with a master key can be created using `keytool` 
as follows:
 [source,shell]
 ----
 user:~/tmp:[]$ java -version
-java version "1.8.0_161"
-Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
-Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
+openjdk version "11.0.24" 2024-07-16
+OpenJDK Runtime Environment Temurin-11.0.24+8 (build 11.0.24+8)
+OpenJDK 64-Bit Server VM Temurin-11.0.24+8 (build 11.0.24+8, mixed mode)
 
 user:~/tmp:[]$ keytool -genseckey \
 -alias ignite.master.key \
@@ -128,11 +128,11 @@ user:~/tmp:[]$ keytool \
 -list
 
 Keystore type: PKCS12
-Keystore provider: SunJSSE
+Keystore provider: SUN
 
 Your keystore contains 1 entry
 
-ignite.master.key, 07.11.2018, SecretKeyEntry,
+ignite.master.key, 07.08.2024, SecretKeyEntry,
 ----
 
 == Source Code Example
diff --git a/docs/_docs/tools/control-script.adoc 
b/docs/_docs/tools/control-script.adoc
index 904afb22333..ff2ad0988bc 100644
--- a/docs/_docs/tools/control-script.adoc
+++ b/docs/_docs/tools/control-script.adoc
@@ -51,8 +51,8 @@ If you want to connect to a node that is running on a remove 
machine, specify th
 | --password PASSWORD |The user password. |
 | --ping-interval PING_INTERVAL | The ping interval. | 5000
 | --ping-timeout PING_TIMEOUT | Ping response timeout. | 30000
-| --ssl-protocol PROTOCOL1, PROTOCOL2... | A list of SSL protocols to try when 
connecting to the cluster. 
link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols[Supported
 protocols,window=_blank]. | `TLS`
-| --ssl-cipher-suites CIPHER1,CIPHER2...  | A list of SSL ciphers. 
link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites[Supported
 ciphers,window=_blank]. |
+| --ssl-protocol PROTOCOL1, PROTOCOL2... | A list of SSL protocols to try when 
connecting to the cluster. 
link:https://docs.oracle.com/en/java/javase/11/security/java-security-overview1.html#GUID-FCF419A7-B856-46DD-A36F-C6F88F9AF37F[Supported
 protocols,window=_blank]. | `TLS`
+| --ssl-cipher-suites CIPHER1,CIPHER2...  | A list of SSL ciphers. 
link:https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#jsse-cipher-suite-names[Supported
 ciphers,window=_blank]. |
 | --ssl-key-algorithm ALG | The SSL key algorithm. | `SunX509`
 | --keystore-type KEYSTORE_TYPE | The keystore type. | `JKS`
 | --keystore KEYSTORE_PATH | The path to the keystore. Specify a keystore to 
enable SSL for the control script.|
diff --git a/docs/_docs/tools/informatica.adoc 
b/docs/_docs/tools/informatica.adoc
index 93c95ec2790..c0a098a6a99 100644
--- a/docs/_docs/tools/informatica.adoc
+++ b/docs/_docs/tools/informatica.adoc
@@ -270,7 +270,7 @@ automake (GNU automake) 1.16.1
 OpenSSL 1.0.0c 2 Dec 2010
 6. g++ --version
 g++ (SUSE Linux) 5.5.0 20171010 [gcc-5-branch revision 253640]
-7. JDK 1.8
+7. JDK 11
 ----
 --
 
diff --git a/examples/README.md b/examples/README.md
index 2aef28e60d3..fb560302c87 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -6,8 +6,8 @@ Instructions on how to start examples can be found in 
[README.txt](README.txt).
 
 How to start examples in the developer's environment, please see 
[DEVNOTES.txt](DEVNOTES.txt).
 
-## Running examples on JDK 9/10/11
-Ignite uses proprietary SDK APIs that are not available by default. See also 
[How to run Ignite on JDK 9,10 and 
11](https://ignite.apache.org/docs/latest/setup#running-ignite-with-java-11-or-later)
+## Running examples
+Ignite uses proprietary SDK APIs that are not available by default. See also 
[How to run 
Ignite](https://ignite.apache.org/docs/latest/setup#running-ignite-with-java-11-or-later)
 
 To set up local IDE to easier access to examples, it is possible to add 
following options as default for all applications
 
diff --git a/examples/pom-standalone-lgpl.xml b/examples/pom-standalone-lgpl.xml
index 6cc95816706..5027387e58a 100644
--- a/examples/pom-standalone-lgpl.xml
+++ b/examples/pom-standalone-lgpl.xml
@@ -27,8 +27,8 @@
     <modelVersion>4.0.0</modelVersion>
 
     <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
diff --git a/examples/pom-standalone.xml b/examples/pom-standalone.xml
index 6cc95816706..5027387e58a 100644
--- a/examples/pom-standalone.xml
+++ b/examples/pom-standalone.xml
@@ -27,8 +27,8 @@
     <modelVersion>4.0.0</modelVersion>
 
     <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
diff --git a/modules/checkstyle/pom.xml b/modules/checkstyle/pom.xml
index dc2f13d9c2a..179ce8ccf7a 100644
--- a/modules/checkstyle/pom.xml
+++ b/modules/checkstyle/pom.xml
@@ -37,8 +37,8 @@
     <version>${revision}</version>
 
     <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
         <maven.flatten.file.name>pom-installed.xml</maven.flatten.file.name>
         <revision>2.17.0-SNAPSHOT</revision>
         <checkstyle.puppycrawl.version>8.45</checkstyle.puppycrawl.version>
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSSLTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSSLTest.java
index ad422a3b93f..761d4744b8f 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSSLTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSSLTest.java
@@ -332,9 +332,7 @@ public class JdbcThinConnectionSSLTest extends 
JdbcThinAbstractSelfTest {
      * @throws Exception If failed.
      *
      * Note: Disabled cipher suite can be enabled via Java Security property 
"jdk.tls.disabledAlgorithms" or in
-     * &lt;JRE_8_HOME&gt;/lib/security/java.security file.
-     *
-     * Note: java.security file location may be changed for Java 9+ version
+     * &lt;JAVA_HOME&gt;/conf/security/java.security file.
      */
     @Test
     public void testDisabledCustomCipher() throws Exception {
@@ -373,9 +371,7 @@ public class JdbcThinConnectionSSLTest extends 
JdbcThinAbstractSelfTest {
      * @throws Exception If failed.
      *
      * Note: Disabled cipher suite can be enabled via Java Security property 
"jdk.tls.disabledAlgorithms" or in
-     * &lt;JRE_8_HOME&gt;/lib/security/java.security file.
-     *
-     * Note: java.security file location may be changed for Java 9+ version
+     * &lt;JAVA_HOME&gt;/conf/security/java.security file.
      */
     @Test
     public void testUnsupportedCustomCipher() throws Exception {
diff --git 
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
 
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
index dc06de7d0a7..0140a129683 100644
--- 
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
+++ 
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
@@ -108,7 +108,7 @@ public class PersistenceBasicCompatibilityTest extends 
IgnitePersistenceCompatib
             Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
                 
VER_2_12_0.compareTo(IgniteReleasedVersion.fromString(version)) < 0);
         }
-        else if (majorJavaVer > 8) {
+        else if (majorJavaVer == 11) {
             Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
                 VER_2_3_0.compareTo(IgniteReleasedVersion.fromString(version)) 
< 0);
         }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/plugin/IgniteLogInfoProviderImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/plugin/IgniteLogInfoProviderImpl.java
index fa840717ad7..c394b9af100 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/plugin/IgniteLogInfoProviderImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/plugin/IgniteLogInfoProviderImpl.java
@@ -275,7 +275,7 @@ public class IgniteLogInfoProviderImpl implements 
IgniteLogInfoProvider {
             sb.a("auth: 
").a(onOff(Boolean.getBoolean("com.sun.management.jmxremote.authenticate"))).a(",
 ");
 
             // By default, SSL is enabled, that's why additional check for 
null is needed.
-            // See 
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html
+            // See 
https://docs.oracle.com/en/java/javase/11/management/monitoring-and-management-using-jmx-technology.html
             sb.a("ssl: 
").a(onOff(Boolean.getBoolean("com.sun.management.jmxremote.ssl") ||
                 System.getProperty("com.sun.management.jmxremote.ssl") == 
null));
         }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformMemoryPool.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformMemoryPool.java
index 5ba1a9811c2..51b5b578be4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformMemoryPool.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformMemoryPool.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.internal.processors.platform.memory;
 
-import org.apache.ignite.internal.util.GridCleaner;
+import java.lang.ref.Cleaner;
 
 import static 
org.apache.ignite.internal.processors.platform.memory.PlatformMemoryUtils.POOL_HDR_OFF_MEM_1;
 import static 
org.apache.ignite.internal.processors.platform.memory.PlatformMemoryUtils.POOL_HDR_OFF_MEM_2;
@@ -35,6 +35,9 @@ public class PlatformMemoryPool {
     /** base pointer. */
     private final long poolPtr;
 
+    /** Cleaner instance. */
+    private static final Cleaner cleaner = Cleaner.create();
+
     /** First pooled memory chunk. */
     private PlatformPooledMemory mem1;
 
@@ -50,7 +53,7 @@ public class PlatformMemoryPool {
     public PlatformMemoryPool() {
         poolPtr = allocatePool();
 
-        GridCleaner.create(this, new CleanerRunnable(poolPtr));
+        cleaner.register(this, new CleanerRunnable(poolPtr));
     }
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestions.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestions.java
index fdbe35875fa..6776ba83d90 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestions.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestions.java
@@ -42,9 +42,6 @@ public class JvmConfigurationSuggestions {
     /** */
     private static final String SERVER = "-server";
 
-    /** */
-    private static final String USE_G1_GC = "-XX:+UseG1GC";
-
     /**
      * Checks JVM configurations and produces tuning suggestions.
      *
@@ -58,12 +55,6 @@ public class JvmConfigurationSuggestions {
         if (!U.jvmName().toLowerCase().contains("server"))
             suggestions.add("Enable server mode for JVM (add '" + SERVER + "' 
to JVM options)");
 
-        if (!"11".equals(U.jdkVersion()))
-            suggestions.add("Switch to the most recent 11 JVM version");
-
-        if (U.jdkVersion().equals("1.8") && !args.contains(USE_G1_GC))
-            suggestions.add("Enable G1 Garbage Collector (add '" + USE_G1_GC + 
"' to JVM options)");
-
         if (!anyStartWith(args, XMX) && !anyStartWith(args, MX))
             suggestions.add("Specify JVM heap max size (add '" + XMX + 
"<size>[g|G|m|M|k|K]' to JVM options)");
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
index 5922f1de997..a5ec0a85d1b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
@@ -21,8 +21,8 @@ package org.apache.ignite.internal.util;
  * initialization effects.
  */
 public class FeatureChecker {
-    /** Required Options to Run on Java 9, 10, 11. */
-    public static final String JAVA_9_10_11_OPTIONS = 
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED\n" +
+    /** Required Options to Run on Java 11. */
+    public static final String JAVA_11_OPTIONS = 
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED\n" +
         "--add-exports=java.base/sun.nio.ch=ALL-UNNAMED\n" +
         "--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED\n" +
         "--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED\n" 
+
@@ -57,7 +57,7 @@ public class FeatureChecker {
     /** Java version specific warning to be added in case access failed */
     public static final String JAVA_VER_SPECIFIC_WARN =
         "\nPlease add the following parameters to JVM startup settings and 
restart the application: {parameters: " +
-            JAVA_9_10_11_OPTIONS +
+            JAVA_11_OPTIONS +
             "\n}" +
-            "\nSee 
https://apacheignite.readme.io/docs/getting-started#section-running-ignite-with-java-9-10-11
 for more information.";
+            "\nSee 
https://ignite.apache.org/docs/latest/quick-start/java#running-ignite-with-java-11-or-later
 for more information.";
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCleaner.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCleaner.java
deleted file mode 100644
index 785cc55b954..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCleaner.java
+++ /dev/null
@@ -1,99 +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.
- */
-
-package org.apache.ignite.internal.util;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import org.apache.ignite.IgniteException;
-
-/**
- * The facade for Cleaner classes for compatibility between java 8 and 9.
- */
-public class GridCleaner {
-    /** Pre-java9 cleaner class name. */
-    private static final String PRE_JAVA9_CLEANER_CLASS_NAME = 
"sun.misc.Cleaner";
-
-    /** Java9 cleaner class name. */
-    private static final String JAVA9_CLEANER_CLASS_NAME = 
"java.lang.ref.Cleaner";
-
-    /** Cleaner class. */
-    private static final Class<?> cls;
-
-    /** Cleaner object. */
-    private static final Object instance;
-
-    /** Cleaner register method. */
-    private static final Method initMtd;
-
-    static {
-        cls = findCleanerClass();
-
-        try {
-            String mtdName;
-
-            if (JAVA9_CLEANER_CLASS_NAME.equals(cls.getName())) {
-                instance = cls.getMethod("create").invoke(null);
-
-                mtdName = "register";
-            }
-            else {
-                instance = null;
-
-                mtdName = "create";
-            }
-
-            initMtd = cls.getMethod(mtdName, Object.class, Runnable.class);
-        }
-        catch (ReflectiveOperationException e) {
-            throw new ExceptionInInitializerError(e);
-        }
-    }
-
-    /**
-     *
-     */
-    private static Class<?> findCleanerClass() {
-        String[] clsNames = {PRE_JAVA9_CLEANER_CLASS_NAME, 
JAVA9_CLEANER_CLASS_NAME};
-
-        ClassLoader clsLdr = ClassLoader.getSystemClassLoader();
-
-        for (String clsName : clsNames) {
-            try {
-                return Class.forName(clsName, true, clsLdr);
-            }
-            catch (ClassNotFoundException ignore) {
-                // ignored;
-            }
-        }
-
-        throw new IllegalStateException("None of cleaner classes found: " + 
Arrays.toString(clsNames));
-    }
-
-    /**
-     * @param obj Object.
-     * @param act Action.
-     */
-    public static Object create(Object obj, Runnable act) {
-        try {
-            return initMtd.invoke(instance, obj, act);
-        }
-        catch (ReflectiveOperationException e) {
-            throw new IgniteException(e);
-        }
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridUnsafe.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridUnsafe.java
index ce9476f4916..6d45be20303 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridUnsafe.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridUnsafe.java
@@ -124,10 +124,7 @@ public abstract class GridUnsafe {
     private static final boolean HAS_JAVA_NIO_ACCESS_MEMORY_SEGMENT_PARAM = 
majorJavaVersion(jdkVersion()) >= 19;
 
     /** Cleaner code for direct {@code java.nio.ByteBuffer}. */
-    private static final DirectBufferCleaner DIRECT_BUF_CLEANER =
-        majorJavaVersion(jdkVersion()) < 9
-            ? new ReflectiveDirectBufferCleaner()
-            : new UnsafeDirectBufferCleaner();
+    private static final DirectBufferCleaner DIRECT_BUF_CLEANER = new 
UnsafeDirectBufferCleaner();
 
     /** JavaNioAccess object. If {@code null} then {@link 
#NEW_DIRECT_BUF_CONSTRUCTOR} should be available. */
     @Nullable private static final Object JAVA_NIO_ACCESS_OBJ;
@@ -1684,9 +1681,6 @@ public abstract class GridUnsafe {
     @NotNull private static String getSharedSecretsPackage() {
         int javaVer = majorJavaVersion(jdkVersion());
 
-        if (javaVer < 9)
-            return "sun.misc";
-
         if (javaVer < 12)
             return "jdk.internal.misc";
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestionsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestionsTest.java
deleted file mode 100644
index 34971e61f53..00000000000
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/suggestions/JvmConfigurationSuggestionsTest.java
+++ /dev/null
@@ -1,86 +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.
- */
-
-package org.apache.ignite.internal.suggestions;
-
-import java.util.List;
-
-import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Test;
-
-import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.matchesPattern;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
-
-/**
- * Tests for {@link JvmConfigurationSuggestions}.
- */
-public class JvmConfigurationSuggestionsTest {
-    /***/
-    @Test
-    public void shouldSuggestJava11WhenNotRunOnJava11() {
-        try (JdkVersionForger ignored = withJdkVersion("1.8")) {
-            List<String> suggestions = 
JvmConfigurationSuggestions.getSuggestions();
-
-            assertThat(suggestions, hasItem("Switch to the most recent 11 JVM 
version"));
-        }
-    }
-
-    /***/
-    @Test
-    public void shouldNotSuggestJava11WhenRunOnJava11() {
-        try (JdkVersionForger ignored = withJdkVersion("11")) {
-            List<String> suggestions = 
JvmConfigurationSuggestions.getSuggestions();
-
-            assertThat(suggestions, not(hasItem(matchesPattern("Switch to the 
most recent .+"))));
-        }
-    }
-
-    /***/
-    @NotNull
-    private JdkVersionForger withJdkVersion(String jdkVersion) {
-        return new JdkVersionForger(jdkVersion);
-    }
-
-    /**
-     * Forges JDK version stored as {@code IgniteUtils#jdkVer}. Normally, we 
would just use
-     * {@code @WithSystemProperty} and be happy, but {@link IgniteUtils} 
caches values read from system properties
-     * on startup, so we have to resort to this dirty trick.
-     */
-    private static class JdkVersionForger implements AutoCloseable {
-        /** The JDK version we saw in the field when constructing, used to 
restore the original value. */
-        private final String oldVersion = IgniteUtils.jdkVersion();
-
-        /***/
-        private JdkVersionForger(String newVersion) {
-            setJdkVersion(newVersion);
-        }
-
-        /***/
-        private void setJdkVersion(String newVersion) {
-            GridTestUtils.setFieldValue(null, IgniteUtils.class, "jdkVer", 
newVersion);
-        }
-
-        /** {@inheritDoc} */
-        @Override public void close() {
-            setJdkVersion(oldVersion);
-        }
-    }
-}
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/util/GridCleanerTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/util/GridCleanerTest.java
deleted file mode 100644
index e024c7c88c8..00000000000
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/util/GridCleanerTest.java
+++ /dev/null
@@ -1,44 +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.
- */
-
-package org.apache.ignite.internal.util;
-
-import org.junit.Test;
-
-/**
- * Grid cleaner tests.
- */
-public class GridCleanerTest {
-    /**
-     * @throws Exception If failed.
-     */
-    @Test
-    public void testCreate() throws Exception {
-        Object cleaner = GridCleaner.create(this, new Runnable() {
-            @Override public void run() {
-                // no-op
-            }
-        });
-
-        assert cleaner != null;
-
-        String clsName = cleaner.getClass().getName();
-
-        assert clsName.equals("sun.misc.Cleaner")
-            || 
clsName.equals("jdk.internal.ref.CleanerImpl$PhantomCleanableRef");
-    }
-}
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite2.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite2.java
index f4fd9a08a55..a55c9198872 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite2.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite2.java
@@ -80,8 +80,6 @@ import 
org.apache.ignite.internal.processors.metastorage.DistributedMetaStorageT
 import 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageHistoryCacheTest;
 import 
org.apache.ignite.internal.processors.metastorage.persistence.DmsDataWriterWorkerTest;
 import 
org.apache.ignite.internal.processors.metastorage.persistence.InMemoryCachedDistributedMetaStorageBridgeTest;
-import org.apache.ignite.internal.suggestions.JvmConfigurationSuggestionsTest;
-import org.apache.ignite.internal.util.GridCleanerTest;
 import org.apache.ignite.internal.util.collection.BitSetIntSetTest;
 import org.apache.ignite.internal.util.collection.ImmutableIntSetTest;
 import org.apache.ignite.internal.util.collection.IntHashMapTest;
@@ -155,8 +153,6 @@ import org.junit.runners.Suite;
 
     IgniteRejectConnectOnNodeStopTest.class,
 
-    GridCleanerTest.class,
-
     ClassSetTest.class,
 
     // Basic failure handlers.
@@ -225,7 +221,6 @@ import org.junit.runners.Suite;
     RemoveAllDeadlockTest.class,
 
     NoopCheckpointSpiLoggingTest.class,
-    JvmConfigurationSuggestionsTest.class,
     ExponentialBackoffTest.class,
     ProgressSpeedCalculationTest.class,
 
diff --git 
a/modules/ducktests/src/main/java/org/apache/ignite/internal/ducktest/tests/dns_failure_test/BlockingNameService.java
 
b/modules/ducktests/src/main/java/org/apache/ignite/internal/ducktest/tests/dns_failure_test/BlockingNameService.java
index 8fd16a2297e..1b5d7a4d942 100644
--- 
a/modules/ducktests/src/main/java/org/apache/ignite/internal/ducktest/tests/dns_failure_test/BlockingNameService.java
+++ 
b/modules/ducktests/src/main/java/org/apache/ignite/internal/ducktest/tests/dns_failure_test/BlockingNameService.java
@@ -26,10 +26,8 @@ import java.net.UnknownHostException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.List;
 import java.util.Scanner;
 
-import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.startup.cmdline.CommandLineStartup;
 
@@ -71,27 +69,11 @@ public class BlockingNameService implements 
NameServiceHandler {
         System.out.println("Installed DnsBlocker as main NameService to JVM");
     }
 
-    /** Installs {@code BlockingNameService} as main {@code NameService} to 
JVM8. */
-    private static void installJdk8() throws Exception {
-        Field nameSrvcFld = InetAddress.class.getDeclaredField("nameServices");
-        nameSrvcFld.setAccessible(true);
-
-        nameSrvcCls = Class.forName("sun.net.spi.nameservice.NameService");
-
-        BlockingNameService blkNameSrvc = new 
BlockingNameService(((List)nameSrvcFld.get(InetAddress.class)).get(0));
-
-        nameSrvcFld.set(InetAddress.class, F.asList(
-            Proxy.newProxyInstance(InetAddress.class.getClassLoader(), new 
Class<?>[] { nameSrvcCls }, blkNameSrvc)
-        ));
-    }
-
     /** */
     public static void main(String[] args) throws Exception {
         String jdkVer = U.jdkVersion();
 
-        if ("1.8".equals(jdkVer))
-            installJdk8();
-        else if ("11".equals(jdkVer) || "17".equals(jdkVer))
+        if ("11".equals(jdkVer) || "17".equals(jdkVer))
             installJdk11();
         else
             throw new IllegalArgumentException("Unsupported JDK version: " + 
jdkVer);
diff --git a/modules/ducktests/tests/docker/Dockerfile 
b/modules/ducktests/tests/docker/Dockerfile
index 0b5ae552b4b..fb0aea03f1f 100644
--- a/modules/ducktests/tests/docker/Dockerfile
+++ b/modules/ducktests/tests/docker/Dockerfile
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ARG jdk_version=openjdk:8
+ARG jdk_version=openjdk:11
 FROM $jdk_version
 
 MAINTAINER Apache Ignite [email protected]
diff --git a/modules/ducktests/tests/docker/ducker-ignite 
b/modules/ducktests/tests/docker/ducker-ignite
index 4b8b589c6f6..8872f61dd19 100755
--- a/modules/ducktests/tests/docker/ducker-ignite
+++ b/modules/ducktests/tests/docker/ducker-ignite
@@ -42,7 +42,7 @@ docker_run_memory_limit="8000m"
 default_num_nodes=4
 
 # The default OpenJDK base image.
-default_jdk="openjdk:8"
+default_jdk="openjdk:11"
 
 # The default ducker-ignite image name.
 default_image_name="ducker-ignite"
diff --git a/modules/ducktests/tests/docker/run_tests.sh 
b/modules/ducktests/tests/docker/run_tests.sh
index fb8d3b92f59..d06215bdaad 100755
--- a/modules/ducktests/tests/docker/run_tests.sh
+++ b/modules/ducktests/tests/docker/run_tests.sh
@@ -24,7 +24,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-13}
 
 # Image name to run nodes
-JDK_VERSION="${JDK_VERSION:-8}"
+JDK_VERSION="${JDK_VERSION:-11}"
 IMAGE_PREFIX="ducker-ignite-openjdk"
 
 ###
@@ -79,7 +79,7 @@ The options are as follows:
     Subnet to assign nodes IP addresses, like --subnet 172.20.0.0/16
 
 --jdk
-    Set jdk version to build, default is 8
+    Set jdk version to build, default is 11
 
 --image
     Set custom docker image to run tests on.
diff --git a/modules/kubernetes/config/Dockerfile 
b/modules/kubernetes/config/Dockerfile
index f9202513791..c8ff40b04ba 100644
--- a/modules/kubernetes/config/Dockerfile
+++ b/modules/kubernetes/config/Dockerfile
@@ -16,7 +16,7 @@
 #
 
 # Use Java 8 image as default one.
-FROM openjdk:8
+FROM openjdk:11
 
 # Set Apache Ignite configuration file name.
 ARG IGNITE_CFG_XML="example-kube.xml"
diff --git a/modules/numa-allocator/README.md b/modules/numa-allocator/README.md
index 89abbc4e13f..5d5937a2508 100644
--- a/modules/numa-allocator/README.md
+++ b/modules/numa-allocator/README.md
@@ -17,11 +17,11 @@ $ sudo apt install numactl
 1. `RHEL` or `Cent OS`
 ```bash
 $ sudo yum groupinstall 'Development Tools'
-$ sudo yum install java-1.8.0-openjdk numactl-devel libstdc++-static
+$ sudo yum install java-11-openjdk numactl-devel libstdc++-static
 ```
 2. `Ubuntu` or `Debian`
 ```bash
-$ sudo apt install build-essential libnuma-dev openjdk-8-jdk
+$ sudo apt install build-essential libnuma-dev openjdk-11-jdk
 ```
 ## Usage
 ### Simple allocation strategy
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
index e30b0ab5dd5..1ea18c9cb80 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/JvmDll.cs
@@ -368,7 +368,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
             }
 
             var file = Shell.ExecuteSafe("/usr/bin/readlink", "-f 
/usr/bin/java", log: log);
-            // /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
+            // /usr/lib/jvm/java-11-openjdk-amd64/jre/bin/java
 
             if (string.IsNullOrWhiteSpace(file))
             {
@@ -384,7 +384,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
             log.Debug("/usr/bin/java resolved to '{0}'", file);
 
             var dir = Path.GetDirectoryName(file);
-            // /usr/lib/jvm/java-8-openjdk-amd64/jre/bin
+            // /usr/lib/jvm/java-11-openjdk-amd64/jre/bin
 
             if (dir == null)
             {
@@ -398,7 +398,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
                 yield break;
             }
 
-            // Predefined path: 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
+            // Predefined path: 
/usr/lib/jvm/java-11-openjdk-amd64/jre/lib/amd64/server/libjvm.so
             yield return new KeyValuePair<string, string>(javaExec,
                 Path.Combine(libFolder, "amd64", "server", FileJvmDll));
 
diff --git a/modules/platforms/dotnet/examples/README.md 
b/modules/platforms/dotnet/examples/README.md
index 394cb10275f..3d25a6335c7 100644
--- a/modules/platforms/dotnet/examples/README.md
+++ b/modules/platforms/dotnet/examples/README.md
@@ -7,7 +7,7 @@
 # Requirements
 
 * [.NET 6 SDK](https://dotnet.microsoft.com/download/dotnet-core)
-* [JDK 
8](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html) 
or [JDK 
11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
+* [JDK 
11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
 
 Windows, Linux, and macOS are supported.
 
diff --git a/modules/tools/pom.xml b/modules/tools/pom.xml
index c0db282de0a..d0060dd01ec 100644
--- a/modules/tools/pom.xml
+++ b/modules/tools/pom.xml
@@ -36,9 +36,9 @@
 
     <profiles>
         <profile>
-            <id>java-9+</id>
+            <id>java-11+</id>
             <activation>
-                <jdk>[1.9,15)</jdk>
+                <jdk>[11,15)</jdk>
             </activation>
             <properties>
                 <src.javaspecific.dir>src/main/java11</src.javaspecific.dir>
@@ -55,16 +55,6 @@
             </properties>
         </profile>
 
-        <profile>
-            <id>java-8</id>
-            <activation>
-                <jdk>1.8</jdk>
-            </activation>
-            <properties>
-                <src.javaspecific.dir>src/main/java8</src.javaspecific.dir>
-            </properties>
-        </profile>
-
         <profile>
             <!--
             This profile is used to provide a check that all tests are defined 
in at least one suite.
@@ -146,7 +136,6 @@
                 <artifactId>maven-checkstyle-plugin</artifactId>
                 <configuration>
                     <sourceDirectories combine.children="append">
-                        <sourceDirectory>src/main/java8</sourceDirectory>
                         <sourceDirectory>src/main/java11</sourceDirectory>
                         <sourceDirectory>src/main/java15</sourceDirectory>
                     </sourceDirectories>
diff --git 
a/modules/tools/src/main/java/org/apache/ignite/tools/ant/beautifier/GridJavadocAntTask.java
 
b/modules/tools/src/main/java/org/apache/ignite/tools/ant/beautifier/GridJavadocAntTask.java
index df4b0ad9d44..dfd5861802b 100644
--- 
a/modules/tools/src/main/java/org/apache/ignite/tools/ant/beautifier/GridJavadocAntTask.java
+++ 
b/modules/tools/src/main/java/org/apache/ignite/tools/ant/beautifier/GridJavadocAntTask.java
@@ -154,16 +154,12 @@ public class GridJavadocAntTask extends MatchingTask {
                             .configure(cfg -> cfg.setErrorLogEnabled(false))
             ).parse(fileContent);
 
-            String jdkVer = System.getProperty("java.specification.version");
-
-            boolean jdk11 = "11".equals(jdkVer);
-
-            if (!jdk11 && !"1.8".equals(jdkVer)) {
+            if 
(!"11".equals(System.getProperty("java.specification.version"))) {
                 throw new IllegalArgumentException("GridJavadocAntTask isn't 
tested for java versions after 11. " +
                     "Please check html rendering of documentation package 
groups works correctly and remove this exception then.");
             }
 
-            if (file.getName().equals(jdk11 ? "index.html" : 
"overview-summary.html")) {
+            if ("index.html".equals(file.getName())) {
                 // Try to find Other Packages section.
                 Jerry otherPackages =
                     doc.find("div.contentContainer table.overviewSummary 
caption span:contains('Other Packages')");
@@ -177,23 +173,21 @@ public class GridJavadocAntTask extends MatchingTask {
                         "<configuration> / <groups>");
                 }
 
-                if (jdk11) {
-                    int pkgGrps = doc.find("div.contentContainer 
table.overviewSummary caption span.tableTab").size();
-
-                    if (pkgGrps == 0) {
-                        throw new IllegalArgumentException("Documentation 
package groups missed. Please add packages " +
-                            "description to parent/pom.xml into 
<plugin>(maven-javadoc-plugin) / " +
-                            "<configuration> / <groups>");
-                    }
-
-                    // This limit is set for JDK11. Each group is represented 
as a tab. Tabs are enumerated with a number 2^N
-                    // where N is a sequential number for a tab. For 32 tabs 
(+ the "All Packages" tab) the number is overflowed
-                    // and the tabulation becomes broken. See var data in 
"index.html".
-                    if (pkgGrps > 30) {
-                        throw new IllegalArgumentException("Too many package 
groups: " + pkgGrps + ". The limit"
-                            + " is 30 due to the javadoc limitations. Please 
reduce groups in parent/pom.xml"
-                            + " inside <plugin>(maven-javadoc-plugin) / 
<configuration> / <groups>");
-                    }
+                int pkgGrps = doc.find("div.contentContainer 
table.overviewSummary caption span.tableTab").size();
+
+                if (pkgGrps == 0) {
+                    throw new IllegalArgumentException("Documentation package 
groups missed. Please add packages " +
+                        "description to parent/pom.xml into 
<plugin>(maven-javadoc-plugin) / " +
+                        "<configuration> / <groups>");
+                }
+
+                // This limit is set for JDK11. Each group is represented as a 
tab. Tabs are enumerated with a number 2^N
+                // where N is a sequential number for a tab. For 32 tabs (+ 
the "All Packages" tab) the number is overflowed
+                // and the tabulation becomes broken. See var data in 
"index.html".
+                if (pkgGrps > 30) {
+                    throw new IllegalArgumentException("Too many package 
groups: " + pkgGrps + ". The limit"
+                        + " is 30 due to the javadoc limitations. Please 
reduce groups in parent/pom.xml"
+                        + " inside <plugin>(maven-javadoc-plugin) / 
<configuration> / <groups>");
                 }
             }
             else if (!isViewHtml(file)) {
diff --git 
a/modules/tools/src/main/java8/org/apache/ignite/tools/javadoc/IgniteLinkTaglet.java
 
b/modules/tools/src/main/java8/org/apache/ignite/tools/javadoc/IgniteLinkTaglet.java
deleted file mode 100644
index 805f2614eae..00000000000
--- 
a/modules/tools/src/main/java8/org/apache/ignite/tools/javadoc/IgniteLinkTaglet.java
+++ /dev/null
@@ -1,164 +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.
- */
-
-package org.apache.ignite.tools.javadoc;
-
-import java.io.File;
-import java.util.Map;
-import com.sun.javadoc.Tag;
-import com.sun.tools.doclets.Taglet;
-
-/**
- * Represents {@ignitelink Class} tag. This tag can
- * be used as replacement of {@link Class} tag that references to the Ignite 
class that is not in classpath.
- * Class and its arguments should have fully qualified names.
- */
-public class IgniteLinkTaglet implements Taglet {
-    /** */
-    private static final String NAME = "ignitelink";
-
-    /**
-     * Return the name of this custom tag.
-     */
-    @Override public String getName() {
-        return NAME;
-    }
-
-    /**
-     * @return true since this tag can be used in a field doc comment.
-     */
-    @Override public boolean inField() {
-        return true;
-    }
-
-    /**
-     * @return true since this tag can be used in a constructor doc comment.
-     */
-    @Override public boolean inConstructor() {
-        return true;
-    }
-
-    /**
-     * @return true since this tag can be used in a method doc comment.
-     */
-    @Override public boolean inMethod() {
-        return true;
-    }
-
-    /**
-     * @return true since this tag can be used in an overview doc comment.
-     */
-    @Override public boolean inOverview() {
-        return true;
-    }
-
-    /**
-     * @return true since this tag can be used in a package doc comment.
-     */
-    @Override public boolean inPackage() {
-        return true;
-    }
-
-    /**
-     * @return true since this.
-     */
-    @Override public boolean inType() {
-        return true;
-    }
-
-    /**
-     * Will return true since this is an inline tag.
-     *
-     * @return true since this is an inline tag.
-     */
-    @Override public boolean isInlineTag() {
-        return true;
-    }
-
-    /**
-     * Register this Taglet.
-     *
-     * @param tagletMap the map to register this tag to.
-     */
-    public static void register(Map<String, IgniteLinkTaglet> tagletMap) {
-        IgniteLinkTaglet tag = new IgniteLinkTaglet();
-
-        Taglet t = tagletMap.get(tag.getName());
-
-        if (t != null)
-            tagletMap.remove(tag.getName());
-
-        tagletMap.put(tag.getName(), tag);
-    }
-
-    /**
-     * Given the <code>Tag</code> representation of this custom tag, return 
its string representation.
-     * <p>
-     * Input: 
org.apache.ignite.grid.spi.indexing.h2.GridH2IndexingSpi#setIndexCustomFunctionClasses(Class[])
-     * <p>
-     * Output: <a 
href="../../../../../org/apache/ignite/grid/spi/indexing/h2/GridH2IndexingSpi.html#
-     * setIndexCustomFunctionClasses(java.lang.Class...)">
-     * 
<code>GridH2IndexingSpi.setIndexCustomFunctionClasses(java.lang.Class[])</code></a>
-     *
-     * @param tag <code>Tag</code> representation of this custom tag.
-     */
-    @Override public String toString(Tag tag) {
-        if (tag.text() == null || tag.text().isEmpty())
-            return "";
-
-        File f = tag.position().file();
-
-        String curCls = f == null ? "" : 
f.getAbsolutePath().replace(File.separator, ".");
-
-        String packPref = "src.main.java.";
-
-        int idx = curCls.indexOf(packPref);
-
-        StringBuilder path = new StringBuilder();
-
-        if (idx != -1) {
-            curCls = curCls.substring(idx + packPref.length());
-
-            for (int i = 0, n = curCls.split("\\.").length - 2; i < n; i++)
-                path.append("../");
-        }
-
-        String[] tokens = tag.text().split("#");
-
-        int lastIdx = tokens[0].lastIndexOf('.');
-
-        String simpleClsName = lastIdx != -1 && lastIdx + 1 < 
tokens[0].length() ?
-            tokens[0].substring(lastIdx + 1) : tokens[0];
-
-        String fullyQClsName = tokens[0].replace(".", "/");
-
-        return "<a href=\"" + path.toString() + fullyQClsName + ".html" +
-            (tokens.length > 1 ? ("#" + tokens[1].replace("[]", "...")) : "") +
-            "\"><code>" + simpleClsName + (tokens.length > 1 ? ("." + 
tokens[1]) : "") + "</code></a>";
-    }
-
-    /**
-     * This method should not be called since arrays of inline tags do not
-     * exist.  Method {@link #toString(Tag)} should be used to convert this
-     * inline tag to a string.
-     *
-     * @param tags the array of <code>Tag</code>s representing of this custom 
tag.
-     */
-    @Override public String toString(Tag[] tags) {
-        return null;
-    }
-}
diff --git a/packaging/deb/control b/packaging/deb/control
index 0c258f8ab9f..0201cd36358 100644
--- a/packaging/deb/control
+++ b/packaging/deb/control
@@ -8,7 +8,7 @@ Package: apache-ignite
 Architecture: all
 Section: misc
 Priority: optional
-Depends: openjdk-8-jdk | openjdk-11-jdk | default-jdk | java-sdk, systemd, 
passwd
+Depends: openjdk-11-jdk | default-jdk | java-sdk, systemd, passwd
 Description: Apache Ignite In-Memory Computing, Database and Caching Platform
  Ignite™ is a memory-centric distributed database, caching, and processing
  platform for transactional, analytical, and streaming workloads, delivering
diff --git a/packaging/rpm/apache-ignite.spec b/packaging/rpm/apache-ignite.spec
index 4d854aa21a5..98fc8de2122 100644
--- a/packaging/rpm/apache-ignite.spec
+++ b/packaging/rpm/apache-ignite.spec
@@ -19,7 +19,7 @@ Group:            Development/System
 License:          ASL 2.0
 URL:              https://ignite.apache.org/
 Source:           %{name}-%{version}-bin.zip
-Requires:         java-1.8.0, chkconfig
+Requires:         java-11, chkconfig
 Requires(pre):    shadow-utils
 Provides:         %{name}
 AutoReq:          no
@@ -45,7 +45,7 @@ in-memory speeds at petabyte scale
 #
 # Preinstall scripts
 # $1 can be:
-#     1 - Initial install 
+#     1 - Initial install
 #     2 - Upgrade
 #
 
diff --git a/parent/pom.xml b/parent/pom.xml
index 3a6b8ad7b3e..ae30cf139a7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -46,8 +46,8 @@
     <packaging>pom</packaging>
 
     <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
 
         <revision>2.17.0-SNAPSHOT</revision>
         <!-- Ignite version will be substituted with the flatten-maven-plugin 
and used as
@@ -671,7 +671,7 @@
                         <phase>validate</phase>
                         <configuration>
                             <name>ignite.buildNumber</name>
-                            <!-- See: 
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html -->
+                            <!-- See: 
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html
 -->
                             <pattern>yywwu</pattern>
                         </configuration>
                     </execution>
@@ -908,12 +908,12 @@
         </profile>
 
         <profile>
-            <id>java-9+</id>
+            <id>java-11+</id>
             <activation>
-                <jdk>[1.9,15)</jdk>
+                <jdk>[11,15)</jdk>
             </activation>
             <properties>
-                <maven.compiler.source>1.8</maven.compiler.source>
+                <maven.compiler.source>11</maven.compiler.source>
                 <maven.compiler.target>11</maven.compiler.target>
             </properties>
             <dependencies/>
@@ -1004,7 +1004,7 @@
                 <jdk>[15,)</jdk>
             </activation>
             <properties>
-                <maven.compiler.source>1.8</maven.compiler.source>
+                <maven.compiler.source>11</maven.compiler.source>
                 <maven.compiler.target>15</maven.compiler.target>
                 <scala.library.version>2.12.15</scala.library.version>
             </properties>

Reply via email to