This document defines the ObjectTeams/Java programming language (OT/J).
The main goals were to create a precise and complete reference for this language.
Didactical considerations had lower priorities, which means that this document is not designed
as an introductory tutorial.
Still, we advise programmers learning the OT/J language, to consult this document whenever
a compiler error message is not perfectly clear to them (see §0.3).

(a) Paragraphs

The actual definition is structured into small paragraphs for easy referral.

(b) Syntax Links

Links to the syntax precede definitions whenever new syntax is introduced.

Interspersed you will find some example program listings.
Examples are typeset in a box:

1

publicteamclass MyTeamA {

2

...

3

}

Explanations for examples look like the following:

Effects:

Lines 1-3 show a minimal OT/J program, which should not cause any headache.

Examples are given for illustration only.

Additional paragraphs like "Language implementation", or
"open issues" provide some background information which is
not necessary for understanding the definition, which might
however, help to understand why things are the way they are
and what other things might be added to the language in the future.

Error messages given by the Object Teams compiler refer to this
definition whenever appropriate. This way it should be easy to find
out, why the compiler rejected your program. Please make sure
you are using a language definition whose version matches the
version of your compiler.

The structure of this document has changed between versions
0.6.1 and 0.7 of this document. This change reflects the
transition from our first compiler for OT/J (called otc)
and the OTDT (Object Teams Development Tooling)
plugin for Eclipse.

Starting with the OTDT v0.7.x, the major and minor number of the tool
correspond to the major and minor version number of the OTJLD (this document),
ie., the OTDT v1.0.x implements the language as defined in the OTJLD v1.0.

Changes between the current and previous versions are listed in appendix §B.