an incoming connection, the associated MIDlet is started if it is not
already running and accessing the Java connection results in IPC calls to
the SystemAMS Connection component to perform the actual operation.
For each Generic Connection Framework (GCF) protocol that supports
Push, SystemAMS manages a connection plug-in that is loaded and
initialized at SystemAMS boot time to recreate a static or dynamically
defined server connection outside the context of a running MIDlet.
As a consequence of MIDP Push, all connections that canbe registered
to the Push Registry always live in the SystemAMS process. That remains
true even if they are not registered as a Push connection, in order to
prevent duplicate functionality between the MIDP run-time process and
the AMS. Additionally, in the case of listening connections that can
spawn a new connection when an incoming request is received, the
newly created connection cannot be transferred to any other process.
The new connection lives in the same process in which it was created
(the SystemAMS process). The MIDP run-time process enables MIDlets to
access those connections through IPC.
10.4 Mean and Lean Virtual Machine
When referring to the VM, the referral is always to the headless language
and core classes engine only (i.e., no UI). At the time of writing this
book, the majority of shipped devices include a port of Sun's CLDC-HI
HotSpot VM 1.1 implementation (which implements v1.1 of the CLDC
specification). However, the VM is a replaceable module in the Java ME
subsystem; for example, in S60 3rd Edition FP2, the included VM is J9
VM technology contains a wealth of theory and practical tricks that
make the JVM one of the most optimized pieces of code written for mobile
phones. To peek into some of those goodies, we use the open-source
CLDC-HI HotSpot VM as a reference (all sources are available in the
PhoneME project 4 ).
Just one note before we continue. Please do not use the term 'KVM'
because there is no KVM any more! The KVM was a major milestone in
Java ME evolution but it was put behind a glass box in the Java museum
a long time ago. Symbian OS v7.0s devices (e.g., the legendary Nokia
6600) were shipped with Monty, which was an early version of CLDC-HI
HotSpot. So the term 'KVM' is an ancient word which belongs to the Java
hall of fame, but does not exist on today's devices. These come with VMs
that are much more advanced than the KVM, which was slow (it was an
interpreter only, no JIT) and had high memory usage.
We previously said that one of the few areas where the Java ME
subsystem can reuse existing solutions is VM technology. So the VM
4 See phoneme.dev.java.net