•No more than ~500 files are used by installed MIDlet suites.
•JAR size listed in JAD matches actual JAR size.
•MIDlet suite name and MIDlet vendor are 32 bytes max
•MIDlet suite version must be higher than an already installed one.
Even though the Data and Program Space in Java System indicate more available space than the size of a particular JAR file, it doesn't necessarily mean the JAR will install. Moreover, if it is able to install, there’s no guarantee the MIDlet will execute because on occasion, more RAM is required for execution than installation. In addition, MIDlets that will not install or execute on the phone because of lack of memory will most certainly execute on the Sun Wireless Toolkit since the PC has virtually unlimited memory with respect to the size of MIDlets.
The memory requirements for MIDlet suite installation are the following:
First, there must be enough Data Space (file system space) to temporarily store the JAR. If there's not enough Data Space, the browser (in the OTA mechanism) will display the error "Insufficient Memory".
Secondly, there must be enough heap memory to uncompress the JAR file. The JAR size should be a predefined safe proportion of the heap size. The JAR maximum size recommended is 100K. This means that MIDlet typically will not install if the JAR is greater than 100K. There are exceptions to this and it depends on how many class files vs. resource files are contained within the JAR. If there's not enough heap, the device will typically display the message "Memory Full".
Third, there must be enough Data Space to store not only the temporary JAR but also all the resource files needed by the MIDlet. The JAR is essentially a zip file that must be uncompressed. It contains class files (the actual application) and resource files that are used by the MIDlet. These resources typically include, png images, database files and any other data the MIDlet needs. These resource files are stored in the Data Space during installation. The JAR is deleted after the installation phase completes. If there's not enough Data Space, the device will typically display the message "Memory Full". Also, note that total size of the uncompressed resources in the JAR doesn't necessarily equal the Data Space occupied by that MIDlet once installed.
Fourth, there needs to be enough Program Space to store the actual MIDlet. The class files in the JAR are the application files and are converted into a native format and stored in the Program Space during installation. This native format size will be greater than the total of the uncompressed class files in the JAR. Once stored in the Program Space, the MIDlets are referred to as DAV Objects. DAV reserves additional Program Space equal to the largest DAV Object. This reserved space cannot be used for additional MIDlets. Its purpose is to provide power loss protection during a DAV reclaim of the flash memory. The allocation of this reserved Program Space is often a point of confusion with users. When the largest DAV object is installed, the Program Space in Java System will be reduced by more than the size of Program Space in Suite Details. Java System shows the free Program Space. Suite Details shows the amount of Program Space occupied by that MIDlet.
Program and Data space notes:
To check Program and Data space from the Java menu, select “Java System” and press the “Select” soft key.