Un pequeño midlet que saca información básica del entorno de ejecución.

/*
 * SysInfo
 * Utilidad de ejemplo que aparece en libros viejos.
 * La hora no la saca bien.
 */

package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class SysInfo extends MIDlet implements CommandListener {
    private Command exitCommand;
    private Display pantalla;
    private Form formulario;

    /**
     * SysInfo
     * Constructor
     */
    public SysInfo() {
        // Tomamos la pantalla
       pantalla = Display.getDisplay(this);
        
       // Creamos el comando para salir
        exitCommand = new Command("Exit", Command.EXIT, 2);
        
        // Creamos el formulario principal
        formulario = new Form("SysInfo");


        // Sacamos la fecha actual
        Calendar calendar = Calendar.getInstance();

        // Un string con la fecha. La fecha del móvil sera 1.1.1970
        String fecha = calendar.getTime().toString();
        
        // Sacamos memoria total y disponible
        Runtime runtime = Runtime.getRuntime();
        String totalMem = Long.toString(runtime.totalMemory());
        String freeMem = Long.toString(runtime.freeMemory());
        //String alturaImagen = Integer.toString(pantalla.getBestImageHeight(0));

        // Más propiedades de pantalla
        String isColor = pantalla.isColor() ? "Sí" : "No";
        String numColors = Integer.toString(pantalla.numColors());

        // Creamos los StringItem y los metemos en el formulario
        formulario.append(new StringItem("", "Hora: " + fecha));
        formulario.append(new StringItem("", "Memoria total: " + totalMem));
        formulario.append(new StringItem("", "Memoria libre: " + freeMem));
        formulario.append(new StringItem("", "Color: " + isColor));
        formulario.append(new StringItem("", "nº de colores: " + numColors));
        //formulario.append(new StringItem("", "altura de imagen: " + alturaImagen));

        // Establecemos el comando de salida
        formulario.addCommand(exitCommand);
        formulario.setCommandListener(this);
}

    /**
     * startApp
     * se ejecuta al inicio de la aplicación
     */
    public void startApp() throws MIDletStateChangeException {
        // Establecemos el formulario en la pantalla
        pantalla.setCurrent(formulario);
    }

    /**
     * pauseApp
     * se ejecuta en caso de pausar la aplicación
     */
    public void pauseApp() {
    }

    /**
     * destroyApp
     * se ejecuta al terminar la aplicación
     */
    public void destroyApp(boolean unconditional) {
        pantalla.vibrate(5);
    }

    /**
     * commandAction
     * captura los comandos.
     */
    public void commandAction(Command c, Displayable s) {
        if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}