# JavaToolchainSpec

interface JavaToolchainSpec : Describable

Requirements for selecting a Java toolchain.

A toolchain is a JRE/JDK used by the tasks of a build. Tasks may require one or more of the tools (javac, java, or javadoc) of a toolchain. Depending on the needs of a build, only toolchains matching specific characteristics can be used to run a build or a specific task of a build.

Even though specification properties can be configured independently, the configuration must follow certain rules in order to form a specification.

A `JavaToolchainSpec` is considered valid in two cases:

- when no properties have been set, i.e. the specification is empty;
- when language version has been set, optionally followed by setting any other property.

In other words, if a vendor or an implementation are specified, they must be accompanied by the language version. An empty specification in most cases corresponds to the toolchain that runs the current build.

Usage of invalid instances of `JavaToolchainSpec` is deprecated and will be removed in the future versions of Gradle.

#### Since

6.7

## Functions

getDisplayName
Link copied to clipboard
open fun getDisplayName(): String
getImplementation
Link copied to clipboard
abstract fun getImplementation(): Property<JvmImplementation>
The virtual machine implementation of the toolchain.
getLanguageVersion
Link copied to clipboard
abstract fun getLanguageVersion(): Property<JavaLanguageVersion>
The exact version of the Java language that the toolchain is required to support.
getNativeImageCapable
Link copied to clipboard
@Incubating
abstract fun getNativeImageCapable(): Property<Boolean>
Indicates if the toolchain should be native-image capable.
getVendor
Link copied to clipboard
abstract fun getVendor(): Property<JvmVendorSpec>
The vendor of the toolchain.