Jump to: navigation, search

Difference between revisions of "Category:OTEquinox"

(Technical Background and Howtos)
Line 26: Line 26:
 
==Technical Background and Howtos==
 
==Technical Background and Howtos==
 
:'''Prerequisite and Installation:'''
 
:'''Prerequisite and Installation:'''
:* In order to leverage OT/Equinox the "''OT/Equinox Feature''" must be installed (see the [http://www.objectteams.org/distrib/otdt.html#download Download hints])
+
:* In order to leverage OT/Equinox the "''Object Teams Equinox Integration''" must be installed (from either the [http://download.eclipse.org/releases/juno Juno repo] or the [http://download.eclipse.org/objectteams/updates/ot2.1milestones OT repo]).
 
:* During installation of the above feature a few changes are made to your <code>config.ini</code> which are [[OTEquinox/Config Ini|documented here]].
 
:* During installation of the above feature a few changes are made to your <code>config.ini</code> which are [[OTEquinox/Config Ini|documented here]].
  

Revision as of 10:46, 30 July 2012

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 "Object Teams Equinox Integration" must be installed (from either the Juno repo or the OT repo).
  • 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: