Eclipse Object Teams 2.3.0

Release Date

Features to be included in the release:

  1. org.eclipse.objectteams.otdt: The full Object Teams Development Tooling
  2. org.eclipse.objectteams.odtd.core.patch: Feature that replaces the original jdt.core with the enhanced variant for OT/J
  3. org.eclipse.objectteams.otequinox: Feature that adds OT/J capability to Equinox

A set of optional addon components exists (some old, one new during the Luna cycle), whose graduation has, however, been deferred, i.e., these components are not part of the 2.3 release:

  • Maven integration for building OT/J projects using maven (graduation deferred)
  • Build-time bytecode weaver (new,  graduation deferred)
  • M2e integration for OT/J (graduation deferred)

The integration of OT/J for Java™ 8 succeeds to avoid additional constraints on the use of features from both sub-languages. Programs in either OT/J (language version 1.3.1) and Java™ 8 are accepted by the combined compiler. Additionally, new features introduced in Java™ 8 can be used in OT/J in the following positions:

  • lambda expressions and method references can be used in parameter mappings of callout and callin method bindings
  • type annotations can be used for all type references in OT/J specific constructs

A re-implementation of Equinox for Luna removed the Adapter hooks used by OT/Equinox. Hence a complete re-write also of OT/Equinox was necessary. This re-implementation is essentially compatible to the implementation in 2.2, with the exception of a few rarely used features. These exceptions are tracked in bug 414054, which is scheduled for 2.3.1, to signal that any incompatibilities are considered as bugs and shall be fixed during maintenance. A few methods of class org.eclipse.objectteams.otequinox.TransformerPlugin, which had been marked as "internal API", can no longer be supported.



Strings used in the UI are externalized.

Target Environments
  • Required JRE: 1.7 or greater.
  • Command line compiler has no further dependencies
  • OTDT 2.3.0 requires Eclipse Luna



Adopt Java 8

OT/J is an extension of the Java programming language. To support the best of both worlds, OT/J has always been updated to be based on the latest version of Java. For Luna OT/J has been updated to support all new features introduced in Java 8.
  • adopt and merge implementation of Java 8 from JDT's BETA_JAVA8 branch [384991] (target milestone: 2.3 M7)
  • adopt grammar changes for Java 8 from JDT.Core [384992] (target milestone: 2.2 J8)
  • reconcile compiler changes from BETA_JAVA8 with OT.J [416781] (target milestone: 2.2 J8)
  • Runtime needs to cope with constant pool entries with tag >= 15 [424901] (target milestone: 2.3 M7)
  • Support lambdas in roles & teams [431584] (target milestone: 2.7.3)
  • semantically integrate null type annotations with anchored role types [437767] (target milestone: 2.3.1)

Migrate OT/Equinox to the Luna implementation of Equinox

The Equinox framework has been rewritten for Luna, removing the Adapter Hooks, on which OT/Equinox was built. For that reason OTDT Luna will ship with a reimplementation of OT/Equinox based on the OSGi standard API WeavingHook.
  • Remove obsolete classloader flags [378186] (target milestone: 2.3 M2)
  • Mysterious ClassCircularityError against classes MacVMLauncher and StandardVMLauncher [413850] (target milestone: 2.3 RC4)
  • Restore new thread notification [413857] (target milestone: 2.3 M7)
  • Repair HCR after bug 406518 [413949] (target milestone: 2.3 RC4)
  • Profiling and performance tuning of the new OT.Equinox [414052] (target milestone: 2.3 RC4)
  • BaseImportChecker is not activated [414066] (target milestone: 2.3 M2)
  • p2.inf to set startLevel [432700] (target milestone: 2.3 M7)
  • otequinox should support OTDRE via some switch [433137] (target milestone: 2.3 M7)
  • Reorganize structure of runtime bundles . packages [433150] (target milestone: 2.3 M7)
  • migrate OT.Equinox to the standard OSGi WeavingHook [406518] (target milestone: 2.3 M2)

Provide a new bytecode weaver

The traditional bytecode weaver for OT/J ("OTRE") is based on BCEL, which does not support the Java 8 classfile format. OTDT Luna will ship with an additional bytecode weaver with these properties: - uses ASM 5.0.1, hence fully supporting Java 8 class files - supports runtime weaving (as opposed to load time weaving)
  • Prepare OTDT for new (dynamic) weaver [397182] (target milestone: 2.3 M7)
  • Support runtime weaving [398232] (target milestone: 2.3)
  • select weaving scheme via a regular compiler option [433077] (target milestone: 2.3 M7)
  • encode weaving scheme in class files [433080] (target milestone: 2.3 RC1)
  • UI to configure the target weaving scheme [433104] (target milestone: 2.3 RC1)
  • Configure build paths for a target weaving scheme [433105] (target milestone: 2.3 M7)
  • otequinox should support OTDRE via some switch [433137] (target milestone: 2.3 M7)
  • role guard in replace callin gives error "result cannot be resolved" [433146] (target milestone: 2.3 M7)
  • Reorganize structure of runtime bundles . packages [433150] (target milestone: 2.3 M7)
This release is part of Luna