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.