Differences between Geotools's API and OpenGIS specification

The org.geotools.cs, ct and pt packages are basically org.opengis mirrors. Most classes have a 1 to 1 equivalent. However, the Geotools's API is modified in order to make it more "Java friendly" and ease interoperability with other Java packages (specially Java2D and Java Advanced Imaging). The main differences are listed below:

Naming convention

The OpenGIS specification requires that every classes and interfaces name begin with a two letters prefix (e.g. CS_ in org.opengis.cs.CS_CoordinateSystem and CT_ in org.opengis.ct.CT_CoordinateTransformation). Those prefix are redundant with package name and are omitted in Geotools classes.

Enumeration classes

The OpenGIS's specification define enumeration classes, but use them only for parameters and return values in method calls. Enumeration constants are declared as integer. In the Geotools's API, all enumeration classes are immutable. Enumeration constants are instances of the actual enumeration class instead of integers. Names are uppercase, with no redundant prefix like CT_TT, CT_DF or CS_AO.

Localization support

Geotools provides localization support. Methods defined as getName() by OpenGIS are redefined as getName(Locale) by Geotools.

Classes hiearchy changes

Method's name and signature changes

Method's behavior changes

Classes replacement

Some OpenGIS interfaces have been omitted in order to avoid redundancies with standard Java classes or other OpenGIS classes:
 
Omitted class or method Replacement
CS_Unit and subclass org.geotools.units.Unit, a temporary placeholder for the upcomming javax.units package from JSR-108.
CT_Parameter[] and
CS_ProjectionParameter[]
javax.media.jai.ParameterList