Java Metadata Interface
# Java Metadata Interface

Given that metadata is a set of descriptive, structural and administrative data about a group of computer data (for example such as a database schema), Java Metadata Interface (or JMI) is a platform-neutral specification that defines the creation, storage, access, lookup and exchange of metadata in the Java programming language.

## History

The JMI specification was developed under the Java Community Process and is defined by JSR 40 (a JSR is the formal document that describe proposed specifications and technologies for adding to the Java platform).

JMI is based on the Meta-Object Facility (or MOF) specification from the Object Management Group (or OMG). The MOF is a metamodel (a model of any kind of metadata) used notably to define the Unified Modeling Language (or UML).

It supports the exchange of metadata through XMI. XMI is a standard for exchanging metadata information via Extensible Markup Language (or XML). The MOF/XMI specifications are used for the exchange of UML models.

## Usage

Essentially, JMI can be used to write tools in Java for manipulating UML models, which can be used in Model Driven Architecture and/or Model Driven Development. There are many implementations of JMI, including the Reference Implementation from Unisys, SAP NetWeaver and Sun Microsystems's open-source implementation from the NetBeans group. JMI is compatible with Java SE 1.3 and above through:

* Standardized mappings from the MOF modeling constructs to Java;
* Reflective APIs for generic discovery and navigation of metadata models and instances.
