Category:OTEquinox

From Eclipsepedia

Jump to: navigation, search
OTEquinox Overview.png

Overview

OT/Equinox is the integration of OT/J into the Eclipse Equinox framework. It can be used to develop and/or adapt

  • Eclipse plug-ins
  • RCP applications/products
  • arbitrary OSGi bundles

while utilizing all of the features of OT/J. In the sequel, any mentioning of "bundles" could also be read as Eclipse "plug-in" if that is your focus.

Description

The initial publication about OT/Equinox is the TOOLS'07 paper.

The central new concept is an Aspect Binding which is defined at the architecture level, connecting a team class (OTJLD §1.1) sitting in an aspect bundle to a base bundle. Such binding grants the team permissions to adapt base classes from that base bundle.


Starting from version OTDT 1.2.0, OT/Equinox is provided as a regular Eclipse feature that can be installed into Eclipse using the regular mechanisms of Eclipse's p2 provisioning subsystem (successor of the former "update manager"). With the OT/Equinox feature installed, an Eclipse instance is able to run bundles written in OT/J and declaring aspect bindings.

With an aspect binding declared, a bundle may use playedBy (OTJLD §2.1), callout (OTJLD §3) and callin (OTJLD §4) to attach to classes/methods of the base plugin. This includes the options of decapsulation (OTJLD §3.4), while generally adhering to export/import rules of OSGi. In those rare cases where an aspect bundle needs access to a base class that is not exported from its bundle, an aspect bundle may declare a Forced Export to inject the required export into the base bundle. A forced export is declared as part of an aspect binding and must be confirmed either by a system-wide declaration in the file eclipse/configuration/config.ini, or using one of the options of Aspect Binding Negotiation.

Remark on Terminlogy:
It is sometimes disputed whether or not Object Teams is an Aspect technology.
The term AOP (aspect oriented programming) is tightly connected to the language AspectJ, to which OT/J has very little resemblance - so it is probably not useful to call Object Teams an AOP-approach.
However, more general terms like AOSD (aspect oriented software development, see http://www.aosd.net) have been coined with the intention to cover various approaches that share the motivation of multi-dimensional separation of concerns while offering solutions that significantly differ from AspectJ.
The OT/Equinox terms of aspect bundle and aspect binding etc. are meant to refer to the broader term AOSD with no implied reference to AspectJ.

Technical Background and Howtos

Prerequisite and Installation:
  • In order to leverage OT/Equinox the "OT/Equinox Feature" must be installed (see the Download hints)
  • During installation of the above feature a few changes are made to your config.ini which are documented here.
On Launching:
Migration to OT/Equinox: