Behaviour you count on... hmmmm... that's always tricky. There's nothing strict in any specification about when a MIDlet class must be loaded. And even if it's in the specification, counting on it isn't always possible!
As a general... I hestitate to say "rule"... let's say "observation"... MIDlet loading is implemented something like:
Code:
String midletClassName = readMidletClassNameFromJad(index);
MIDlet midlet = (MIDlet) (Class.forName(midletClassName).newInstance());
midlet.startApp();
We can tell that Class.forName() is used, because if the MIDlet class is missing, we see a ClassNotFoundException (thrown by the runtime library), rather than a NoClassDefFoundError (thrown by the VM).
I'm not aware of any implementation loading all the MIDlets. I guess it's possible than an implementation might load the all before the menu of them is displayed, in order to verify that they all exist, but I have no evidence that this happens.
For me, a bigger worry would be what happens when the MIDlet terminates, and you return to the list of MIDlets in the suite (for devices that display a two-level menu, one of suites, then a second level of MIDlets in the suite). Does the VM terminate at the point? If it doesn't, then all the classes are still loaded, and their static variables will retain their state.
Personally, I'd avoid multiple MIDlets in a suite, mainly because I just don't have enough experience of how different devices behave.
Graham.