Originally developed at Nokia Research Center Tampere in 2003-2005, M3G was standarized under the Java Community Process as JSR 184 in 22 Dec, 2003.
M3G is an object-oriented interface consists of 30 classes that can be used to draw complex animated three-dimensional scenes, it provides two ways for developers to draw 3D graphics: immediate mode and retained mode.
When using this method, the developer must write code that specifically tells the rendering engine what to draw for each animation frame.
Retained mode always uses a scene graph that links all geometric objects in the 3D world in a tree structure, and also specifies the camera, lights, and background.
This allows developers to create content on desktop computers that can be loaded by M3G on mobile devices.