Release Notes for the OTDT version 0.8.18 (beta)
This release is based on Eclipse 3.0.2. It contains a modified version of the JDT core
and several added plugins.
The valuable feedback we have received since the 0.7.5 (Beta) release has resulted
in a much more stable and usable version with additional features.
The following components are available:
Preliminary support for refactoring and debugging is now also available.
The Object Teams Compiler is an incremental compiler, based on the Eclipse Java-Compiler.
- Language Definition
- The compiler implements the language as defined in the ObjectTeams/Java
language specification version 0.8 (OTJLD).
The language definition has continuously been revised to precisely specify the language
including various corner cases and combinations of features.
- Language Implementation
-
The compiler supports all features of ObjectTeams/Java according to the OTJLD v0.8
(except for those listed in "Known Problems").
Compared to previous releases the compiler support for these language features
has been significantly improved:
The following features are new in the language:
callin precedence
OTJLD § 4.8
Callin bindings can now be named, and based on those names, a partial precedence order between callin bindings can be declared.
scoped keywords
OTJLD § A.0.1 can now be enabled via the new preference page of the OT/J Compiler. On this preference page also specific compiler diagnostics can be configured as "ignore", "warning" or "error".
Please note a new constraint in the language:

OTJLD § 4.2(d) callin methods may no longer specify their visibility using public, protected or private. These modifiers were useless and are now prohibited by the compiler.
- Status of the Compiler
-
The compiler is continuously tested using a growing test suite of currently over 1200 test programs.
Feel free to have a look at the test status and remaining known problems.
- The first step to developing with Object Teams in Eclipse is creating an "Object Teams Project". A wizard will guide you through that process. It will also add the Object Teams class library (otre.jar) to your project's classpath.
-
Having done that, you can start adding classes -- be it regular classes, or team or role classes -- wizards will assist you in creating the classes properly.
- Editing Object Teams source code is supported by an outline view, showing the structure of the edited source file. This includes the Object Teams specific constructs, teams, roles, and method bindings.
- The editor highlights the Object Teams keywords the same way standard Java keywords are highlighted.
- All constructs referencing other code elements are navigable. E.g. you can navigate super(), tsuper(), base() calls, as well as callin and callout bindings.
- Methods in a base class that are bound with a callin binding are annotated with a marker, that allows navigating to the binding declaration (or possibly multiple thereof).
- Code completion is partially supported. You might see some references to internally generated code.
- Semantic highlighting feature (checkbox "mark occurrences") is now fully supported.
Content assist in the form of templates for specific ObjectTeams/Java language constructs namely with{} and within (Expression){} are available now.
- Supports easy creation of connector definitions using a table based graphical user interface.
- Type bindings can be defined by choosing a provided role type and the desired base type with a type selection dialog.
- Method bindings (either callin or callout) can be established by choosing a role method and a base method from the provided role and base method list respectively.
- Only appropriate binding kinds are selectable in the corresponding context (callin or callout).
- Besides the provided role methods, a new role method can be implemented by selecting a provided base method, thus creating a callout binding.
- Parameter and result mappings are definable by typing in an expression in the corresponding text field of the parameter mapping configuration tab.
The binding editor can be opened either from the new team wizard or using the package explore's context menu.
Refactoring |
Significant work has been put into supporting the automated refactoring of
ObjectTeams/Java code.
The following refactorings take into account the Object Teams-specific
relationships (implicit role inheritance, team nesting, role-base bindings and method
bindings).
- Extract Method
- Move Method
- Rename Method
- Rename Project
- Rename Source folder
- Rename Field
The Rename Package refactoring is also available, with the only limitation
that you cannot rename team-packages. The Rename Type refactoring does not
yet support role files (OTJLD § 1.2.5).
-
The Package Explorer
-
-
provides access to all project artifacts and their structure, i.e. source files, used libraries (jar-files), and other documents. Note that team and role classes are annotated with distinct icons -- showing a small T for teams and an R for role classes. (The same icons are used throughout the IDE, whenever a team or role is visible.)
-
By opening the tree-branches, you can peek at the structure of e.g. classes.
- For team classes, there is special support for role files: Role files are separate files and can be shown either logically as member types of the enclosing team or physically as (separate) files in the team package.
-
Furthermore, the Package Explorer provides the current context for other operations. The Team- and Role-Wizards, for example, have a pre-set source folder, package and enclosing class when a team is selected in the Package Explorer.
-
The Hierarchy View
- Object Teams intruduce a new type hierarchy. Besides the normal ("
extends") inheritance, there is an additional "implicit" role inheritance, established by role name equality in a team hierarchy. In conjunction with team nesting roles support a controlled
form of multiple inheritance.
-
The new implicit inheritance has been integrated completely into the standard JDT
Hierarchy View.
The revised Hierarchy View supercedes the incomplete support which was provided by
a specific "Implicit Hierarchy View" in previous releases of the OTDT.
Search |
The Java Search functionality has been extended to include search results of
Object Teams code, that is, callin and callout bindings, and
playedBy-relationships.
-
All aspect oriented languages have some kind of weaving process, where the aspect code is combined with the other (base) code.
-
Object Teams programs perform the weaving at application startup time, i.e. at the moment, the program is launched. In order to do this, there is the so-called Object Teams Runtime Environment, that wraps around the standard launching procedure.
-
All this is handled transparently using the standard Eclipse "Run" feature. You simply choose to create an Object Teams Application "Run-Configuration" instead of a Java Application "Run-Configuration" and hit the "Run" button to launch your Object Teams application.
- A new "Team Activation" tab in the "Run-Configuration" allows to instantiate and activate teams without modifying the program's source code.
-
Teams that cause aspect code to be woven into an application can be added to a program
- by explicit reference within the program source code or
- by a configuration file which is mentioned as a parameter to the VM or
- by adding them via the aforementioned "Team Activation" tab.
No such configuration is needed for compilation.
Experimental support for a Java 5 based weaver.
The original OT/J-weaver uses the JMangler framework for
intercepting classes during class loading.
The new version uses the Java-agent concept of Java 5
(JPLIS) instead,
which means we will be indenpendent of JMangler. In the future this version will support
aspect weaving not only at load time but also while an application is running.
The launch configuration for OT/J applications contains a new checkbox for selecting
the weaver ("Java 5 JPLIS Launching").
Please note, that the new Java 5 based weaver is not yet complete.
Debugging |
The beginnings of debugging support for Object Teams is available. The
activation and deactivation of team instances can be monitored. This should
help detecting bugs related to inactive teams.
| Help and additional Information |
The following sources for help and for further information are bundled with the release:
- A Tutorial (available via the welcome page) guiding through the first steps of using the OTDT.
- Example programs demonstrating key features of ObjectTeams/Java (also via the welcome page).
- Detailed documentation on using the OTDT via the Help Index, including a link to the
language definition (which is also bundled).
- Problems that are listed in the problem view are linked (when possible) to a corresponding explanatory entry in the language definition.
(Context menu ->"Go to Language Definition").
| Movies demonstrating the OTDT |
As an introduction to the OTDT you may watch the following movies (requires a plugin for Shockwave Flash Media):
References