There are two entities in the MIDP Specification of J2ME: a MIDletSuite, and a MIDlet. A MIDletSuite is a collection of MIDlets and resources bundled together in a compressed JAR file (which, by the way, does not have to be kept after the MIDletSuite is "installed" on a device). MIDlets are the launchable entities within the suite.

For security reasons, it is assumed that MIDlets within a MIDletSuite are packaged together for a reason and should be able to interoperate. What's implied here is that the MIDlets share a name space; in other words, each MIDlet in the MidletSuite can "see" one another. Because they can see one another, they can launch one another (Class.forName metaphor).

In contrast, one MIDletSuite cannot launch another MIDletSuite. That's because they do not share name spaces. Since the CLDC+MIDP does not have a security manager (too big and complex for small devices), the MIDP expert group felt it more prudent to limit the interaction of downloaded applications to those that are packaged together by the provider.

PushRegistry.registerAlarm() register a time to launch a new application. PushRegistry class is a part of MIDP 2.0 standard. The only limitation is that some of the host device do not support Push Registry alarms.At the time of implementation it will throw ConnectionNotFoundException if the host device do not support the above method.

The method below will launch MIDLET from current MIDLET suite at the registered time.

 try {

     // mainApp is a midlet class
     long previous = PushRegistry.registerAlarm("mainApp",launchtime);

} catch ( java.lang.ClassNotFoundException cnf ) {

     System.out.println( "mainApp: Class not Found" );

} catch ( javax.microedition.io.ConnectionNotFoundException connnf ) {

     System.out.println( "mainApp: Connection Not Found" );
}