<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../../dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
	    <meta name="copyright" content="Copyright Technical University Berlin and others 2004, 2010. This page is made available under the Eclipse Public License v1.0. For full details see http://www.eclipse.org/legal/epl-v10.html" />
        <link rel="stylesheet" href="otjld/css/ot.css" type="text/css" />
        <link rel="stylesheet" href="otjld/css/otjld.css" type="text/css" />
		<title>OTDT Feature List</title>
	    <!-- special padding for the table of tests. -->
	    <style type="text/css">
	       td,th { padding-left:15px; padding-right:15px; padding-top:2px; padding-bottom:2px; }
	    </style>
    </head>
    <body>
        <div id="head">
            <h1>Features of the OTDT (version 2.5)</h1>
        </div>
		<div style="margin:10px;margin-top:100px;">
		 <div style="margin-left:40px;padding:2px;float:left;background-color:#D0D0D0;">
          <div style="padding:4px;background-color:#def4fe;">
			The release 2.5 is based on Eclipse SDK 4.6 (Neon).<br/>
			The OTDT contains a modified version of the JDT core and several added plugins.
          </div>
         </div>
			<br style="clear:both;"/><br/>

			The following components are available:
			
			<ul>
			  <li><a href="#compiler">Compiler</a></li>
			  <li><a href="#wizards">Wizards</a></li>
			  <li><a href="#editor">Editor</a></li>
			  <li><a href="#bindingEditor">Binding Editor</a></li>
			  <li><a href="#refactoring">Refactoring</a></li>
			  <li><a href="#structureViewers">Structure Viewers</a></li>
			  <li><a href="#search">Search</a></li>
			  <li><a href="#execution">Execution Environment</a></li>
			  <li><a href="#otequinox">OT/Equinox</a></li>
			  <li><a href="#debugging">Debugging</a></li>
			  <li><a href="#help">Help and additional Information</a></li>
			</ul>
			
			
			<p></p>
			
				<div id="compiler" class="headl"><div class="headr">
			            <h1>Compiler</h1>
			        </div></div>
			            
			The Object Teams Compiler is an incremental compiler, based on the Eclipse Compiler for Java.
			As of version 2.5 the compiler supports all features of <strong>Java&trade; 8</strong>.
			<dl>
			<dt><strong>Language Definition</strong></dt>
			<dd>The compiler implements the language as defined in the OT/J
				<a href="otjld/def/index.html">language definition</a> version 1.3.1 (OTJLD).
				The language definition has continuously been revised to precisely specify the language 
				including various corner cases and combinations of features.
			</dd>
			<dt><strong>Language Implementation</strong></dt>
			<dd>
				The compiler supports all features of OT/J according to the 
				<a href="otjld/def/index.html"><img alt="otjld" src="../images/ot_paragraph.png"/> OTJLD v1.3.1</a>
				&sect;&sect;1-7,9.
				Support for the join point sub-language (<a href="http://www.objectteams.org/def/0.9/joinpoints.html"><img alt="otjld"  src="../images/ot_paragraph.png"/> OTJLD &#167; 8</a>) is not included.
				<p></p>
				The compiler can be <strong>configured</strong> using global <code>Preferences</code> or project
				specific <code>Properties</code>.
				<ul>
				  <li>Configure OT/J-specific compiler diagnostics as "ignore", "info", "warning" or "error".<br/>
				      Any warnings configured on this property sheet can also be suppressed in the
				      source code using the <code>@SuppressWarnings</code> annotation.</li>
				  <li>Scoped keywords <a href="otjld/def/sA.html#sA.0.1"><img alt="otjld"  src="../images/ot_paragraph.png"/> OTJLD &#167; A.0.1</a> can be disabled (default is enabled).
				  </li>
				  <li>The <a href="#weaving_scheme">target weaving scheme</a> can be selected during project creation.</li>
				</ul>
			</dd>
			</dl>
			
			<div id="wizards" class="headl"><div class="headr">
			   <h1>Wizards</h1>
			</div></div>
			<ul>
			
			<li>The first step to developing with Object Teams in Eclipse is creating an <img class="inline" alt="" src="../images/newprj_wiz.gif"/><code>&nbsp;Object&nbsp;Teams&nbsp;Project</code>. A wizard will guide you through that process. It will also add the Object Teams Runtime Environment (<tt>otre.jar</tt>) to your project's classpath.
			</li>
			
			<li>
			
			Having done that, you can start adding classes &mdash; be it regular classes, or <img class="inline" alt="" src="../images/team_obj.gif"/> team or <img class="inline" alt="" src="../images/role_obj.png"/> role classes &mdash; wizards will assist you in creating the classes properly.
			</li>
			</ul>
			
			
			<div id="editor" class="headl"><div class="headr">
				<h1>Editor</h1>
	        </div></div>
			<ul>
			
			<li>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, 
				<em>teams</em> (<img class="inline" alt=""  src="../images/team_obj.gif"/>),
				<em>roles</em> (<img class="inline" alt=""  src="../images/role_obj.png"/>),
				and <em>method bindings</em> (<img class="inline" alt="" src="../images/callinbindingbefore_obj.gif"/>,
						 <img  class="inline" alt="" src="../images/callinbindingreplace_obj.gif"/>,
						 <img class="inline" alt=""  src="../images/callinbindingafter_obj.gif"/>,
						 <img class="inline" alt=""  src="../images/calloutbinding_obj.gif"/>).</li>
			
			<li>The editor highlights the Object Teams keywords like "<code class="keyword">team</code>" the same way standard Java keywords are highlighted.</li>
			<li>All constructs referencing other code elements are navigable. E.g. you can navigate <tt>super()</tt>, <tt>tsuper()</tt>, <tt>base()</tt> calls, as well as <em>callin</em> and <em>callout bindings</em>. 
				The name in a <code class="keyword">team package</code> declaration lets you navigate from a role file 
				(<a href="otjld/def/s1.html#s1.2.5"><img alt="otjld" src="../images/ot_paragraph.png"/> OTJLD &#167; 1.2.5</a>) to its enclosing team.</li>
			
			<li>Classes to which one or more roles are bound using <code class="keyword">playedBy</code> are 
				annotated with a marker (<img class="inline" alt="" src="../images/playedBy_obj.gif"/>), 
				that allows navigating to the role declaration(s).
				Similarly, methods in a base class that are bound with a <em>callin binding</em> are 
				annotated with a marker (<img class="inline" alt="" src="../images/callinbinding_obj.gif"/>), 
				that allows navigating to the method binding declaration(s).
				
			<br/>
			Because this feature may be resource-consuming in a large workspace the global Object Teams preferences page allows to completely disable the generation of callin markers.</li>
			
			<li>Semantic highlighting (checkbox "mark occurrences") is fully supported.</li>
			<li>Code completion (Ctrl-space) is widely supported. It is, e.g., possible to use completion in order to create a callout binding.</li>
			<li>Content assist provides quick-fixes (Ctrl-1) for a number of OT/J specific errors and warnings. 
				Also a few templates for specific OT/J language constructs &mdash; 
				namely <code>with{}</code> and <code>within (<em>Expression</em>){}</code> &mdash; are available.</li>
			</ul>
			
			<div id="bindingEditor" class="headl"><div class="headr">
				<h1>Binding Editor</h1>
			</div></div>
			<ul>
			<li>Supports easy creation of connector definitions using a table based graphical user interface. In this context, a <b>connector</b> is meant to be a team that inherits structure
			(roles) and functionality (methods) from its super-team, and its main purpose is to bind 
			the inherited structure and functionality using <code class="keyword">playedBy</code> 
			declarations and callin/callout method bindings.</li>
			<li>Type bindings (<code class="keyword">playedBy</code>) can be defined by choosing a provided role type and the desired base type with a type selection dialog.</li>
			<li>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.
			  <ul>
			        <li>Only appropriate binding kinds are selectable in the corresponding context (callin or callout).</li>
			        <li>Besides the provided role methods, a new role method can be implemented by selecting a provided base method, thus creating a callout binding.</li>
			  </ul>
			</li>
			<li>Parameter and result mappings are definable by typing in an expression in the corresponding text field of the parameter mapping configuration tab.</li>
			</ul>
			The binding editor can be opened either from the new team wizard or using the package explore's context menu (<code><img class="inline" alt="" src="../images/calloutbinding_obj.gif"/>&nbsp;Open&nbsp;Binding&nbsp;Editor</code>).
			<p></p>
			<div id="refactoring" class="headl"><div class="headr">
                <h1>Refactoring</h1>
	        </div></div>
			<p></p>
			Significant work has been put into supporting the automated refactoring of OT/J code.
			The following refactorings take into account the Object Teams-specific 
			relationships (implicit role inheritance, team nesting, role-base bindings and method 
			bindings).
			<ul>
			<li><b>Extract Method</b></li>
			<li><b>Move Method</b></li>
			<li><b>Pull Up</b> applicable to method or field</li>
			<li><b>Push Down</b> applicable to method or field</li>
			<li><b>Rename</b> applicable to: project, source folder, package, type, method, field.<br/>
				<i>When trying to rename a team package you'll be asked to rename the team class instead.</i></li>
			</ul>
			Additionally, specific refactorings for OT/J are being developed. Currently these are implemented:
			<ul>
			<li><b>Extract Callin</b></li>
			<li><b>Inline Callin</b></li>
			<li><b>Move to Role File</b></li>
			</ul>
			<p></p>

			
			<div id="structureViewers" class="headl"><div class="headr">
		       <h1>Structure Viewers</h1>
	        </div></div>
			<dl>
			<dt><strong>The Package Explorer</strong></dt>
			<dd>
				<ul>
				<li>
				 provides access to all project artifacts and their structure, i.e. source files, used libraries (<em>jar</em>-files), and other documents. Note that team and role classes are annotated with distinct icons (<img class="inline" alt="" src="../images/team_obj.gif"/> for teams and <img class="inline" alt="" src="../images/role_obj.png"/> for roles). (The same icons are used throughout the IDE, whenever a team or role is visible.)
				</li>
				<li>
				 If "Java Type Indicators" is enabled under general preferences/label decorations, OT-specific decorations will also be applied to compilation units (files) and team packages.
				</li>
				<li>
				By opening the tree-branches, you can peek at the structure of e.g. classes.
				</li>
				<li>For team classes, there is special support for <b>role files</b> (<a href="otjld/def/s1.html#s1.2.5"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 1.2.5</a>):<br/>
				Role files are separate files and can be shown either 
				<em>physically</em> (<img class="inline" alt="" src="../images/team_package.gif"/>) as (separate) files in the team package or
				<em>logically</em> (<img class="inline" alt="" src="../images/external_roles.gif"/>) as member types of the enclosing team.
				</li>
				<li>
				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.
				</li>
			</ul></dd>
			<dt><strong>The Hierarchy View</strong></dt>
			<dd><ul>
			    <li>Object Teams intruduce a new type hierarchy. Besides the normal ("<code>extends</code>") inheritance, there is an additional "<em>implicit</em>" role inheritance, established by role name equality in a team hierarchy. In conjunction with team nesting roles support a controlled form of multiple inheritance.
			    </li>
			    <li>
			    The new implicit inheritance has been integrated completely into the standard JDT 
			    <em>Hierarchy View</em>.
			    </li>
			</ul></dd>
			<dt><strong>Java Structure Compare</strong></dt>
			<dd><ul>
				<li>When comparing versions of an OT/J file, the Java Structure Compare will correctly render
					Object Teams elements, too.</li>
				<li>When selecting a callin replace binding, an action "Compare With &gt; Bound Base Method" is available via the context menu,
					which easily let's you compare the method implementations of role and base.</li>
			</ul></dd>
			</dl>
			
			
			<div id="search" class="headl"><div class="headr">
		        <h1>Search</h1>
		    </div></div>
			<p></p>
			<dl>
			<dt><strong>Search references</strong></dt>
			<dd><ul><li>The Java Search functionality has been extended to include search results of 
			Object Teams code, that is, callin and callout bindings, and 
			playedBy-relationships.</li></ul></dd>
			<dt><strong>Call hierarchy</strong></dt>
			<dd><ul><li>Also the call hierarchy has been extended for browsing control flows passing
			through method bindings (callin and callout).</li>
			<li>The OTDT introduced support for call hierarchies regarding field accesses (read, write, any) and class instantiations. As of version 3.4 this functionality has been adopted by Eclipse.</li>
			<li>OT/J constructs that may cause role creation due to lifting are considered by the call hierarchy as calling the role's lifting constructor.</li>
			</ul>
			</dd>
			</dl>
			<p></p>
			
			<div id="execution" class="headl"><div class="headr">
			    <h1>Execution Environment</h1>
			</div></div>
			<dl>
			<dt><strong>Aspect weaving</strong></dt><dd>
			<ul><li>
			All aspect oriented languages have some kind of <em>weaving process</em>, where the aspect code is combined with the other (<em>base</em>) code.
			</li>
			<li>
			Object Teams programs perform the weaving at application <em>startup time</em>, i.e. at the moment, the program is launched. In order to do this, there is the so-called <em>Object Teams Runtime Environment (OTRE)</em>, that hooks into the class-loading process.
			</li>
			<li>
			All this is handled transparently using the standard Eclipse "Run" feature.
			Running any main class of an Object Teams project automatically includes
			the OTRE (This feature has been <a href="http://www.objectteams.org/distrib/new_in_1.3.html#launch">changed in the OTDT 1.2.2</a>).
			    </li>
			    </ul>
			</dd>
			<dt id="weaving_scheme"><strong>Weaving schemes</strong></dt>
			<dd><ul>
			<li>Since version 2.3, the OTDT ships with two distinct weavers with the properties mentioned below.
				Since the OT/J compiler performs some preparation for the respective weaver,
				it has to generate different byte code formats, depending on the targeted weaving scheme.
				As a result, switching from one weaving scheme to the other requires a full recompilation of all OT/J code involved.
				<ul>
				<li><strong>OTRE</strong>: This is the traditional <strong>load-time</strong> weaver.
					This weaver has <strong>matured</strong> over many years,
					but unfortunately, the underlying library <strong>BCEL</strong> is no longer maintained
					and thus cannot handle class files from recent Java versions.
					Up-to Java 7 this could be worked around,
					but Java 8 class files contain several elements that this BCEL-based weaver cannot handle.</li>
				<li><strong>OTDRE</strong>:
					The newer Object Teams Dynamic Runtime Environment has been developed to enable even <strong>runtime weaving</strong>.
				 	To work around limitations of the JVM this weaver has to insert a few general hooks into every weavable class.
				 	This weaver is also interesting for weaving into <strong>Java 8</strong> class files,
				 	as it is based on the library <strong>ASM</strong>, for which a Java-8-enabled version already exists.</li>
				</ul>
				</li>
				</ul></dd>
			<dt><strong>Aspect deployment/activation</strong></dt>
			<dd><ul>
			    <li>A new "Team Activation" tab in the "Run-Configuration" allows to instantiate and activate teams without modifying the program's source code.
			    </li>
			    <li>
			        Teams that cause aspect code to be woven into an application can be added to a program 
			        <ul>
			        <li> by explicit reference within the program source code or</li>
			        <li> by a configuration file which is mentioned as a parameter to the VM or</li>
			        <li> by adding them via the aforementioned "Team Activation" tab.</li>
			        </ul>
			        No such configuration is needed for compilation.
			    </li>
			    </ul>
			</dd>
			<dt><strong>Technology used</strong></dt>
			<dd><ul>
			<li id="JPLIS">Integrating the weaver into the JVM leverages the Java-agent concept of Java 5 
			    (<a href="http://java.sun.com/developer/technicalArticles/releases/j2se15/index.html">JPLIS</a>).<br/> 
			    </li>
			</ul></dd>
			</dl>
			<p></p>
			
			<div id="otequinox" class="headl"><div class="headr">
	            <h1>OT/Equinox</h1>
	        </div></div>
			<p></p>
			Starting with the OTDT version 0.9.9 (2006) it is possible to develop Eclipse plugins using
			OT/J as the implementation language. 
			<ul>
			<li>Using the plugin <code>org.eclipse.objectteams.otequinox</code>, a plugin ("aspect plugin") 
			    may declare that it adapts classes from a specified other plugin ("base plugin").</li>
			<li>By an integration of the Object Teams Runtime Environment with hooks in the 
			    Equinox implementation a <code class="keyword">team</code> class from an <em>aspect plugin</em>
			    can trigger byte-code aspect weaving into its <em>base plugin</em> at load-time.
			    As a result an aspect plugin can indeed adapt the behaviour of another plugin.
			    These bindings are declared using the extension point <code>aspectBindings</code> from
			    the mentioned plugin <code>org.eclipse.objectteams.otequinox</code>.</li>
			<li>The initial client of the OT/Equinox technology is a tiny plugin which extends Eclipse's
			    "about plugins" dialog by additionally displaying which plugins are being adapted by
			    which aspect plugins. This information is found in the version column of the mentioned dialog.
			    This way a user of the OTDT can always check whether a given plugin performs as shipped,
			    or whether it has been adapted by another plugin.</li>
			<li>The OTDT uses the capabilities of OT/Equinox for its own implementation.
			    The technology is mainly used for making the JDT-UI aware of Object Teams without having
			    to copy source code or modifying source code of the JDT-UI in place.</li>
			<li>A new project nature <img class="inline" alt="" src="../images/newpprj_wiz.gif"/>     
				<code>Object Teams Plugin Project</code> is provided, supporting the
			    development of plugins written in OT/J.</li>
			<li>Support for OT/Equinox is added to the run/debug dialogs for all Equinox related launches.</li>
			<li>If desired the load-time weaver can be disabled by adding the following
			    line to the file <code>eclipse.ini</code> after a <code>-vmargs</code> line:
			    <div class="ttindent">-Dot.equinox=false</div>.</li>
			</ul>
			<p></p>
			
			<div id="debugging" class="headl"><div class="headr">
	            <h1>Debugging</h1>
	        </div></div>
			<p></p>
			The debugger has been enhanced to support debugging of OT/J programs at the
			source code level. It is possible to set breakpoints and step through Object Teams code.
			
			<dl>
			<dt><b>Stepping through Code</b></dt>
			<dd>The following language features produce byte codes for which a standard Java debugger
			    is not able to display appropriate source locations:
			    <ul>
			    <li>Role files (<a href="otjld/def/s1.html#s1.2.5"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 1.2.5</a>)</li>
			    <li>Implicit inheritance (<a href="otjld/def/s1.html#s1.3.1"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 1.3.1</a>)</li>
			    <li>Callout bindings (<a href="otjld/def/s3.html"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 3</a>) 
			    	(including callout override (<a href="otjld/def/s3.html#s3.1.e"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 3.1(e)</a>))</li>
			    <li>Callin bindings (<a href="otjld/def/s4.html"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 4</a>)</li>
			    </ul>
			    The OTDT-Debugger re-maps the byte codes produced by all this constructs to the
			    appropriate source locations.
			    As a result stepping through these sections of a program completely hides
			    the internal translations from the user.<p></p>
			    The following features are not yet fully supported by the debugger:
			    <ul>
			    <li>Role constructors (see <a href="otjld/def/s2.html#s2.4"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 2.4</a>)</li>
			    <li>Parameters with declared lifting (<a href="otjld/def/s2.html#s2.3.2"><img alt="" src="../images/ot_paragraph.png"/> 
			    	OTJLD &sect; 2.3.2</a> &mdash; code for lifting is not filtered out yet)</li>
			    </ul></dd>
			<dt><b>Setting Breakpoints</b></dt>
			<dd>Use double click on ruler or context menu <code>Toggle Breakpoint</code> to set 
				breakpoints in OT/J-Code. Setting breakpoint in role files is supported, too.</dd>
			<dt id="team_monitor"><b>New View: "Team Monitor"</b></dt>
			<dd>The team monitor (<img src="../images/tm.gif" alt="" class="inline"/>)
				 view helps to debug issues related to team activation 
				 (<a href="otjld/def/s5.html#s5"><img alt="" src="../images/ot_paragraph.png"/> OTJLD &sect; 5</a>). 
				 For this purpose it displays all known team instances and shows their activation status as one of
				<ul>
				<li>inactive <img src="../images/team_inact.gif" alt="" class="inline"/>,</li>
				<li>active <img src="../images/team_act.gif" alt="" class="inline"/> 
				    (either globally or for the thread selected in the debug view), or</li>
				<li>implicitly active
				     <img src="../images/team_act_implicit.gif" alt="" class="inline"/> 
				    (temporarily active because the team or one of its roles is currently executing code).
				</li></ul>
				Also, a selected team can be (de)activated interactively via the context menu.</dd>
			<dt id="variables_filter"><b>Filtering variables</b></dt>
			<dd>The OT/J compiler and the loadtime weaver both add some internal variables to the code.
				By default such internal variables are hidden within the Team Monitor as well 
				as in the standard variables view. Both views can be configured to also show these internal
				variables if so desired.</dd>
			<dt><b>Known Issues and Limitations</b></dt>
			<dd><ul>
			    <li>Dynamic code evaluation is not supported yet, 
			    make sure to clear the Expression view.</li>
			    <li>Stepping through callin bindings under weaving scheme OTDRE is not yet able to always
			    	show the correct source code location and shows more hops through generated dispatch code.</li>
			  </ul></dd>
			</dl>
			
			<div id="help" class="headl"><div class="headr">
			    <h1>Help and additional Information</h1>
			</div></div>
			<p></p>
			The following sources for help and for further information are bundled with the release:
			<ul>
			<li>A Tutorial (available via the welcome page) guiding through the first steps of using the OTDT.</li>
			<li>Example programs demonstrating key features of Object Teams (also via the welcome page).</li>
			<li>A detailed <a href="guide/webindex.html">guide</a> on using the OTDT via the Help Index, including a link to the
			    language definition (which is also bundled).</li>
			<li>Problems that are listed in the problem view are linked (when possible) to a corresponding explanatory entry in the language definition.
			(Context menu -&gt; <img alt="" src="../images/ot_paragraph.png"/><code>&nbsp;Go&nbsp;to&nbsp;Language&nbsp;Definition</code>).</li>
			</ul>
		</div><!-- content -->
	</body>
</html>
