Implementations

  Some projects that are known to implement the <Unit of Measurement> API are:

    * Open Source Projects
    
        * {{{http://www.eclipse.org/uomo/}UOMo}} at Eclipse

        * {{{http://jscience.org/}JScience}}
    
    * Commercial / Closed Source
    
        * Web Applications at {{{http://www.globalservices.bt.com/}BT Global Services}}

  If you would like to add your product to this list, please let us known on the
  {{{mail-lists.html}mailing list}}.
