A configuration is a complete Java runtime environment, consisting of three things:
* A Java virtual machine (VM) to execute Java bytecode.
* Native code to interface to the underlying system.
* A set of core Java runtime classes.
To use a configuration, a device must meet certain minimum requirements as defined in the configuration's formal specification. Although a configuration does provide a complete Java environment, the set of core classes is normally quite small and must be enhanced with additional classes supplied by J2ME profiles or by configuration implementor. In particular, configurations do not define any user interface classes.