TOBA

Toba/JDK Differences


Because Toba takes a radically different approach from the Sun implementation of Java, there are necessarily some differences between the two.

AWT Support

Graphical support through the java.awt.* classes is only available if you configure toba --with-biss. Toba uses the native methods of the BISS-AWT system to interact with an underlying X11-based graphics server. Because BISS was not intended to be used in this manner, there are a large number of incompatibilities between the BISS implementation and the Sun implementation. One of the more egregious of these is the lack of support for java.awt.ScrollBar.

If you attempt to build a Toba program which references java classes that are not compatible with BISS, you will see a large number of "symbol not found" errors at the link stage. Even if it does link, it may fail during execution due to incompatibilities between Sun and BISS event handling. Fixing such problems may be as simple as adding a deprecated method to a BISS class, or as complicated as rewriting the underlying native interface. Since the developers of Toba are not intimately familiar with AWT programming, let alone the BISS system, we regret that we are unable to provide assistance debugging programs with a Toba system that supports BISS.

Dynamic Loading

Dynamic loading is supported on platforms that have a JIT compiler: currently only Linux/Intel. On these platforms, the CLASSPATH is searched when a new class is needed, and if found, the class will be loaded and compiled. Preference is given to classes that can be found pre-compiled in the executable or a Toba package. On other platforms, Toba does not support true dynamic loading; all needed classes must be precompiled into the executable or a Toba package. The class java.lang.ClassLoader is not implemented, and java.lang.Class.getClassLoader() always returns null. However, the method java.lang.Class.forName() can find any class referenced directly or indirectly from the main class, and under Solaris and Linux, it can find any class precompiled into the executable or a Toba package.

NB: On some versions of Linux (Red Hat 5.x), you need to pass the -rdynamic flag to the loader at program link time to find classes that were built directly into the executable as opposed to linked through a dynamic library. Do this on the toba command line with the option specification -a -rdynamic.

System Properties

Toba gives different values for some system properties than the Sun implementation. For example, the os.name and os.version properties give the values returned by the uname system call.

Validation

Toba does not validate class files; it assumes that all class files are properly formatted, contain legal instructions, and obey the specification in all other respects. Malformed class files may produce unpredictable results.

Visibility Checking

Toba does not claim to guard against deliberate deception, so it does not check accesses between different classes. It assumes that the checking performed by javac is sufficient.

Security

Toba does not implement a security manager.

Native Code Interface

The native code interface is incompatible with that of the Sun implementation. (It is actually simpler, and it allows native functions to be overloaded.)

Stack Overflow

The result of stack overflow, such as from infinite recursion, is typically a segmentation fault instead of a Java exception. Errors in any native code can also cause segmentation faults or other symptoms. All other errors result in catchable exceptions.

Debugging

No debugging facilities are implemented. The breakpoint instruction is ignored, and stack traces are not available.

Implementation Differences

Some implementations have additional shortcomings.

Linux

Differences in the Linux implementation:

Irix

Differences in the Irix implementation:

Solaris

There are no additional differences that are specific to Solaris.


index | usage | differences | native code | implementation | porting | releases | installation || home
http://www.cs.arizona.edu/sumatra/toba/doc/diffs.html (July, 1998)