<html>
  <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 type="text/css" href="../css/book.css">
	<link rel=stylesheet type="text/css" href="otguide.css">
    <title>Java builder extended for Object Teams</title>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  </head>
  <body>
    <h1>Java builder extended for Object Teams</h1>
    <p>The <b>OT/J builder</b> is a seamless extension of the Java builder for Object Teams.
    It manages the incremental compilation of individual source files within a project,
    which aims at performing minimal work only, as to speed up compilation for large 
    projects if only small changes have been performed.
    </p><p>
    By the introduction of role files 
    (<a href="otjld/def/s1.html#s1.2.5"><img src="../icons/ot_paragraph.gif"> 1.2.5</a>)
    even inner classes (here: roles) can be compiled individually.
    Incremental compilation is guided by an analysis of the various dependencies among classes.
    </p><p>    
	If for some reason incremental compilation fails were it should not, a full build can
	be triggered by <span class="ui">Project-&gt;Clean...</code>.
	</p>
    <p>Note that the produced class files contain standard Java byte code. However, for execution
    the Object Teams Runtime Environment (OTRE) is needed in order to weave aspect code into
    base classes. Additional options in the launching dialog will take care of this detail for you
    (see <a href="running.html">Running Object Teams programs</a>).
  </body>
</html>