Jump to: navigation, search

Category:OTEquinox

Revision as of 05:16, 27 February 2010 by Stephan.cs.tu-berlin.de (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.