// Copyright (C) 2024 Gradle, Inc.
//
// Licensed under the Creative Commons Attribution-Noncommercial-ShareAlike 4.0 International License.;
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      https://creativecommons.org/licenses/by-nc-sa/4.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.

[[compatibility]]
= Compatibility Matrix

The sections below describe Gradle's compatibility with several integrations.
Versions not listed here may or may not work.

[[java_runtime]]
== Java Runtime

Gradle runs on the Java Virtual Machine (JVM), which is often provided by either a JDK or JRE.
A JVM version between 17 and 27 is required to execute Gradle.
JVM 28 and later versions are not yet supported.

The Gradle wrapper, Gradle client, Tooling API client, and TestKit client are compatible with JVM 8.

JDK 6 and above can be used for <<building_java_projects.adoc#sec:java_cross_compilation,compilation>>.
JVM 8 and above can be used for executing tests.

Any fully supported version of Java can be used for compilation or testing.
However, the latest Java version may only be supported for compilation or testing, not for running Gradle.
Support is achieved using <<toolchains#toolchains,toolchains>> and applies to all tasks supporting toolchains.

See the table below for the Java version supported by a specific Gradle release:

.Java Compatibility
|===
|Java version | Support for toolchains | Support for running Gradle

| 8 | N/A | 2.0 to 8.14.x
| 9 | N/A | 4.3 to 8.14.x
| 10| N/A | 4.7 to 8.14.x
| 11| N/A | 5.0 to 8.14.x
| 12| N/A | 5.4 to 8.14.x
| 13| N/A | 6.0 to 8.14.x
| 14| N/A | 6.3 to 8.14.x
| 15| 6.7 | 6.7 to 8.14.x
| 16| 7.0 | 7.0 to 8.14.x
| 17| 7.3 | 7.3 and after
| 18| 7.5 | 7.5 and after
| 19| 7.6 | 7.6 and after
| 20| 8.1 | 8.3 and after
| 21| 8.4 | 8.5 and after
| 22| 8.7 | 8.8 and after
| 23| 8.10 | 8.10 and after
| 24| 8.14 | 8.14 and after
| 25| 9.1.0 | 9.1.0 and after
| 26| 9.4.0 | 9.4.0 and after
| 27| 9.8.0 | 9.8.0 and after
|===

NOTE: We only list versions in the table above once we have tested that they work without any warnings.
However, thanks to the toolchain support, Gradle will often work with the latest Java version before then.
We encourage users to try it out and let us know.

[[kotlin]]
== Kotlin

Gradle is tested with Kotlin 2.0.0 through 2.4.20-Beta1.
Beta and RC versions may or may not work.

.Embedded Kotlin version
|===
| Embedded Kotlin version | Minimum Gradle version | Kotlin Language version

| 1.3.10 | 5.0 | 1.3
| 1.3.11 | 5.1 | 1.3
| 1.3.20 | 5.2 | 1.3
| 1.3.21 | 5.3 | 1.3
| 1.3.31 | 5.5 | 1.3
| 1.3.41 | 5.6 | 1.3
| 1.3.50 | 6.0 | 1.3
| 1.3.61 | 6.1 | 1.3
| 1.3.70 | 6.3 | 1.3
| 1.3.71 | 6.4 | 1.3
| 1.3.72 | 6.5 | 1.3
| 1.4.20 | 6.8 | 1.3
| 1.4.31 | 7.0 | 1.4
| 1.5.21 | 7.2 | 1.4
| 1.5.31 | 7.3 | 1.4
| 1.6.21 | 7.5 | 1.4
| 1.7.10 | 7.6 | 1.4
| 1.8.10 | 8.0 | 1.8
| 1.8.20 | 8.2 | 1.8
| 1.9.0  | 8.3 | 1.8
| 1.9.10 | 8.4 | 1.8
| 1.9.20 | 8.5 | 1.8
| 1.9.22 | 8.7 | 1.8
| 1.9.23 | 8.9 | 1.8
| 1.9.24 | 8.10 | 1.8
| 2.0.20 | 8.11 | 1.8
| 2.0.21 | 8.12 | 1.8
| 2.2.0  | 9.0.0 | 2.2
| 2.2.20 | 9.2.0 | 2.2
| 2.2.21 | 9.3.0 | 2.2
| 2.3.0  | 9.4.0 | 2.2
| 2.3.20 | 9.5.0 | 2.2
| 2.3.21 | 9.6.0 | 2.2
| 2.4.0  | 9.7.0 | 2.2
| 2.4.10 | 9.8.0 | 2.2
|===

[[groovy_compatibility]]
== Groovy

Gradle is tested with Groovy 1.5.8 through 6.0.0-alpha-2.

Gradle plugins written in Groovy must use Groovy 4.x for compatibility with Gradle and Groovy DSL build scripts.

[[android_compatibility]]
== Android

Gradle is tested with Android Gradle Plugin 9.0 through 9.4.0-alpha08.
Alpha and beta versions may or may not work.

[[target_platforms]]
== Target Platforms

Gradle supports a defined set of platform targets, which are combinations of:

- Operating system and version
- Architecture
- File system watching compatibility

The following table lists the officially supported platforms for Gradle:

.Supported Platforms
|===
| OS | Architecture

| link:https://en.wikipedia.org/wiki/Windows_10[Windows 10] | `AMD64`
| link:https://en.wikipedia.org/wiki/Windows_11[Windows 11] | `AMD64`, `AArch64`
| link:https://ubuntu.com/[Ubuntu 22] | `AMD64`, `AArch64`
| link:https://en.wikipedia.org/wiki/MacOS_version_history#Overview[macOS 13+] | `AMD64`, `AArch64`
| link:https://alpinelinux.org/releases/[Alpine 3.20] | `AMD64`
| link:https://en.wikipedia.org/wiki/CentOS_Stream[CentOS Stream 9] | `AMD64`
|===

NOTE: Currently, all Gradle tests run with the default file-systems of the platform, i.e. `ext4` for Ubuntu, Amazon Linux and CentOS, `NTFS` for Windows, and `APFS` for macOS.

Platforms not listed above may work with Gradle but are not actively tested.
