You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2009/10/28 19:42:07 UTC

svn commit: r830717 - in /incubator/uima/uimacpp/trunk: RELEASE_NOTES.html docs/overview_and_setup.html docs/uimacpp.dox

Author: eae
Date: Wed Oct 28 18:42:06 2009
New Revision: 830717

URL: http://svn.apache.org/viewvc?rev=830717&view=rev
Log:
UIMA-1602

Modified:
    incubator/uima/uimacpp/trunk/RELEASE_NOTES.html
    incubator/uima/uimacpp/trunk/docs/overview_and_setup.html
    incubator/uima/uimacpp/trunk/docs/uimacpp.dox

Modified: incubator/uima/uimacpp/trunk/RELEASE_NOTES.html
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/RELEASE_NOTES.html?rev=830717&r1=830716&r2=830717&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/RELEASE_NOTES.html (original)
+++ incubator/uima/uimacpp/trunk/RELEASE_NOTES.html Wed Oct 28 18:42:06 2009
@@ -18,19 +18,18 @@
  -->
 <html>
 <head>
-  <title>Apache UIMA C++ v2.2.2 Releate Notes</title>
+  <title>Apache UIMA C++ v2.3.0 Releate Notes</title>
 </head>
 <body>
-<h1>Apache UIMA C++ (Unstructured Information Management Architecture) v2.2.2 Release Notes</h1>
+<h1>Apache UIMA (Unstructured Information Management Architecture) for C++ v2.3.0 Release Notes</h1>
 
 <h2>Contents</h2>
 <p>
 <a href="#what.is.uima">1. What is UIMA?</a><br/>
 <a href="#major.changes">2. Major Changes in this Release</a><br/>
-<a href="#migrating">3. Migrating from IBM UIMA C++ to Apache UIMA C++</a><br/>
-<a href="#get.involved">4. How to Get Involved</a><br/>
-<a href="#report.issues">5. How to Report Issues</a><br/>
-<a href="#more.info">6. More Documentation on Apache UIMA C++</a><br/>
+<a href="#get.involved">3. How to Get Involved</a><br/>
+<a href="#report.issues">4. How to Report Issues</a><br/>
+<a href="#more.info">5. More Documentation on Apache UIMA C++</a><br/>
 </p>  
    
 <h2><a name="what.is.uima">1. What is UIMA?</a></h2>
@@ -80,135 +79,50 @@
 
 <h2><a name="major.changes">2. Major Changes in this Release</a></h2>
 <p>
-This section describes what has changed between version 1.4.4 and version 2.2.2 of 
-UIMA C++. A migration guide is provided below that describes the required updates to 
-your C++ code and descriptors. See Section 3, "Migrating from IBM UIMA C++ to 
-Apache UIMA C++".
+This section describes what has changed between version 2.2.2 and version 2.3.0 of 
+UIMA C++.
 </p> 
   
 <!--
 tutorial and other interlock with Java?
 -->
   
-<h3>2.1. Complete Content for Build, Test and Package</h3>
+<h3>2.1. Enhancements to C++ service wrapper for UIMA AS</h3>
 <p>
-This release includes a test suite for the uimacpp library. Also
-included are the tools to build both source and binary distribution
-packages.
-</p>
-  
-<h3>2.2. Extended Platform Support</h3>
-<p>
-On 64-bit Unix platforms the Apache UIMA C++ framework can be built as
-a 64-bit library. This enables C++, Perl, Python and Tcl analytics to
-fully utilize a 64-bit address space. Both XML and binary CAS
-serialization formats are compatible between 32 and 64-bit builds.
-</p>
-<p>
-MacOSX is now fully supported for SDK build and use.
-</p>
-  
-<h3>2.3. Better Integration with Java SDK</h3>
-<p>
-The Apache UIMA SDK shell scripts and Eclipse run configurations set native environment paths assuming the UIMA C++ SDK is installed directly under $UIMA_HOME. This enables the standard UIMA SDK tools to work seemlessly with C++ based annotators.
-</p>
-<p>
-On Unix platforms, the UIMA C++ examples directory can be loaded as an Eclipse CDT project, supporting development of both UIMA C++ and Java components in the same Eclipse IDE.
-</p>
-<p>
-By default, when a uimacpp annotator is instantiated from Java, the annotator runs in the JVM process with communication via the JNI. Multiple uimacpp annotators instantiated in the same JVM must share the same native environment, therefor they must share the same version UIMA C++ framework. As before, a uimacpp annotator can be isolated by wrapping it as a Vinci service.
-</p>
-<p>
-A new approach is provided in this release which allows process isolation of uimacpp annotators without wrapping each one in a JVM. When deployed from Java as a UIMA-AS service, a uimacpp annotator is spawned by the JVM as native process. The native UIMA-AS service communitates to clients via JMS messaging, completely independently of the JVM. However, the native service connects back to the JVM to enable JMX monitoring and logfile integration with other UIMA annotators running in the same JVM.
-</p>
-  
-<h3>2.4. C++ Namespace and Module Name Changes</h3>
-<p>
-The UIMA C++ namespace and shared library has changed from "taf" to "uima". 
-Environment variable TAFROOT has changed to UIMACPP_HOME.
-All of the source files have dropped the prefix "taf_". SDK header files 
-have moved from $TAFROOT/include/ to $UIMACPP_HOME/include/uima/. 
-</p>
-  
-<h3>2.5. XML Descriptor Changes</h3>
-<p>
-The XML namespace in UIMA component descriptors has changed from 
-http://uima.watson.ibm.com/resourceSpecifier to 
-http://uima.apache.org/resourceSpecifier. The value of the 
-&lt;frameworkImplementation> for C++ components must now be org.apache.uima.cpp.
-Although <code>taeDescription</code> is still supported, the use of <code>analysisEngineDescription</code>
-is recommended.
-</p>
-  
-<h3>2.6. TCAS replaced by CAS</h3>
-<p>
-In Apache UIMA the TCAS interface has been removed. All uses of it must now be 
-replaced by the CAS interface. All methods that used to be defined on TCAS 
-were moved to CAS. 
-All annotators should now derive from class <code>Annotator</code>, although for backwards
-compatibility C++ annotators can still derive from the class <code>TextAnnotator</code>.
-For all C++ component types, the CAS delivered to the process method will be a base CAS if Sofa capabilities are 
-declared in the component descriptor, else the selected CAS view.
-</p>
-<p>
-The method 
 <ul>
- <code>CAS.getTCAS(getSofa(getAnnotatorContext().mapToSofaID("SofaName")))</code>
+<li>Separate JMS listener for getMeta requests (same as Java services)</li>
+<li>Automatic reconnect to AMQ broker when broker becomes available again</li>
+<li>Fixed bug with termination when deployed from Java as separate process</li>
+<li>Fixed bug with timing statistics reported to JMX when deployed from Java</li>
+<li>Fixed bug with capability specs returned in getMeta reply</li>
 </ul>
-has been replaced with 
-<ul>
- <code>CAS->getView("SofaName")</code>
-</ul>
-as the Sofa mapping code has been integrated into the CAS.
 </p>
 
-<h3>2.7. Support added for XMI Serialization</h3>
-<p>
-The proposed standard for XML interchange of CAS data, XMI serialization, 
-is now supported by UIMA C++. The C++ application driver, runAECpp, has a new option
-to specify XMI format input files, and the output format is now XMI.
-</p>
-<p>
-XMI serialization is also key to implementing the UIMA-AS service wrapper for uimacpp-based annotators.
-</p>
-  
-<h3>2.8. Building the SDK on Unix is Simplified</h3>
+<h3>2.2. Enchancements to runAECpp application</h3>
 <p>
-The Unix build is simplified by redistributing GNU automake output files
-in the source tarball. When building from an SVN checkout, up-to-date versions
-of GNU automake, autoconf and libtool are still required.
+<ul>
+<li>Added -lenient option to ignore out-of-typesystem data for Xmi format input files</li>
+<li>Options added to support multi-threaded stress testing of a C++ annotator</li>
+</ul>
 </p>
 
-<h2><a name="migrating">3. Migrating from IBM UIMA C++ to Apache UIMA C++</a></h2>
+<h3>2.3. Parameter overrides supported for C++ annotators colocated with JVM</h3>
 <p>
-Although not required, CPP component descriptors of type <code>taeDescription</code> should be changed to type <code>analysisEngineDescription</code>.
+<ul>
+<li>Parameter overrides now supported for C++ annotators that are included in Java aggregates
+as colocated components, or from Java application instantiating C++ annotators directly</li>
+</ul>
 </p>
 
-<h3>3.1. Migrating C++ Source Code</h3>
+<h3>2.4. UIMA AS C++ deployment descriptor sample added</h3>
 <p>
-This section describes what source code changes are required to migrate from
-UIMA C++ version 1.4.4 to Apache UIMA C++ v2.2.2. Please note that the first two changes
-are order dependent.
-</p> 
-
 <ul>
-<li>Replace [case sensitive] all occurances of <code>getTCAS</code> with <code>getView</code></li>
-<li>Replace [case sensitive] all occurances of <code>TCAS</code> with <code>CAS</code></li>
-<li>Replace [case sensitive] all occurances of <code>TAF_</code> with <code>UIMA_</code></li>
-<li>Replace [case sensitive] all occurances of <code>taf_</code> with <code>uima/</code></li>
-<li>Replace <code>"tafapi.hpp"</code> with <code>"uima/api.hpp"</code></li>
-<li>Replace <code>TextAnnotator</code> with <code>Annotator</code></li>
-<li>Replace the generic C API wrapper, usually at the bottom of a cpp component, with
-the MAKE_AE() macro. See sample code in $UIMACPP_HOME/examples/src</li>
+<li>UIMA C++ services can be deployed from Java as separate processes. A sample descriptor is
+included along with associated documentation.</li>
 </ul>
-
-<h3>3.1. Migrating Scriptator Source Code</h3>
-<p>
-Tcl source code using variables of type TCAS should use CAS instead.
-No changes should be necessary for Perl or Python source.
 </p>
   
-<h2><a name="get.involved">4. How to Get Involved</a></h2>
+<h2><a name="get.involved">3. How to Get Involved</a></h2>
 <p>
 The Apache UIMA project really needs and appreciates any contributions, 
 including documentation help, source code and feedback.  If you are interested
@@ -217,14 +131,14 @@
   http://incubator.apache.org/uima/get-involved.html</a>.
 </p>
   
-<h2><a name="report.issues">5. How to Report Issues</a></h2>
+<h2><a name="report.issues">4. How to Report Issues</a></h2>
 <p>
 The Apache UIMA project uses JIRA for issue tracking.  Please report any 
 issues you find at 
 <a href="http://issues.apache.org/jira/browse/uima">http://issues.apache.org/jira/browse/uima</a>
 </p>
   
-<h2><a name="more.info">6. More Documentation on Apache UIMA C++</a></h2>
+<h2><a name="more.info">5. More Documentation on Apache UIMA C++</a></h2>
 <p>
 Please see <a href="docs/overview_and_setup.html">Overview and Setup</a>
 for a high level overview of UIMA C++,

Modified: incubator/uima/uimacpp/trunk/docs/overview_and_setup.html
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/docs/overview_and_setup.html?rev=830717&r1=830716&r2=830717&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/docs/overview_and_setup.html (original)
+++ incubator/uima/uimacpp/trunk/docs/overview_and_setup.html Wed Oct 28 18:42:06 2009
@@ -24,7 +24,7 @@
    <title>Apache C++ Overview and Setup</title>
    <link rel="stylesheet" href="css/stylesheet.css" type="text/css">
  </head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en" id="d0e2"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>Apache UIMA C++ Overview and Setup</h1></div><div><div class="authorgroup"><h3 class="corpauthor">Authors: The Apache UIMA Development Community</h3></div></div><div><p class="releaseinfo">Version 2.2.2</p></div><div><p class="copyright">Copyright &copy; 2006, 2007 The Apache Software Foundation</p></div><div><p class="copyright">Copyright &copy; 2004, 2006 International Business Machines Corporation</p></div><div><div class="legalnotice"><a name="d0e15"></a><p> </p><p><b>Incubation Notice and Disclaimer.&nbsp;</b>Apache UIMA is an effort undergoing incubation at the Apache Software Foundation (ASF). 
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en" id="d0e2"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>Apache UIMA C++ Overview and Setup</h1></div><div><div class="authorgroup"><h3 class="corpauthor">Authors: The Apache UIMA Development Community</h3></div></div><div><p class="releaseinfo">Version 2.3.0</p></div><div><p class="copyright">Copyright &copy; 2006, 2007 The Apache Software Foundation</p></div><div><p class="copyright">Copyright &copy; 2004, 2006 International Business Machines Corporation</p></div><div><div class="legalnotice"><a name="d0e15"></a><p> </p><p><b>Incubation Notice and Disclaimer.&nbsp;</b>Apache UIMA is an effort undergoing incubation at the Apache Software Foundation (ASF). 
           Incubation is required of all newly accepted projects until a further review indicates that 
           the infrastructure, communications, and decision making process have stabilized in a manner 
           consistent with other successful ASF projects. While incubation status is not necessarily 
@@ -52,57 +52,65 @@
 
 
 <h2>1.0 Apache UIMA C++ Overview</h2>
-<p>The Apache UIMA C++ framework is primarily intended to facilitate the creation of UIMA compliant 
-analysis engines from analytics written in C/C++. The rich set of CAS interface methods minimizes
+<p>The Apache UIMA C++ framework allows the creation of UIMA compliant 
+analysis engines from analytics written in C++ and several scripting langauges that
+can utilize C++ libraries. A rich set of standard UIMA interface methods minimizes
 the effort to extract input data from a CAS and then update the CAS with the analytic results.
-The UIMA C++ framework transparently moves the CAS from Java to C++ environments, and from a UIMA
-client to a UIMA service. 
+The UIMA framework transparently moves the CAS between Java and C++ components and between 
+UIMA components running in different processes.
 </p>
 <p>
-A UIMA C++ component is identified as such to the framework by specifying in its
+A UIMA C++ component is identified as such in its
 component descriptor:
   <ul>
     <code>&lt;frameworkImplementation>org.apache.uima.cpp&lt;/frameworkImplementation></code>
   </ul>  
 </p>
-<p>The UIMA C++ framework supports embedding UIMA components in a native process. There are APIs to 
-parse component descriptors, instantiate and call analysis engines.
-A UIMA C++ test driver is available so that a UIMA C++ analytic can be developed and tested with 
+<p>UIMA C++ annotators can be utilized from C++ applications, from Java applications,
+and can be aggregated with other UIMA-compliant annotators.
+For C++ applications the UIMA C++ framework has APIs to 
+parse component descriptors, then instantiate and call analysis engines.
+A C++ test driver is available so that a UIMA C++ analytic can be developed and tested with 
 standard native programming tools; no programing in Java is required.
-On the other hand, for a more consistent development environment
+On the other hand, for a more consistent development environment,
 Eclipse can provide a single IDE for both Java and C++ components
 using the <a href="http://www.eclipse.org/cdt/">CDT</a>.
 </p>
-<p>There are two approaches to integrating UIMA C++ analytics with the
-UIMA Java framework: using the Java Native Interface (JNI), and using
-a native C++ service wrapper which is compatible with UIMA AS. Using
+<p>For Java applications, there are two approaches to integrating UIMA C++ analytics:
+using the Java Native Interface (JNI), and using
+a C++ service wrapper to create a UIMA AS compatible service. Using
 the JNI, a C++ analysis engine can be used anywhere a Java analysis
 engine is used; in this case a Java proxy will instantiate the uimacpp
 framework though the JNI. Note that if more than one C++ component is
 used in the same JVM, they must share the same native
-environment. Using UIMA AS, a C++ component is started as a separate
-process, and each component can have different native environments if
-desired. When C++ is launched automatically from Java, logging is by
-default integrated with other UIMA components running in the same JVM.
+environment. Using UIMA AS, a C++ component can be started as a separate
+process, and therefor each component can have different native environments, if
+desired. When C++ is launched automatically from Java, logging and JMX monitoring
+of the annotator is done via the JVM.
 </p>
 
 <h3>1.1 UIMA C++ Functionality</h3>
 <p>The UIMA C++ framework implements a subset of that in Java. Major functionality consists of:
-<ol>
+<ul>
 <li>The ability to instantiate primitive or aggregate analysis engines.</li>
 <li>The UIMA context object for each analysis engine.</li>
 <li>Complete set of CAS APIs.</li>
-<li>CAS data serialization compatible with UIMA Java. XMI, XCAS and binary formats all supported.</li>
-<li>A JNI controller supporting direct integration with UIMA running on Java.</li>
+<li>XMI, XCAS and binary data serialization formats all supported.</li>
 <li>Support for analytics written in Perl, Python and Tcl.</li>
 <li>A driver utility for native development and testing.</li>
+<li>Two approaches to integration with UIMA running on Java:
+<ol>
+<li>A JNI controller which runs the C++ annotator in a JVM process.
+<li>A UIMA AS service wrapper which allows the C++ annotator to run in a native process.</li>
 </ol>
+</ul>
 </p>
 <p>Major UIMA functionality missing in the C++ framework:
-<ol>
+<ul>
 <li>No custom flow controller for aggregates.</li>
-<li>No multithreaded application driver (e.g. the CPM).
-</ol>
+<li>No support for remote delegates in a C++ aggregate.</li>
+<li>No UIMA AS client API</li>
+</ul>
 </p>
 
 <p>UIMA compliant annotators can be written in Perl, Python and Tcl using C++ annotators included in this package. For further details see <a href="../scriptators/perl/Perl.html">Perl</a>, <a href="../scriptators/python/Python.html">Python</a> and <a href="../scriptators/tcl/Tcl.html">Tcl</a>.
@@ -134,7 +142,7 @@
 Both the UIMA C++ framework and the users' C++ components are implemented as
 shared libraries and must be available to the native library loader.
 On Linux these directories must be in the LD_LIBRARY_PATH, in DYLD_LIBRARY_PATH on MacOSX
-and on Windows in the system PATH. The UIMA C++ test driver should be added to the system PATH.
+and on Windows in the system PATH. UIMA C++ executables should be added to the system PATH.
 </p>
 <h4>On Linux</h4>
   <ul>
@@ -201,7 +209,7 @@
 <a href="../examples/readme.html">C++ Examples</a>
 </p>
 
-<h3>2.3 Testing Interoperability with Java</h3>
+<h3>2.3 Testing Interoperability with UIMA on Java</h3>
 To test the interoperability with UIMA Java SDK, make sure UIMA_HOME is set to the location of the UIMA SDK, and that its bin directory is in the PATH. Run DaveDetector as follows:
 <h4>2.3.1 On Linux</h4>
 <ul>
@@ -211,40 +219,63 @@
 <ul>
     <code>runAE descriptors\DaveDetector.xml data</code>
 </ul>  
-The runAE driver will process all files in the data directory and DaveDetector should find Daves in some of them.
+The runAE driver will process all files in the data directory and DaveDetector should find Dave in some of them.
+
+<h3>2.3 Testing Interoperability with UIMA AS</h3>
+UIMA AS is an add-on to the core UIMA package; it must be separately downloaded and installed. To test interoperability with UIMA AS, make sure UIMA_HOME is set to the location of the combined SDK, and that its bin directory is in the PATH. Run the C++ MeetingAnnotator as follows:
+<h4>2.3.1 Adjust example Deployment Descriptor</h4>
+The UIMA AS example C++ deployment descriptor includes specifications for the UIMACPP environment.
+Following the convention for UIMA examples, this descriptor specifies paths starting with "C:/Program Files/apache-uima". This path prefix must be changed in the descriptor to be the parent directory of UIMACPP.
+<h4>2.3.2 On Linux</h4>
+<ul>
+    <code>
+      start the ActiveMQ broker following directions in $UIMA_HOME/uima-as/readme<br>
+      cd $UIMACPP_HOME/examples/tutorial<br>
+      runRemoteAsyncAE.sh  tcp://localhost:61616 MeetingAnnotator \<br>
+      <dir><code>-d descriptors/Deploy_MeetingAnnotator.xml</code></dir>
+    </code>
+</ul>  
+<h4>2.3.3 On Windows</h4>
+<ul>
+    <code>
+      start the ActiveMQ broker following directions in %UIMA_HOME%\uima-as\readme<br>
+      cd %UIMACPP_HOME%\examples\tutorial<br>
+      runRemoteAsyncAE  tcp://localhost:61616 MeetingAnnotator \<br>
+      <dir><code>-d descriptors\Deploy_MeetingAnnotator.xml</code></dir>
+    </code>
+</ul>  
+The runRemoteAsyncAE driver will deploy the MeetingAnnotator binary from the distribution package as a UIMA AS service and send it an empty CAS to process.
 
 <h2>3.0 Developing a C++ Component</h2>
 
 <h3>3.1 Developing UIMA C++ Components without Java</h3>
 <p>
 It is advantageous to develop C++ components as stand-alone C++ applications.
-The program <CODE>runAECpp</CODE> found under the $UIMACPP_HOME/bin directory is a
-C++ utility that imports one or more XML format CAS files into CAS objects and for each calls the 
-<CODE>process</CODE> method of the specified UIMA C++ component, optionally
-saving the results as XML format CAS files.
-</p>
-<p>
-Both XMI and XCAS format CAS files are supported by runAECpp.
-The <CODE>XmiWriterCasConsumer</CODE> and <CODE>XCasWriterCasConsumer</CODE> are Java UIMA components 
-that can be run at any point
-in the CPE flow to export the contents of the CAS object to a file in an XML format. 
-</p>
-<p>
-To develop using XML CAS serialization, use one of the above serializers to dump
-the CAS at the point the C++ component would be called, 
-or even create the XML content with an editor.  Use runAECpp to process XML format CAS input as follows:
+The program <CODE>runAECpp</CODE> found in $UIMACPP_HOME/bin is a
+native utility that instantiates the specified C++ annotator, imports
+input files into CAS objects, and for each input calls the annotator's
+<CODE>process</CODE> method.
+<code>runAECpp</code> supports input files in plain text (the default), as well as files in XMI and XCAS format.
+The output CASes are optionally saved.
 </p>
 <ul>
-<code>runAECpp &lt;UimaCppDescriptor&gt; &lt;InputFileOrDirectory&gt; [&lt;OutputDirectory&gt;] [-x | -xmi] [-s ViewName] [-l loglevel]</code>
+<code>runAECpp UimaCppDescriptor InputFileOrDirectory [OutputDirectory] [-x | -xmi] [-lenient] [-s ViewName] [-l loglevel] [-n numInstances] [-r numRuns] [-rand] [-rdelay Max]</code>
 </ul>
 <ul>
-<li>UimaCppDescriptor is the C++ component descriptor</li>
-<li>InputFileOrDirectory is the name of an input file or a directory containing input files</li>
-<li>If an optional OutputDirectory is specified, the contents of the CAS after processing will be written out with the same names as the input files. Be careful not to specify the directory containing the input files!</li>
-<li>Use the -x option if the input file(s) are in XCAS format. Use the -xmi option to process XMI format CAS input. Otherwise, input files are assumed to be text files and are used to create the document text for analysis.</li>
-<li>To support multi-View scenarios where the C++ component is expecting a view of a specific Sofa, the name of the view to use can be provided</li>
-<li>The loglevel for messages can be specified</li>
+<li>UimaCppDescriptor is the C++ component descriptor.</li>
+<li>InputFileOrDirectory is the name of an input file or a directory containing input files.</li>
+<li>OutputDirectory, if specified the contents of the CAS after processing will be written out with the same names as the input files. Be careful not to specify the directory containing the input files.</li>
+<li>-xmi specifies XMI format input files.</li>
+<li>-x specifies XCAS format input files.</li>
+<li>-lenient ignores out-of-typesystem data. Only valid for XMI format.</li>
+<li>-s ViewName specifies which view in a multi-view input CAS to use for a sofa-unaware component.</li>
+<li>-l loglevel for trace messages.</li>
+<li>-n instances of the annotator can be specified. Each runs in a different thread.</li>
+<li>-r iterations over the input files.</li>
+<li>-rand flag specifies a random processing order of the input files.</li>
+<li>-rdelay Max causes a random delay (between 0 and Max milliseconds) to be inserted before calls to process.</li>
 </ul>
+<p>The options -r, -rand and -rdelay are quite useful for detecting threading problems with annotators intended for multi-threaded deployments.</p>
 <p>Sample XMI and XCAS format CAS files are included with the UIMA C++ examples. After building the 
 <CODE>SofaExampleAnnotator</CODE> example as described above for DaveDetector, try:</p>
 <ul>
@@ -259,8 +290,7 @@
 </p>
 
 <h3>3.2 Debugging UIMA C++ Components</h3>
-<p>Another advantage in developing UIMA C++ components as stand-alone applications is the use of native debuggers.
-The component driver, runAECpp, simplifies running the C++ component under a native debugger.
+<p>The component driver, runAECpp, simplifies running the C++ component under a native debugger.
 </p>
 <h4>3.2.1 Debugging on Windows</h4>
 <p>The UIMA C++ framework has special provisions for debugging on Windows.
@@ -277,7 +307,7 @@
 For example, the maximum stack size for a thread running under a JVM may be 100KB versus
 1MB for a native command line application. Use "java -X" to get more information on non-standard JVM options.
 </p>
-<h4>3.3.1 Running Debug Modules on Windows</h4>
+<h4>3.3.1 Running Debug Modules under Java on Windows</h4>
 <p>In order to run UIMA C++ components built debug, Java must load the debug version of the framework.
 Define the Java system property DEBUG_UIMACPP to specify use of the debug framework. 
 A convenient way to pass JVM properties to UIMA's Java commandline utilities, such as runAE.sh, is to define 

Modified: incubator/uima/uimacpp/trunk/docs/uimacpp.dox
URL: http://svn.apache.org/viewvc/incubator/uima/uimacpp/trunk/docs/uimacpp.dox?rev=830717&r1=830716&r2=830717&view=diff
==============================================================================
--- incubator/uima/uimacpp/trunk/docs/uimacpp.dox (original)
+++ incubator/uima/uimacpp/trunk/docs/uimacpp.dox Wed Oct 28 18:42:06 2009
@@ -40,7 +40,7 @@
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = "v2.2.2"
+PROJECT_NUMBER         = "v2.3.0"
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put.