responsibility and that brings us to asking kindly that your Java application
is a good Symbian OS citizen. Apart from ensuring the quality of the
application itself (e.g., fixing defects and ensuring correct functionality),
the synergy of your Java application within the context of the Symbian
OS run-time environment should also be tested.
Let us give a few examples of what it means for your Java application
to be a good Symbian OS citizen:
The Java application must not affect the use of the core system features
or other applications. Whilst using the Java application, users should
still be able to switch away and use the main system applications and
features (e.g. phone, calendar/agenda, clock, and contacts).
During extended usage, the application must handle exceptional, ille-
gal, or erroneous user actions. At no time should the application crash
or freeze, and it should exit gracefully from any application-specific
exceptions. To ensure this, it is advisable to apply stressful test sce-
narios (such as, switching rapidly between applications and opening
many other applications simultaneously) to the device whilst using
the Java application as per its normal operation.
All interruptions must be handled as a user would expect and the
application should continue to operate normally after the interruption.
For example, a game should store its state and pause, whereas a more
passive or less interactive application should continue even during
the incoming interruption.
As you can see, this is very broad and general advice. There are no
hard, defined rules and we trust that you, as an application developer,
will achieve high standards of quality and become a good Symbian
OS citizen with some time and effort spent on thinking, planning and
9.4.2 Do Not Use Extreme Java ME Optimization Techniques
Symbian OS is a very powerful platform that does not impose hard limits
on computing resources for Java applications, such as the JAR size, heap
size, and so on (see Section 3.4). Having this power means that there
is no need to apply the kinds of extreme measurements that might be
needed on low-end devices. Applying extreme measurements can take
its toll in areas such as the ease of adding a new feature in the future,
code maintenance, and so on.
Let's give a few examples of extreme measurements that should be
discouraged. It is sometimes stated that in Java ME it is better not to use
Java interfaces (because of performance) and abstract classes (because of
increased JAR size), and that it is better to collapse inheritance hierarchies