Eclipse Object Teams 2.4.0



Mars annual release (2.4) of Object Teams.

Main Theme:


The previous 2.3 release had to accommodate three significant changes in underlying technology. During the Mars cycle (2.4) all these changes were subjected to extensive testing and bug fixing.

  1. OT/Equinox had been rewritten from scratch due to removal of inofficial API in Equinox (Luna). As of Mars this implementation is now complete (as compared to Kepler) and many bugs have been fixed. In fact, the Mars version is superior over the old implementation (Kepler), as it better integrates with Equinox lazy loading, and no longer relies on inofficial API.
  2. In Luna, JDT/Core had introduced support for Java 8, which had to be reconciled with how OT/J extends Java. During the Mars cycle, this has been hardened in JDT/Core and a large number of significant changes have been adopted for OT/J on a regular basis. 

    The Java 8 feature of default methods has been integrated with the OT/J-specific concept of implicit inheritance.

    Additionally, in JDT/Core Mars, the code formatter was replaced by an entirely new re-implementation. This new implementation has been extended for OT/J.
  3. For the OTRE (Object Teams Runtime Environment) to be able to weave into Java 8 bytecodes, a replacement for BCEL was needed. In Luna an early access version of the new OTDRE (Object Teams Dynamic Runtime Environment) was released. This new component is based on ASM instead of BCEL. Additionally, it also supports runtime (re-)weaving, as apposed to only load-time weaving. This component has been significantly improved during the Mars cycle.



API Certification

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Architectural Issues

Compared to 2.3.0 and earlier, the OT/Equinox implementation has been split into:

  • org.eclipse.objectteams.otequinox

    The main implementation based only on standard OSGi API
  • org.eclipse.objectteams.otequinox.turbo

    Optional support for rarely used features (forced exports, and aspect permission negotiation) which still require inofficial API from Equinox.
Security Issues

No known security issues

Non-Code Aspects

Documentation is hosted at, including

  • many wiki pages: introductory texts, examples and patterns and much more
  • developer guide (also bundled as a help plug-in)
  • OT/J language definition
  • ...

The tool ships with learning material in various forms:

  • installable examples
  • cheat sheet
  • developer guide
  • OT/J language definition
  • new&noteworthy


Usability Details

No changes regarding usability in this release.

End of Life

Nothing has been deprecated

  • No standard exists for OT/J, the project provides the only implementation for this technology
    • Language definition (OTJLD) is maintained at
    • OTDT 2.3.0 implements OTJLD version 1.3.1
    • OT/J as implemented by OTDT 2.4.0 supports all features of Java™ 8
  • OT/J is executed on a standard Java virtual machine
    • The new bytecode weaver uses the quasi-standard library ASM
  • OT/Equinox runs on the Equinox framework using ...
    • only standard OSGi headers in MANIFEST.MF
    • only regular extensions in plugin.xml
    • the WeavingHook as standardized in OSGi
  • Installing the OTDT (and any OT/Equinox appl.)
    • using only existing p2 mechanisms



Tight integration with the JDT team

  • Some bugs in JDT found during work on Object Teams
  • All improvements in the JDT are promptly adopted in Object Teams

Apart from a few face-to-face events relating to Object Teams, the Mars cycle was comparably quiet in terms of community interaction. We hope to revive that communication during the next cycle, when development efforts will shift back from technical consolidation towards adding/improving user visible features.

This release is part of Mars