Eclipse Object Teams 2.4.0
Mars annual release (2.4) of Object Teams.
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.
- 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.
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.
- 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.
The project leadership certifies that the APIs in this release are "Eclipse Quality".
Compared to 2.3.0 and earlier, the OT/Equinox implementation has been split into:
The main implementation based only on standard OSGi API
Optional support for rarely used features (forced exports, and aspect permission negotiation) which still require inofficial API from Equinox.
No known security issues
Documentation is hosted at http://www.eclipse.org/objectteams/documentation.php, 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
No changes regarding usability in this release.
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 objectteams.org.
- 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.