Documentation Support Database Support Forums Technical Specification FAQ

Solutions

Television Handheld Cellphone Networking

CEE-J™ Frequently Asked Questions

CEE-J versus the Sun reference implementation

What standard is supported?

What packages are supported?

Does Skelmir have a mini-VM?

Does CEE-J have AWT support?

How does CEE-J handle exception support?

How about threading and synchronization support?

Is JNI supported?

Is MHP supported?

Is OSGi supported?

What about debugging support?

Does CEE-J support ROMized class files?

How is garbage collection implemented?

What are the memory requirements (ROM)?


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.

top


What standard is supported?

CEE-J is compatible with the virtual machine for MHP 1.0.3.

top

What packages are supported?

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

top

Does Skelmir have a mini-VM?

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.

top

Does CEE-J have AWT support?

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.

top

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).

top

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.

top

Is JNI supported?

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.

top

Is MHP supported?

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.

top

Is OSGi supported?

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.

top

What about debugging support?

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.

top

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.

top

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.

top

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.


Skelmir and CEE-J are trademarks of Skelmir, LLC. Java and all Java based marks are trademarks of Sun Microsystems, Inc. Skelmir, LLC is an independent company offering proven clean room virtual machines for the Java technolgy. Skelmir is not affiliated with Sun Microsystems, Inc.