Skip to main content
Jump to: navigation, search

Tycho/Execution Environments

< Tycho
Revision as of 07:53, 17 October 2012 by T-oberlies.posteo.de (Talk | contribs) (finished configuration (except default values - pending bug 387796))

An execution environment profile describes the capabilities of a Java runtime environment (JRE). In order to build for certain minimal JRE version, e.g. for Java SE 5 and later, Tycho allows you to select the execution environment profile to be used in the build.

Background: In OSGi, you can express that you need a certain minimum version of a library by importing a package from the library with a lower bound on the version. For the JRE itself, this approach is not possible: bundles don't specify imports on java.* packages, so you can't specify through a package import that, for example, your bundle needs java.lang in a version that contains the Enum class. Instead, there is the possibility to specify a requirement on the execution environment, e.g. Bundle-RequiredExecutionEnvironment: J2SE-1.5.

Execution environment configuration

The execution environment profile for the build is determined through the following configuration parameters, in decreasing order of precedence:

  1. The <executionEnvironment> parameter in the target-platform-configuration
  2. The jre.compilation.profile property in the build.properties (eclipse-plugin and eclipse-test-plugin modules only)
  3. The most restricted profile specified in the Bundle-RequiredExecutionEnvironment header (see details below; eclipse-plugin and eclipse-test-plugin modules only)
  4. The <executionEnvironmentDefault> parameter in the target-platform-configuration

You can specify the commonly known execution environments, for example "J2SE-1.5" (!), "JavaSE-1.6", "JavaSE-1.7", or "OSGi/Minimum-1.2".

Configuration via the bundle manifest

Unlike the other parameters, the Bundle-RequiredExecutionEnvironment header in the MANIFEST.MF allows to specify multiple execution environments (see here for a motivation). If this is the case, Tycho picks the most restricted execution environment according to the following heuristic: From the most restrictive class (with OSGi/Minimum < CDC/Foundation < J2SE or JavaSE), the lowest version is selected.

Effects of the exectution environment in the build

...

Toolchains

...

Custom execution environment profiles

Back to the top