Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

This page collects differences between Version 2 of UIMA and Version 1.

Non-Compatible Changes


  • Java Packages
    • for public core framework API, → org.apache should be the only change.
    • for packages with "reference_impl" in the name, there have been significant changes. "reference_impl" was shorted to "impl", but also the segments of the package name have been reordered (e.g. instead of org.apache.uima.impl.analysis_engine we have org.apache.uima.analysis_engine.impl).
    • all of the tools are now under
    • all of the service adapters are now under org.apache.uima.adapter
      • replaced by org.apache.uima.adapter.vinci.VinciAnalysisEngineService_impl
  • Examples have been moved from %UIMA_HOME%/docs/examples to %UIMA_HOME/examples

Functionality Removed

  • Support for xi:include in the descriptors has been removed. API methods that were used to turn xinclude support on/off have also been removed.

Examples Removed

  • SimpleXmlCasInitializer has been removed, since CAS Initializer are now deprecated. Uses of this component have been replaced with XmlDetagger (a multi-sofa annotator).
  • FileSystemCollectionReader no longer supports a CAS Initializer.
  • SimpleRunCPM no longer supports a CAS Initializer.

New Annotator Interfaces

UIMA 2.x has a new set of Annotator interfaces. Annotators should extend CasAnnotator_ImplBase or JCasAnnotator_ImplBase instead of the v1.x TextAnnotator_ImplBase and JTextAnnotator_ImplBase.

NOTE: The v1.x annotator interfaces are unchanged and are still supported for backwards compatibility.

Differences between v2 and v1 annotator interfaces

The following summarizes what has changed between the v2 annotator interfaces (CasAnnotator_ImplBase, JCasAnnotator_ImplBase) and the v1 interfaces (TextAnnotator_ImplBase,JTextAnnotator_ImplBase).

Result Specification

The Result Specification was previously passed in on each process() call as the 2nd parameter. Now it is set when changed and it's up to the annotator to store it in a local field and make it available
when needed.

This approach lets the annotator receive a specific signal (a method call) when the Result Specification changes. Previously, it would need to check on every call to see if it changed.

The default impl base classes provide set/getResultSpecification(...) methods for this.

Annotator Context now UimaContext

The context for the Annotator is the same as the overall UIMA context. The impl base classes provide a getContext() method which returns now the UimaContext object

Process method throws AnalysisEngineProcessException, not AnnotatorProcessException

See #exceptions for discussion.

Exceptions rationalization

In version 1 there were different exceptions for the methods of an AnalysisEngine and for the
corresponding methods of an Annotator; these were merged in version 2.

  • AnnotatorProcessException (v1) → AnalysisEngineProcessException (v2)
  • AnnotatorInitializationException (v1) → ResourceInitializationException (v2)
  • AnnotatorConfigurationException (v1) → ResourceConfigurationException (v2)
  • AnnotatorContextException (v1) &rarr: ResourceAccessException (v2)

Capability sets → One Capability Set

In version one, you can define multiple capability sets. These were not supported well, and for version two, this is now simplified - you should only use one capability set. (For backwards compatibility, if you use more, this won't cause a problem for now).