
CEE-J versus the Sun reference implementation
How does CEE-J handle exception support?
How about threading and synchronization support?
Does CEE-J support ROMized class files?
CEE-J versus the Sun reference implementation
CEE-J is a clean room implementation of Sun's Java technology, Skelmir is not a licensee of Sun. CEE-J has successfully passed the Mauve and Modena Test Suites as well as our own internally developed test regimen.
Changes to Sun's Java Specification do not happen overnight. The time it takes for new specifications to surface in the marketplace makes maintaining the CEE-J virtual machine and libraries achievable. While it certainly takes development cycles for our team to engineer these changes to CEE-J, our product is and will remain current and evolve in a timeframe acceptable to our customer base.
Skelmir targets resource constrained devices over the PC, where it is not necessary or desirable for all class libraries to be deployed on our customers' target platforms. This eases the burden of strict compliance to the current specification.
CEE-J is compatible with the virtual machine for MHP 1.0.3.
java.applet
java.awt
java.awt.event
java.awt.image
java.awt.peer
java.beans
java.io
java.lang
java.lang.ref
java.lang.reflect
java.math
java.net
java.rmi
java.security
java.security.acl
java.security.cert
java.security.spec
java.sql
java.text
java.util
java.util.jar
java.util.zip
org.dvb.ui
Skelmir has produced an implementation of a minimal virtual machine. This is a virtual machine with parts of the class library and language specification removed. The benefit of this is the ability to run on memory and storage constrained systems. A series of #defines controls each feature removed from the VM; it is possible to add features back into the minimal VM if they are required. This allows you to select the feature set you need and achieve the smallest possible footprint.
The class library for Skelmir's minimal VM is 15k. The minimal VM itself ranges from about 80-200k depending on the options enabled.
Skelmir also supports the virtual machine specifications targeted towards communication devices such as cell phones, messaging devices and wireless PDAs. For more information see our Cellphone page.
CEE-J uses Skelmir's proprietary cross-platform graphics library to support its implementation of AWT. It provides drawing primitives, font rendering, and event notification. Because CEE-J implements AWT with this graphics library, its dependence on platform specific graphics APIs is greatly reduced. Also, it is possible to port CEE-J to platforms and operating systems without their own graphics APIs.
CEE-J's AWT is based on a cross-platform set of GUI components (list boxes, text fields, buttons, etc.) This enables quick ports of CEE-J's AWT to new platforms and allows full AWT capabilities on platforms that do not have their own native GUI components.
How does CEE-J handle exception support?
CEE-J supports mixing C++ and Java exceptions.
This means that developers writing native methods in
C++ can throw a Java exception with the C++ 'throw'
statement. Similarly, C++ code can catch a Java exception
with the C++ 'try'/'catch' mechanism. Also, Java code
can catch an exception thrown from C++. This shared
exception support can enhance the readability of native
code. Also, on some platforms it is possible for Java
code to catch low-level exceptions from native methods
(bus errors, illegal access errors).
How about threading and synchronization
support?
CEE-J maps virtual machine threads to a platform's
native threads. Some of the advantages to using native
threads are better scalability and performance. Also,
porting and maintaining the thread library is simplified.
Synchronization is done using native monitors.
JNI support is available for CEE-J. CEE-J
has its own, internal native interface (CNI). We believe
using this native interface has the advantage of better
code readability.
The CEE-J VM has a framework that
supports any 3rd Party MHP implementation built to the
standards set by the Digital Video Broadcasting
organization. To learn more about CEE-J
support for MHP, please consult our MHP
information page.
The CEE-J VM supports any 3rd party OSGi
impelementation that conforms to the standards set by
the Open Services Gateway Initiative. To learn more about
CEE-J
support for OSGi, please consult our OSGi
information page.
CEE-J supports the JPDA/JDWP
(JDWP Debugger Wire Protocol) specification. This
enables developers to use third party IDE's to debug
their applications running with CEE-J. JDWP enabled
IDE's include Metrowerks'
CodeWarrior, Borland's
JBuilder Enterprise Edition 3.5, and Elixir.
Does CEE-J support ROMized class files?
A ROMizer converts bytecodes into a format where they can be executed directly out of ROM. This is useful for saving RAM in memory constrained devices. Instead of both storing the class files in ROM or flash and then loading them into RAM to run, it is possible to execute them directly out of ROM. The processes of ROMizing a class file basically pre-links any method or field references so no runtime modification of the bytecode is necessary.
How is garbage collection
implemented?
CEE-J supports two different garbage collectors: a mark-and-sweep
collector and now a more advanced generational
garbage collector. The particular collector is selected
at compile time. One of the benefits of the mark-and-sweep
collector is its small code size. Because the implementation
in CEE-J is highly tuned, it yields good performance
on small and medium sized memory pools. This, combined
with its small code size, makes it an excellent choice
for smaller devices.
The generational collector uses a more sophisticated algorithm and has a correspondingly larger code footprint. It gives very good performance for medium and large sized memory pools. Another benefit of the generational collector is that it is interruptible.
What are the memory requirements (ROM)?
Class library
360kb without AWT
760kb with AWT
VM binary
300kb without AWT
700kb with AWT
The sizes for the binary vary based on the processor
targeted and compiler employed.