Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../../dtd/xhtml1-strict.dtd"> |
| 2 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> |
| 3 | <head> |
| 4 | <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" /> |
| 5 | <link rel="stylesheet" href="otjld/css/ot.css" type="text/css" /> |
| 6 | <link rel="stylesheet" href="otjld/css/otjld.css" type="text/css" /> |
| 7 | <title>OTDT Feature List</title> |
| 8 | <!-- special padding for the table of tests. --> |
| 9 | <style type="text/css"> |
| 10 | td,th { padding-left:15px; padding-right:15px; padding-top:2px; padding-bottom:2px; } |
| 11 | </style> |
| 12 | </head> |
| 13 | <body> |
| 14 | <div id="head"> |
Stephan Herrmann | 7f8ca0d | 2013-06-03 22:32:53 +0200 | [diff] [blame] | 15 | <h1>Features of the OTDT (version 2.2)</h1> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 16 | </div> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 17 | <div style="margin:10px;margin-top:100px;"> |
| 18 | <div style="margin-left:40px;padding:2px;float:left;background-color:#D0D0D0;"> |
| 19 | <div style="padding:4px;background-color:#def4fe;"> |
Stephan Herrmann | 7f8ca0d | 2013-06-03 22:32:53 +0200 | [diff] [blame] | 20 | The release 2.2 is based on Eclipse SDK 4.3.<br/> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 21 | The OTDT contains a modified version of the JDT core and several added plugins. |
| 22 | </div> |
| 23 | </div> |
| 24 | <br style="clear:both;"/><br/> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 25 | |
| 26 | The following components are available: |
| 27 | |
| 28 | <ul> |
| 29 | <li><a href="#compiler">Compiler</a></li> |
| 30 | <li><a href="#wizards">Wizards</a></li> |
| 31 | <li><a href="#editor">Editor</a></li> |
| 32 | <li><a href="#bindingEditor">Binding Editor</a></li> |
| 33 | <li><a href="#refactoring">Refactoring</a></li> |
| 34 | <li><a href="#structureViewers">Structure Viewers</a></li> |
Stephan Herrmann | 2be84c1 | 2012-06-04 01:02:48 +0200 | [diff] [blame] | 35 | <li><a href="#search">Search</a></li> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 36 | <li><a href="#execution">Execution Environment</a></li> |
| 37 | <li><a href="#otequinox">OT/Equinox</a></li> |
| 38 | <li><a href="#debugging">Debugging</a></li> |
| 39 | <li><a href="#help">Help and additional Information</a></li> |
| 40 | </ul> |
| 41 | |
| 42 | |
| 43 | <p></p> |
| 44 | |
| 45 | <div id="compiler" class="headl"><div class="headr"> |
| 46 | <h1>Compiler</h1> |
| 47 | </div></div> |
| 48 | |
| 49 | The Object Teams Compiler is an incremental compiler, based on the Eclipse Compiler for Java. |
| 50 | <dl> |
| 51 | <dt><strong>Language Definition</strong></dt> |
| 52 | <dd>The compiler implements the language as defined in the OT/J |
Stephan Herrmann | 6e6f6cb | 2013-05-28 15:34:57 +0200 | [diff] [blame] | 53 | <a href="otjld/def/index.html">language definition</a> version 1.3.1 (OTJLD). |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 54 | The language definition has continuously been revised to precisely specify the language |
| 55 | including various corner cases and combinations of features. |
| 56 | </dd> |
| 57 | <dt><strong>Language Implementation</strong></dt> |
| 58 | <dd> |
| 59 | The compiler supports all features of OT/J according to the |
Stephan Herrmann | 6e6f6cb | 2013-05-28 15:34:57 +0200 | [diff] [blame] | 60 | <a href="otjld/def/index.html"><img alt="otjld" src="../images/ot_paragraph.png"/> OTJLD v1.3.1</a> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 61 | §§1-7,9. |
| 62 | 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 § 8</a>) is not included. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 63 | <p></p> |
| 64 | The compiler can be <strong>configured</strong> using global <code>Preferences</code> or project |
| 65 | specific <code>Properties</code>. |
| 66 | <ul> |
| 67 | <li>Configure OT/J-specific compiler diagnostics as "ignore", "warning" or "error".<br/> |
| 68 | Any warnings configured on this property sheet can also be suppressed in the |
| 69 | source code using the <code>@SuppressWarnings</code> annotation.</li> |
| 70 | <li>Scoped keywords <a href="otjld/def/sA.html#sA.0.1"><img alt="otjld" src="../images/ot_paragraph.png"/> OTJLD § A.0.1</a> can be disabled (default is enabled). |
| 71 | </li> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 72 | </ul> |
| 73 | </dd> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 74 | </dl> |
| 75 | |
| 76 | <div id="wizards" class="headl"><div class="headr"> |
| 77 | <h1>Wizards</h1> |
| 78 | </div></div> |
| 79 | <ul> |
| 80 | |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 81 | <li>The first step to developing with Object Teams in Eclipse is creating an <img class="inline" alt="" src="../images/newprj_wiz.gif"/><code> Object Teams 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. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 82 | </li> |
| 83 | |
| 84 | <li> |
| 85 | |
| 86 | Having done that, you can start adding classes — 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 — wizards will assist you in creating the classes properly. |
| 87 | </li> |
| 88 | </ul> |
| 89 | |
| 90 | |
| 91 | <div id="editor" class="headl"><div class="headr"> |
| 92 | <h1>Editor</h1> |
| 93 | </div></div> |
| 94 | <ul> |
| 95 | |
| 96 | <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, |
| 97 | <em>teams</em> (<img class="inline" alt="" src="../images/team_obj.gif"/>), |
| 98 | <em>roles</em> (<img class="inline" alt="" src="../images/role_obj.png"/>), |
| 99 | and <em>method bindings</em> (<img class="inline" alt="" src="../images/callinbindingbefore_obj.gif"/>, |
| 100 | <img class="inline" alt="" src="../images/callinbindingreplace_obj.gif"/>, |
| 101 | <img class="inline" alt="" src="../images/callinbindingafter_obj.gif"/>, |
| 102 | <img class="inline" alt="" src="../images/calloutbinding_obj.gif"/>).</li> |
| 103 | |
| 104 | <li>The editor highlights the Object Teams keywords like "<code class="keyword">team</code>" the same way standard Java keywords are highlighted.</li> |
| 105 | <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>. |
| 106 | The name in a <code class="keyword">team package</code> declaration lets you navigate from a role file |
| 107 | (<a href="otjld/def/s1.html#s1.2.5"><img alt="otjld" src="../images/ot_paragraph.png"/> OTJLD § 1.2.5</a>) to its enclosing team.</li> |
| 108 | |
| 109 | <li>Classes to which one or more roles are bound using <code class="keyword">playedBy</code> are |
| 110 | annotated with a marker (<img class="inline" alt="" src="../images/playedBy_obj.gif"/>), |
| 111 | that allows navigating to the role declaration(s). |
| 112 | Similarly, methods in a base class that are bound with a <em>callin binding</em> are |
| 113 | annotated with a marker (<img class="inline" alt="" src="../images/callinbinding_obj.gif"/>), |
| 114 | that allows navigating to the method binding declaration(s). |
| 115 | |
| 116 | <br/> |
| 117 | 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> |
| 118 | |
| 119 | <li>Semantic highlighting (checkbox "mark occurrences") is fully supported.</li> |
| 120 | <li>Code completion (Ctrl-space) is widely supported. It is, e.g., possible to use completion in order to create a callout binding.</li> |
| 121 | <li>Content assist provides quick-fixes (Ctrl-1) for a number of OT/J specific errors and warnings. |
| 122 | Also a few templates for specific OT/J language constructs — |
| 123 | namely <code>with{}</code> and <code>within (<em>Expression</em>){}</code> — are available.</li> |
| 124 | </ul> |
| 125 | |
| 126 | <div id="bindingEditor" class="headl"><div class="headr"> |
| 127 | <h1>Binding Editor</h1> |
| 128 | </div></div> |
| 129 | <ul> |
| 130 | <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 |
| 131 | (roles) and functionality (methods) from its super-team, and its main purpose is to bind |
| 132 | the inherited structure and functionality using <code class="keyword">playedBy</code> |
| 133 | declarations and callin/callout method bindings.</li> |
| 134 | <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> |
| 135 | <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. |
| 136 | <ul> |
| 137 | <li>Only appropriate binding kinds are selectable in the corresponding context (callin or callout).</li> |
| 138 | <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> |
| 139 | </ul> |
| 140 | </li> |
| 141 | <li>Parameter and result mappings are definable by typing in an expression in the corresponding text field of the parameter mapping configuration tab.</li> |
| 142 | </ul> |
| 143 | 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"/> Open Binding Editor</code>). |
| 144 | <p></p> |
| 145 | <div id="refactoring" class="headl"><div class="headr"> |
| 146 | <h1>Refactoring</h1> |
| 147 | </div></div> |
| 148 | <p></p> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 149 | Significant work has been put into supporting the automated refactoring of OT/J code. |
| 150 | The following refactorings take into account the Object Teams-specific |
| 151 | relationships (implicit role inheritance, team nesting, role-base bindings and method |
| 152 | bindings). |
| 153 | <ul> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 154 | <li><b>Extract Method</b></li> |
| 155 | <li><b>Move Method</b></li> |
| 156 | <li><b>Pull Up</b> applicable to method or field</li> |
| 157 | <li><b>Push Down</b> applicable to method or field</li> |
| 158 | <li><b>Rename</b> applicable to: project, source folder, package, type, method, field.<br/> |
| 159 | <i>When trying to rename a team package you'll be asked to rename the team class instead.</i></li> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 160 | </ul> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 161 | Additionally, specific refactorings for OT/J are being developed. Currently these are implemented: |
| 162 | <ul> |
| 163 | <li><b>Extract Callin</b></li> |
| 164 | <li><b>Inline Callin</b></li> |
Stephan Herrmann | 7f8ca0d | 2013-06-03 22:32:53 +0200 | [diff] [blame] | 165 | <li><b>Move to Role File</b></li> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 166 | </ul> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 167 | <p></p> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 168 | |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 169 | |
| 170 | <div id="structureViewers" class="headl"><div class="headr"> |
| 171 | <h1>Structure Viewers</h1> |
| 172 | </div></div> |
| 173 | <dl> |
| 174 | <dt><strong>The Package Explorer</strong></dt> |
| 175 | <dd> |
| 176 | <ul> |
| 177 | <li> |
| 178 | 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.) |
| 179 | </li> |
| 180 | <li> |
| 181 | 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. |
| 182 | </li> |
| 183 | <li> |
| 184 | By opening the tree-branches, you can peek at the structure of e.g. classes. |
| 185 | </li> |
| 186 | <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 § 1.2.5</a>):<br/> |
| 187 | Role files are separate files and can be shown either |
| 188 | <em>physically</em> (<img class="inline" alt="" src="../images/team_package.gif"/>) as (separate) files in the team package or |
| 189 | <em>logically</em> (<img class="inline" alt="" src="../images/external_roles.gif"/>) as member types of the enclosing team. |
| 190 | </li> |
| 191 | <li> |
| 192 | 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. |
| 193 | </li> |
| 194 | </ul></dd> |
| 195 | <dt><strong>The Hierarchy View</strong></dt> |
| 196 | <dd><ul> |
| 197 | <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. |
| 198 | </li> |
| 199 | <li> |
| 200 | The new implicit inheritance has been integrated completely into the standard JDT |
| 201 | <em>Hierarchy View</em>. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 202 | </li> |
| 203 | </ul></dd> |
Stephan Herrmann | 7f8ca0d | 2013-06-03 22:32:53 +0200 | [diff] [blame] | 204 | <dt><strong>Java Structure Compare</strong></dt> |
| 205 | <dd><ul> |
| 206 | <li>When comparing versions of an OT/J file, the Java Structure Compare will correctly render |
| 207 | Object Teams elements, too. |
| 208 | </ul></dd> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 209 | </dl> |
| 210 | |
| 211 | |
| 212 | <div id="search" class="headl"><div class="headr"> |
| 213 | <h1>Search</h1> |
| 214 | </div></div> |
| 215 | <p></p> |
| 216 | <dl> |
| 217 | <dt><strong>Search references</strong></dt> |
| 218 | <dd><ul><li>The Java Search functionality has been extended to include search results of |
| 219 | Object Teams code, that is, callin and callout bindings, and |
| 220 | playedBy-relationships.</li></ul></dd> |
| 221 | <dt><strong>Call hierarchy</strong></dt> |
| 222 | <dd><ul><li>Also the call hierarchy has been extended for browsing control flows passing |
| 223 | through method bindings (callin and callout).</li> |
| 224 | <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> |
Stephan Herrmann | 2be84c1 | 2012-06-04 01:02:48 +0200 | [diff] [blame] | 225 | <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> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 226 | </ul> |
| 227 | </dd> |
| 228 | </dl> |
| 229 | <p></p> |
| 230 | |
| 231 | <div id="execution" class="headl"><div class="headr"> |
| 232 | <h1>Execution Environment</h1> |
| 233 | </div></div> |
| 234 | <dl> |
| 235 | <dt><strong>Aspect weaving</strong></dt><dd> |
| 236 | <ul><li> |
| 237 | 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. |
| 238 | </li> |
| 239 | <li> |
Stephan Herrmann | 2be84c1 | 2012-06-04 01:02:48 +0200 | [diff] [blame] | 240 | 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. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 241 | </li> |
| 242 | <li> |
| 243 | All this is handled transparently using the standard Eclipse "Run" feature. |
| 244 | Running any main class of an Object Teams project automatically includes |
| 245 | the OTRE (This feature has been <a href="new_in_1.3.html#launch">changed in the OTDT 1.2.2</a>). |
| 246 | </li> |
| 247 | </ul></dd> |
| 248 | <dt><strong>Aspect deployment/activation</strong></dt> |
| 249 | <dd><ul> |
| 250 | <li>A new "Team Activation" tab in the "Run-Configuration" allows to instantiate and activate teams without modifying the program's source code. |
| 251 | </li> |
| 252 | <li> |
| 253 | Teams that cause aspect code to be woven into an application can be added to a program |
| 254 | <ul> |
| 255 | <li> by explicit reference within the program source code or</li> |
| 256 | <li> by a configuration file which is mentioned as a parameter to the VM or</li> |
| 257 | <li> by adding them via the aforementioned "Team Activation" tab.</li> |
| 258 | </ul> |
| 259 | No such configuration is needed for compilation. |
| 260 | </li> |
| 261 | </ul> |
| 262 | </dd> |
| 263 | <dt><strong>Technology used</strong></dt> |
| 264 | <dd><ul> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 265 | <li id="JPLIS">Integrating the weaver into the JVM leverages the Java-agent concept of Java 5 |
| 266 | (<a href="http://java.sun.com/developer/technicalArticles/releases/j2se15/index.html">JPLIS</a>). |
| 267 | (<i>The original implementation using the JMangler framework is no longer maintained</i>).<br/> |
| 268 | In the future this integration will support aspect weaving not only at load time |
| 269 | but also while an application is running. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 270 | </li> |
| 271 | </ul></dd> |
| 272 | </dl> |
| 273 | <p></p> |
| 274 | |
| 275 | <div id="otequinox" class="headl"><div class="headr"> |
| 276 | <h1>OT/Equinox</h1> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 277 | </div></div> |
| 278 | <p></p> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 279 | Starting with the OTDT version 0.9.9 (2006) it is possible to develop Eclipse plugins using |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 280 | OT/J as the implementation language. |
| 281 | <ul> |
| 282 | <li>Using the plugin <code>org.eclipse.objectteams.otequinox</code>, a plugin ("aspect plugin") |
| 283 | may declare that it adapts classes from a specified other plugin ("base plugin").</li> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 284 | <li>By an integration of the Object Teams Runtime Environment with hooks in the |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 285 | Equinox implementation a <code class="keyword">team</code> class from an <em>aspect plugin</em> |
| 286 | can trigger byte-code aspect weaving into its <em>base plugin</em> at load-time. |
| 287 | As a result an aspect plugin can indeed adapt the behaviour of another plugin. |
| 288 | These bindings are declared using the extension point <code>aspectBindings</code> from |
| 289 | the mentioned plugin <code>org.eclipse.objectteams.otequinox</code>.</li> |
| 290 | <li>The initial client of the OT/Equinox technology is a tiny plugin which extends Eclipse's |
| 291 | "about plugins" dialog by additionally displaying which plugins are being adapted by |
| 292 | which aspect plugins. This information is found in the version column of the mentioned dialog. |
| 293 | This way a user of the OTDT can always check whether a given plugin performs as shipped, |
| 294 | or whether it has been adapted by another plugin.</li> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 295 | <li>The OTDT uses the capabilities of OT/Equinox for its own implementation. |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 296 | The technology is mainly used for making the JDT-UI aware of Object Teams without having |
| 297 | to copy source code or modifying source code of the JDT-UI in place.</li> |
| 298 | <li>A new project nature <img class="inline" alt="" src="../images/newpprj_wiz.gif"/> |
| 299 | <code>Object Teams Plugin Project</code> is provided, supporting the |
| 300 | development of plugins written in OT/J.</li> |
| 301 | <li>Support for OT/Equinox is added to the run/debug dialogs for all Equinox related launches.</li> |
| 302 | <li>If desired the load-time weaver can be disabled by commenting out or removing the following |
| 303 | line from the file <code>configuration/config.ini</code>: |
| 304 | <div class="ttindent" style="font-size:small;"> |
Stephan Herrmann | 7736a71 | 2010-07-01 16:47:30 +0000 | [diff] [blame] | 305 | osgi.hook.configurators.include=org.eclipse.objectteams.otequinox.hook.HookConfigurator</div> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 306 | Ideally, disabling OT/Equinox will be handled by temporarily uninstalling this feature, |
| 307 | but the required support by the p2 provisioning system is not yet stable enough to do this.</li> |
| 308 | </ul> |
| 309 | <p></p> |
| 310 | |
| 311 | <div id="debugging" class="headl"><div class="headr"> |
| 312 | <h1>Debugging</h1> |
| 313 | </div></div> |
| 314 | <p></p> |
| 315 | The debugger has been enhanced to support debugging of OT/J programs at the |
| 316 | source code level. It is possible to set breakpoints and step through Object Teams code. |
| 317 | |
| 318 | <dl> |
| 319 | <dt><b>Stepping through Code</b></dt> |
| 320 | <dd>The following language features produce byte codes for which a standard Java debugger |
| 321 | is not able to display appropriate source locations: |
| 322 | <ul> |
| 323 | <li>Role files (<a href="otjld/def/s1.html#s1.2.5"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 1.2.5</a>)</li> |
| 324 | <li>Implicit inheritance (<a href="otjld/def/s1.html#s1.3.1"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 1.3.1</a>)</li> |
| 325 | <li>Callout bindings (<a href="otjld/def/s3.html"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 3</a>) |
| 326 | (including callout override (<a href="otjld/def/s3.html#s3.1.e"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 3.1(e)</a>))</li> |
| 327 | <li>Callin bindings (<a href="otjld/def/s4.html"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 4</a>)</li> |
| 328 | </ul> |
| 329 | The OTDT-Debugger re-maps the byte codes produced by all this constructs to the |
| 330 | appropriate source locations. |
| 331 | As a result stepping through these sections of a program completely hides |
| 332 | the internal translations from the user.<p></p> |
| 333 | The following features are not yet fully supported by the debugger: |
| 334 | <ul> |
| 335 | <li>Role constructors (see <a href="otjld/def/s2.html#s2.4"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 2.4</a>)</li> |
| 336 | <li>Parameters with declared lifting (<a href="otjld/def/s2.html#s2.3.2"><img alt="" src="../images/ot_paragraph.png"/> |
| 337 | OTJLD § 2.3.2</a> — code for lifting is not filtered out yet)</li> |
| 338 | </ul></dd> |
| 339 | <dt><b>Setting Breakpoints</b></dt> |
| 340 | <dd>Use double click on ruler or context menu <code>Toggle Breakpoint</code> to set |
| 341 | breakpoints in OT/J-Code. Setting breakpoint in role files is supported, too.</dd> |
| 342 | <dt id="team_monitor"><b>New View: "Team Monitor"</b></dt> |
| 343 | <dd>The team monitor (<img src="../images/tm.gif" alt="" class="inline"/>) |
| 344 | view helps to debug issues related to team activation |
| 345 | (<a href="otjld/def/s5.html#s5"><img alt="" src="../images/ot_paragraph.png"/> OTJLD § 5</a>). |
| 346 | For this purpose it displays all known team instances and shows their activation status as one of |
| 347 | <ul> |
| 348 | <li>inactive <img src="../images/team_inact.gif" alt="" class="inline"/>,</li> |
| 349 | <li>active <img src="../images/team_act.gif" alt="" class="inline"/> |
| 350 | (either globally or for the thread selected in the debug view), or</li> |
| 351 | <li>implicitly active |
| 352 | <img src="../images/team_act_implicit.gif" alt="" class="inline"/> |
| 353 | (temporarily active because the team or one of its roles is currently executing code). |
| 354 | </li></ul> |
| 355 | Also, a selected team can be (de)activated interactively via the context menu.</dd> |
| 356 | <dt id="variables_filter"><b>Filtering variables</b></dt> |
| 357 | <dd>The OT/J compiler and the loadtime weaver both add some internal variables to the code. |
| 358 | By default such internal variables are hidden within the Team Monitor as well |
| 359 | as in the standard variables view. Both views can be configured to also show these internal |
| 360 | variables if so desired.</dd> |
| 361 | <dt><b>Known Issues and Limitations</b></dt> |
| 362 | <dd><ul> |
| 363 | <li>Dynamic code evaluation is not supported yet, |
| 364 | make sure to clear the Expression view.</li> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 365 | </ul></dd> |
| 366 | </dl> |
| 367 | |
| 368 | <div id="help" class="headl"><div class="headr"> |
| 369 | <h1>Help and additional Information</h1> |
| 370 | </div></div> |
| 371 | <p></p> |
| 372 | The following sources for help and for further information are bundled with the release: |
| 373 | <ul> |
| 374 | <li>A Tutorial (available via the welcome page) guiding through the first steps of using the OTDT.</li> |
| 375 | <li>Example programs demonstrating key features of Object Teams (also via the welcome page).</li> |
| 376 | <li>A detailed <a href="guide/webindex.html">guide</a> on using the OTDT via the Help Index, including a link to the |
| 377 | language definition (which is also bundled).</li> |
| 378 | <li>Problems that are listed in the problem view are linked (when possible) to a corresponding explanatory entry in the language definition. |
| 379 | (Context menu -> <img alt="" src="../images/ot_paragraph.png"/><code> Go to Language Definition</code>).</li> |
| 380 | </ul> |
Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 381 | </div><!-- content --> |
| 382 | </body> |
| 383 | </html> |