From 09c3f810dda7efaf1510ac062454d978d90a0741 Mon Sep 17 00:00:00 2001
From: Vladimir Sitnikov
Date: Thu, 4 Jan 2024 21:58:22 +0300
Subject: [PATCH] change: use Java 17 as the build target, require Java 17+ for
execution
---
.github/workflows/matrix.js | 21 ----
CONTRIBUTING.md | 2 +-
README.md | 2 +-
build-logic/build-parameters/build.gradle.kts | 2 +-
.../main/kotlin/build-logic.java.gradle.kts | 11 +-
.../main/kotlin/build-logic.kotlin.gradle.kts | 14 +--
src/release/build.gradle.kts | 2 +-
xdocs/building.xml | 2 +-
xdocs/changes.xml | 116 +-----------------
xdocs/download_jmeter.xml | 2 +-
xdocs/usermanual/get-started.xml | 2 +-
11 files changed, 17 insertions(+), 159 deletions(-)
diff --git a/.github/workflows/matrix.js b/.github/workflows/matrix.js
index bf22ef42a55..ba4364eb1f0 100644
--- a/.github/workflows/matrix.js
+++ b/.github/workflows/matrix.js
@@ -26,8 +26,6 @@ matrix.addAxis({
name: 'java_version',
// Strings allow versions like 18-ea
values: [
- '8',
- '11',
'17',
'21',
eaJava,
@@ -80,12 +78,6 @@ matrix.setNamePattern(['java_version', 'java_distribution', 'hash', 'os', 'tz',
// Semeru uses OpenJ9 jit which has no option for making hash codes the same
matrix.exclude({java_distribution: {value: 'semeru'}, hash: {value: 'same'}});
-// Semeru 8 fails when Semeru 17 is on the PATH (we use 17 for build)
-matrix.exclude({java_distribution: {value: 'semeru'}, java_version: '8'});
-// Microsoft Java has no distribution for 8
-matrix.exclude({java_distribution: {value: 'microsoft'}, java_version: '8'});
-// Oracle JDK is only supported for JDK 17 and later
-matrix.exclude({java_distribution: {value: 'oracle'}, java_version: ['8', '11']});
// Ignore builds with JAVA EA for now, see https://github.com/apache/jmeter/issues/6114
matrix.exclude({java_version: eaJava})
matrix.imply({java_version: eaJava}, {java_distribution: {value: 'oracle'}})
@@ -97,10 +89,6 @@ matrix.generateRow({hash: {value: 'same'}});
matrix.generateRow({os: 'windows-latest'});
// TODO: un-comment when xvfb will be possible
// matrix.generateRow({os: 'ubuntu-latest'});
-// Ensure there will be at least one job with Java 8
-matrix.generateRow({java_version: "8"});
-// Ensure there will be at least one job with Java 11
-matrix.generateRow({java_version: "11"});
// Ensure there will be at least one job with Java 17
matrix.generateRow({java_version: "17"});
// Ensure there will be at least one job with Java 21
@@ -119,15 +107,6 @@ include.forEach(v => {
`-Duser.country=${v.locale.country}`,
`-Duser.language=${v.locale.language}`,
];
- if (v.hash.value === 'same' && v.java_version <= 8) {
- // processSiteXslt fails with VerifyError when running with Java 8 and the same hashcode
- // Skip the task in that case
- //java.lang.VerifyError: (class: website_style, method: issue_separator signature: (Lcom/sun/org/apache/xala...)
- // Illegal target of jump or branch
- gradleArgs.push('-x :src:dist:processSiteXslt');
- // javadoc tool seems take too much CPU when there are many hash collisions
- gradleArgs.push('-x :src:dist:javadocAggregate');
- }
v.extraGradleArgs = gradleArgs.join(' ');
});
include.forEach(v => {
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2c8ca1f6e46..94ac90745a9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -54,7 +54,7 @@ The steps to import the sources (based on Eclipse 2019-06) into Eclipse are as f
1. Install `Eclipse IDE for Java Developers`
1. Install `Kotlin for Eclipse` plugin (JMeter code uses Java and Kotlin)
-1. Make sure you have a Java 8 compatible JDK configured in your workspace
+1. Make sure you have a Java 17 compatible JDK configured in your workspace
1. Open `File->Import...`
1. Select `Existing Gradle Project` and click `Next`
1. Read `How to experience the best Gradle integration` and click `Next`
diff --git a/README.md b/README.md
index 711bc5f9b95..f8d4fb5ead0 100644
--- a/README.md
+++ b/README.md
@@ -92,7 +92,7 @@ The following requirements exist for running Apache JMeter:
- Java Interpreter:
- A fully compliant Java 8 Runtime Environment is required
+ A fully compliant Java 17 Runtime Environment is required
for Apache JMeter to execute. A JDK with `keytool` utility is better suited
for Recording HTTPS websites.
diff --git a/build-logic/build-parameters/build.gradle.kts b/build-logic/build-parameters/build.gradle.kts
index 32db188ef63..5c83b3d0cf3 100644
--- a/build-logic/build-parameters/build.gradle.kts
+++ b/build-logic/build-parameters/build.gradle.kts
@@ -38,7 +38,7 @@ buildParameters {
description.set("Collect test coverage")
}
integer("targetJavaVersion") {
- defaultValue.set(8)
+ defaultValue.set(17)
mandatory.set(true)
description.set("Java version for source and target compatibility")
}
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts b/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts
index 08f5c67f60e..53786ede3b9 100644
--- a/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts
+++ b/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts
@@ -42,14 +42,9 @@ java {
}
tasks.configureEach {
- // Use --release=8 for Java 10+ so the generated bytecode does not include methods introduced in Java 9+
- options.release.set(
- provider {
- buildParameters.targetJavaVersion.takeIf {
- javaCompiler.get().metadata.languageVersion.asInt() > 9
- }
- }
- )
+ // Use --release= for javac so the generated bytecode does not include methods introduced in
+ // next Java releases
+ options.release.set(buildParameters.targetJavaVersion)
}
tasks.configureEach {
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts b/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts
index ca509a7c337..bc2591ad1ff 100644
--- a/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts
+++ b/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts
@@ -48,18 +48,8 @@ tasks.configureEach {
apiVersion = "kotlin.api".v
}
freeCompilerArgs += "-Xjvm-default=all"
- val jdkRelease = buildParameters.targetJavaVersion.let {
- when {
- it < 9 -> "1.8"
- else -> it.toString()
- }
- }
- // jdk-release requires Java 9+
- buildParameters.buildJdkVersion
- .takeIf { it > 8 }
- ?.let {
- freeCompilerArgs += "-Xjdk-release=$jdkRelease"
- }
+ val jdkRelease = buildParameters.targetJavaVersion.toString()
+ freeCompilerArgs += "-Xjdk-release=$jdkRelease"
kotlinOptions.jvmTarget = jdkRelease
}
}
diff --git a/src/release/build.gradle.kts b/src/release/build.gradle.kts
index 55291997d36..f7cfe4861c3 100644
--- a/src/release/build.gradle.kts
+++ b/src/release/build.gradle.kts
@@ -68,7 +68,7 @@ https://www.apache.org/dist/$tlpUrl/KEYS
N.B.
To create the distribution and test $tlp: "./gradlew build -Prelease -PskipSign".
-$tlp $version requires Java 8 or later to run.
+$tlp $version requires Java 17 or later to run.
The artifacts were built with
${"java.runtime.name".prop} ${"java.vendor".prop} (build ${"java.runtime.version".prop})
diff --git a/xdocs/building.xml b/xdocs/building.xml
index a42ee2af9d6..c01dcd9ff1a 100644
--- a/xdocs/building.xml
+++ b/xdocs/building.xml
@@ -29,7 +29,7 @@
Before you can compile JMeter, you will need a few things:
-- a Java 8 compatible JDK (Java Development Kit)
+- a Java 17 compatible JDK (Java Development Kit)
- Optional: Gradle installation
- the JMeter sources as shown in the next section
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index d07120f1553..bf3d4336718 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -47,14 +47,12 @@ Earlier changes are detailed in the History of Pr
-JMeter 5.6.x requires Java 8 or later for execution (Java 17 or later recommended).
-
-The next major release would require Java 17 or later.
+JMeter 6.x requires Java 17 or later for execution (Java 21 is recommended).
-
+
-Version 5.6.3
+Version 6.0.0
Summary
@@ -62,95 +60,10 @@ Summary
Bug fixes
- Improvements
+ Changes
General
- - 6199Enable use of
${...}
expressions for TransactionController
"generate parent sample", and "include timers" checkboxes
- - 6199Enable use of
${...}
expressions for ThreadGroupGui
"scheduler" checkbox
- - 6199Enable use of
${...}
expressions for HTTP Request
"retrieve embedded resources", "download resources concurrently", and "store as MD5" checkboxes
-
-
-
-
-Bug fixes
-
-General
-
- - 60436044JMeter 5.6 shows 0 as a min response time in summary report
- - Restored binary API compatibility with pre-5.6.2: restore public methods to non-static as they were before 5.6.2
JavaSamplerContext.getJMeterVariables
,
- JavaSamplerContext.getJMeterProperties
, BoundaryExtractor.extractAll
,
- AuthManager.setupCredentials
, HttpRequestHdr.getMultipartConfig
, (regression since 5.6.2)
- - 61656192The Constant Throughput Timer is throwing a NullPointerException when using variables (vars.get) in "Target Throughput"-field
- - 6162The Constant Timer is throwing a NullPointerException when using variables (vars.get) in "delay"-field
- - 6193Log errors happening while JMeter starts the test (previously, errors from TestStateListener.testStarted were not logged)
- - 6216Pass JDBCSampler.maxRows to Statement.setMaxRows so the driver does not fetch extra rows from the database
-
-
-Non-functional changes
-
- - 6166Use Gradle to 8.5 for building JMeter
- - Require Java 17 for building JMeter
- - 6199Improved API for programmatic test plan creation, see default implementations of
createTestElement
, modifyTestElement
,
- and new makeTestElement
and assignDefaultValues
methods in JMeterGUIComponent
.
- AbstractJMeterGuiComponent.configureTestElement
is now discouraged
- - 6212Refactor: migrate existing Groovy tests to Kotlin, remove Groovy compiler from the build pipeline
- - 6214Refactor JUnit 3 and JUnit 4 tests to JUnit 5, remove JUnit 4 test dependency
-
-
- Dependency upgrades
-
- - Update com.fasterxml.jackson.core:jackson-annotations to 2.16.1 (was 2.15.2)
- - Update com.fasterxml.jackson.core:jackson-core to 2.16.1 (was 2.15.2)
- - Update com.fasterxml.jackson.core:jackson-databind to 2.16.1 (was 2.15.2)
- - Update com.fifesoft:rsyntaxtextarea to 3.3.4 (was 3.3.3)
- - Update com.google.errorprone:error_prone_annotations to 2.24.0 (was 2.20.0)
- - Update commons-codec:commons-codec to 1.16.0 (was 1.15)
- - Update commons-io:commons-io to 2.15.1 (was 2.12.0)
- - Update commons-logging:commons-logging to 1.3.0 (was 1.2)
- - Update commons-net:commons-net to 3.9.0 (was 3.10.0)
- - Update io.burt:jmespath-core to 0.6.0 (was 0.5.1)
- - Update io.burt:jmespath-jackson to 0.6.0 (was 0.5.1)
- - Update net.minidev:accessors-smart to 2.5.0 (was 2.4.11)
- - Update net.minidev:json-smart to 2.5.0 (was 2.4.11)
- - Update net.sf.saxon:Saxon-HE to 11.6 (was 11.5)
- - Update org.apache.commons:commons-lang3 to 3.14.0 (was 3.12.0)
- - Update org.apache.commons:commons-pool2 to 2.12.0 (was 2.11.1)
- - Update org.apache.commons:commons-text to 1.11.0 (was 1.10.0)
- - Update org.apache.httpcomponents.client5:httpclient5 to 5.3 (was 5.2.1)
- - Update org.apache.httpcomponents.core5:httpcore5-h2 to 5.2.4 (was 5.2)
- - Update org.apache.httpcomponents.core5:httpcore5 to 5.2.4 (was 5.2)
- - Update org.apache.logging.log4j:log4j-1.2-api to 2.22.1 (was 2.20.0)
- - Update org.apache.logging.log4j:log4j-api to 2.22.1 (was 2.20.0)
- - Update org.apache.logging.log4j:log4j-core to 2.22.1 (was 2.20.0)
- - Update org.apache.logging.log4j:log4j-slf4j-impl to 2.22.1 (was 2.20.0)
- - Update org.apache.xmlgraphics:xmlgraphics-commons to 2.9 (was 2.8)
- - Update org.checkerframework:checker-qual to 3.42.0 (was 3.35.0)
- - Update org.codehaus.groovy:groovy-datetime to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-dateutil to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-jmx to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-json to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-jsr223 to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-sql to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-templates to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy-xml to 3.0.20 (was 3.0.17)
- - Update org.codehaus.groovy:groovy to 3.0.20 (was 3.0.17)
- - Remove org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22
- - Update org.jetbrains.kotlin:kotlin-stdlib-jdk7 to 1.9.10 (was 1.8.22)
- - Update org.jetbrains.kotlin:kotlin-stdlib-jdk8 to 1.9.10 (was 1.8.22)
- - Update org.jetbrains.kotlin:kotlin-stdlib to 1.9.22 (was 1.8.22)
- - Update org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm to 1.7.3 (was 1.7.1)
- - Update org.jetbrains.kotlinx:kotlinx-coroutines-swing to 1.7.3 (was 1.7.1)
- - Update org.jetbrains.lets-plot:base-portable-jvm to 4.1.0 (was 3.2.0)
- - Update org.jetbrains.lets-plot:lets-plot-common to 4.1.0 (was 3.2.0)
- - Update org.jetbrains.lets-plot:lets-plot-kotlin-jvm to 4.5.0 (was 4.4.1)
- - Update org.jetbrains.lets-plot:plot-common-portable-jvm to 4.1.0 (was 3.2.0)
- - Update org.jetbrains:annotations to 24.1.0 (was 24.0.1)
- - Update org.jsoup:jsoup to 1.17.1 (was 1.16.1)
- - Update org.mongodb:mongo-java-driver to 2.14.3 (was 2.11.3)
- - Update org.neo4j.driver:neo4j-java-driver to 4.4.13 (was 4.4.11)
- - Update org.ow2.asm:asm to 9.6 (was 9.5)
- - Update org.xmlresolver:xmlresolver to 5.2.1 (was 4.6.4)
- - Update org.xmlresolver:xmlresolver:data to 5.2.1 (was 4.6.4)
+ - 6220 Require Java 17 or later for running JMeter
@@ -203,25 +116,6 @@ This property is in this file:
See 56357 for details.
-
-Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
-This is due to a known Java bug, see Bug JDK-8065373
-The fix is to use JDK8_u45 or later.
-
-
-
-View Results Tree may fail to display some HTML code under HTML renderer, see 54586.
-This is due to a known Java bug which fails to parse "px
" units in row/col attributes.
-See Bug JDK-8031109
-The fix is to use JDK9 b65 or later.
-
-
-
-JTable selection with keyboard (SHIFTup/down) is totally unusable with Java 7 on Mac OSX.
-This is due to a known Java bug JDK-8025126
-The fix is to use JDK 8 b132 or later.
-
-
Since Java 11 the JavaScript implementation Nashorn has been deprecated.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
diff --git a/xdocs/download_jmeter.xml b/xdocs/download_jmeter.xml
index ff0a7d07088..cb214fd35d4 100644
--- a/xdocs/download_jmeter.xml
+++ b/xdocs/download_jmeter.xml
@@ -78,7 +78,7 @@
KEYS
-
+
diff --git a/xdocs/usermanual/get-started.xml b/xdocs/usermanual/get-started.xml
index 9446ef63ac6..015d8e6d32a 100644
--- a/xdocs/usermanual/get-started.xml
+++ b/xdocs/usermanual/get-started.xml
@@ -115,7 +115,7 @@ over your Test Plans.
JMeter requires that your computing environment meets some minimum requirements.
-JMeter is compatible with Java 8 or higher.
+JMeter is compatible with Java 17 or higher.
We highly advise you to install latest minor version of your major version for security and performance reasons.
Because JMeter uses only standard Java APIs, please do not file bug reports if your JRE fails to run