Running Object Teams programs

Technically running an Object Teams program involves a special runtime enviroment (the OTRE - Object Teams Runtime Environment) which provides fundamental classes and performs load-time weaving for connecting aspects with their bases. All this is hidden as to make running Object Teams programs as easy as running Java programs.

The OT/J specific launch types ( Object Teams Application, Object Teams Eclipse Application OT/Equinox Framework) are no longer needed and are gradually being faded out.

For launching OT/J programs use any of the launching techniques offered by Eclipse: You may, e.g., invoke a Run As/Debug As option from a context menu or use one of the run/debug tool bar buttons. From here just select one of the standard launch configuration types:

All these launches now consistently provide one additional checkbox, which is shown next to where the Runtime JRE is configured.

For Java Applications (, ) this checkbox is found on the JRE tab:

For Remote Debugging of a java applications () this checkbox is found on the Connect tab:

Remote Debugging

For launching a Runtime Workbench (, ) the new checkbox is right on the main page:

For OSGi Framework launches () the runtime environment is configured on the Settings tab:

Team activation:

I you wish to compose your program from a base application and a number of aspects, you may use a launch configuration to select which aspects should be included. Use the tab Team Activation to select existing teams and put them into the desired order.

The effect is that each team in the list will be instantiated and activated before the main method of the program executes. This can actually be observed if Stop in main is checked for debugging: the program will actually stop before entering main, the next step will perform all pending team instantiations/activations and only then the program starts (You might want to use the team monitor to observe team instantiation/activation).

Since a team can intercept method calls in a base application simply adding a team to an existing application can indeed produce different behavior.