# Interface IExecutionEnvironment

public interface IExecutionEnvironment
An execution environment describes capabilities of a Java runtime environment (`IVMInstall`).

An execution environment is contributed in plug-in XML via the `org.eclipse.jdt.launching.executionEnvironments` extension point.

Clients contributing execution environments may provide and implement execution environment analyzer delegates.

Since:
  3.2
See Also:
  - `IExecutionEnvironmentAnalyzerDelegate`
Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

## Method Summary

Modifier and Type
Method
Description
`IAccessRule[][]`
`getAccessRules(IVMInstall vm, LibraryLocation[] libraries, IJavaProject project)`
Returns a collection of access rules to be applied to the specified VM libraries for this execution environment in the context of the given project.
`IVMInstall`
`getCompatibleVM()`
Return the vm that is best matching this environment that is: if a strictly compatible is found this one is returned, if multiple are strictly compatible it picks one randomly in all other case it choose the one with the lowest version, if multiple match the same version it picks one randomly
`IVMInstall[]`
`getCompatibleVMs()`
Returns a collection of VM installs compatible with this environment, possibly empty.
`Map<String,String>`
`getComplianceOptions()`
Returns a map of Eclipse Java compiler options specified as default settings to use when building with this profile, or `null` if unspecified.
`IVMInstall`
`getDefaultVM()`
Returns the VM that is used by default for this execution environment, or `null` if none.
`String`
`getDescription()`
Returns a brief human-readable description of this environment.
`String`
`getId()`
Returns a unique identifier for this execution environment.
`Properties`
`getProfileProperties()`
Returns the OSGi profile properties associated with this execution environment or `null` if none.
`IExecutionEnvironment[]`
`getSubEnvironments()`
Returns a collection of execution environments that are subsets of this environment.
`boolean`
`isStrictlyCompatible(IVMInstall vm)`
Returns whether the specified VM install is strictly compatible with this environment.
`void`
`setDefaultVM(IVMInstall vm)`
Sets the VM to use by default for this execution environment.

## Method Details

### getId

String getId()
Returns a unique identifier for this execution environment. Corresponds to the `id` attribute in plug-in XML.

Returns:
  unique identifier of this execution environment

### getDescription

String getDescription()
Returns a brief human-readable description of this environment.

Returns:
  brief human-readable description of this environment.

### getCompatibleVMs

IVMInstall[] getCompatibleVMs()
Returns a collection of VM installs compatible with this environment, possibly empty.

Returns:
  a collection of VM installs compatible with this environment, possibly empty.

### getCompatibleVM

IVMInstall getCompatibleVM()
Return the vm that is best matching this environment that is:

1. if a strictly compatible is found this one is returned, if multiple are strictly compatible it picks one randomly
2. in all other case it choose the one with the lowest version, if multiple match the same version it picks one randomly

Returns:
  the best compatible VM or `null` if none is found
Since:
  3.24

### isStrictlyCompatible

boolean isStrictlyCompatible(IVMInstall vm)
Returns whether the specified VM install is strictly compatible with this environment. Returns `true` to indicate the VM install is strictly compatible with this environment and `false` to indicate the VM install represents a superset of this environment.

Parameters:
  `vm` - VM install
Returns:
  whether the VM install is strictly compatible with this environment

### getDefaultVM

IVMInstall getDefaultVM()
Returns the VM that is used by default for this execution environment, or `null` if none.

Returns:
  default VM for this environment or `null` if none

### setDefaultVM

void setDefaultVM(IVMInstall vm)
Sets the VM to use by default for this execution environment.

Parameters:
  `vm` - VM to use by default for this execution environment, or `null` to clear the default setting
Throws:
  `IllegalArgumentException` - if the given VM is not compatible with this environment

### getAccessRules

IAccessRule[][] getAccessRules(IVMInstall vm, LibraryLocation[] libraries, IJavaProject project)
Returns a collection of access rules to be applied to the specified VM libraries for this execution environment in the context of the given project. An array of access rules is returned for each library specified by `libraries`, possibly empty.

Access rules for an execution environment are defined by access rule participants contributed in a `org.eclipse.jdt.launching.executionEnvironments` extension.

Parameters:
  `vm` - the VM that access rules are requested for
  `libraries` - the libraries that access rules are requested for
  `project` - the project the access rules are requested for or `null` if none
Returns:
  a collection of arrays of access rules - one array per library
Since:
  3.3

### getProfileProperties

Properties getProfileProperties()
Returns the OSGi profile properties associated with this execution environment or `null` if none. Profile properties specify attributes such as `Constants.FRAMEWORK_SYSTEMPACKAGES`. Profile properties can be optionally contributed with an execution environment extension.

Returns:
  associated profile properties or `null` if none
Since:
  3.5

### getSubEnvironments

IExecutionEnvironment[] getSubEnvironments()
Returns a collection of execution environments that are subsets of this environment.

Returns:
  a collection of execution environments that are subsets of this environment
Since:
  3.5

### getComplianceOptions

Map<String,String> getComplianceOptions()
Returns a map of Eclipse Java compiler options specified as default settings to use when building with this profile, or `null` if unspecified.

Returns:
  a map of Eclipse Java compiler options associated with this profile or `null`
Since:
  3.5