# Execution Environments

###### Identifier:

org.eclipse.jdt.launching.executionEnvironments

###### Since:

3.2

###### Description:

Allows execution environments and execution environment analyzers to be contributed. An execution environment represents a kind of JRE - for example J2SE5. Analyzers are contributed to categorize JREs according to environments.

###### Configuration Markup:

<!ELEMENT extension (environment* , analyzer* , ruleParticipant*)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

<!ELEMENT environment EMPTY>

<!ATTLIST environment

id CDATA #REQUIRED

description CDATA #IMPLIED

ruleParticipant CDATA #IMPLIED

profileProperties CDATA #IMPLIED

compliance CDATA #IMPLIED>

- id - a unique identifier for this execution environment that is presented to the user - for example, "J2SE-1.4".
- description - a brief human-readable description of this execution environment
- ruleParticipant - the fully qualified name of a Java class that implements `org.eclipse.jdt.launching.environments.IAccessRuleParticipant`. When specified, this class is used to create access rules for VM libraries associated with this execution environment during classpath resolution. This participant creates rules last, preceeded by any `ruleParticipants` contributed as elements. This attribute was added in the 3.3 release.
- profileProperties - Plug-in relative path to a properties file containing standard OSGi profile properties. Properties provide tooling with extra information about an environment - for example, system packages and default source and target level settings to use when compiling with this environment. This attribute was added in the 3.5 release. Minimally, the following properties should be specified. Note that any "org.eclipse.jdt.core.compiler.*" properties provided will be used as the default compiler settings for projects built against this execution environment.
  - `org.osgi.framework.system.packages` - a comma separated list of available (API) system packages
  - `org.osgi.framework.bootdelegation` - a comma spearated list of packages for which the Framework must delegate class loading to the boot class path
  - `org.osgi.framework.executionenvironment` - a comma separated list of execution environments provided by this environment (a list of environments that are a subset of this environment, including this environment)
  - `osgi.java.profile.name` - environment identifier/name
  - `org.eclipse.jdt.core.compiler.compliance` - compiler compliance level - 1.4, 1.5, etc.
  - `org.eclipse.jdt.core.compiler.source` - source level - 1.3, 1.4, etc.
  - `org.eclipse.jdt.core.compiler.codegen.targetPlatform` - target level - 1.2, 1.3, etc.
  - `org.eclipse.jdt.core.compiler.problem.assertIdentifier` - severity of using 'assert' as an identifier in source: error, warning, or ignore
  - `org.eclipse.jdt.core.compiler.problem.enumIdentifier` - severity of using 'enum' as an identifier in source: error, warning, or ignore
- compliance - In the absence of profileProperties this will provide the value for org.eclipse.jdt.core.compiler.compliance

<!ELEMENT analyzer EMPTY>

<!ATTLIST analyzer

id CDATA #REQUIRED

class CDATA #REQUIRED>

- id - a unique identifier for this execution environment analyzer
- class - a fully qualified name of a Java class that implements `org.eclipse.jdt.launching.environments.IExecutionEnvironmentAnalyzer`

<!ELEMENT ruleParticipant EMPTY>

<!ATTLIST ruleParticipant

id CDATA #REQUIRED

class CDATA #REQUIRED>

This element was added in the 3.3 release.

- id - a unique identifier for this rule participant
- class - the fully qualified name of a Java class that implements `org.eclipse.jdt.launching.environments.IAccessRuleParticipant`. When specified, this class is used to create access rules for VM libraries associated with this execution environment during classpath resolution. This participant creates rules before a `ruleParticipant` contributed by an execution environment directly, allowing a participant to override an environment's default rules.

###### Examples:

Following is an example definition of an execution environment and analyzer.

    <extension point="org.eclipse.jdt.launching.executionEnvironments">
          <environment
                id="J2SE-1.4"
                description="Java 2 Platform, Standard Edition 1.4"/>
          <analyzer
                class="com.example.ExecutionEnvironmentAnalyzer"
                id="com.example.eeAnalyzer"/>
    </extension>

###### Supplied Implementation:

JDT (`org.eclipse.jdt.launching`) currently provides definitions and an analyzer for the following execution environments:

- OSGi/Minimum-1.0
- OSGi/Minimum-1.1
- OSGi/Minimum-1.2
- JRE-1.1
- J2SE-1.2
- J2SE-1.3
- J2SE-1.4
- J2SE-1.5
- JavaSE-1.6
- JavaSE-1.7
- JavaSE-1.8
- CDC-1.0/Foundation-1.0
- CDC-1.1/Foundation-1.1

Since 3.5, a default access rule participant provides access rules for system packages associated with an execution environment. System packages are specified by an OSGi profile properties file (see `profileProperties` above) via the `org.osgi.framework.system.packages` property.

Copyright (c) 2005, 2015 IBM Corporation and others.
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html/ SPDX-License-Identifier: EPL-2.0