Node:Supported Java Versions, Next:, Up:Jasper Notes



Supported Java Versions

Jasper requires at least Java 2 to run. Except under Windows the full development kit, not just the JRE, is needed. Jasper does not work with Visual J++ or Visual Café. Unless indicated otherwise, you can download the JDK from http://java.sun.com.

Except where indicated, Jasper is built with JDK 1.3.1 and is expected to work with the latest version of JDK 1.4.

Jasper is only supported under the following configurations:


Solaris 2.x (SPARC and x86)
JDK 1.2
JDK 1.2.2_06 is expected to work, but is no longer tested.
JDK 1.3.1
JDK 1.3.1 is supported; see the Linux entry below. See Known Bugs and Limitations, for when JDK 1.2 or JDK 1.4 is preferred over JDK 1.3.

Note that JDK 1.4 is required for 64 bit SPARC Solaris.

There is a bug in Sun JDK 1.3.1 that surfaces when sicstus is the top-level executable, e.g. sicstus -l library/jasper/examples/jqueens.pl. The symptom is similar to:

java.lang.UnsatisfiedLinkError: exception occurred in JNI_OnLoad
        ...
	at java.awt.Component.<clinit>(Component.java:356)
        ...

The underlying problem is that motif21/libmawt.so cannot find libmlib_image.so A work-around for SPARC is to set LD_LIBRARY_PATH to java-install-dir/jre/lib/sparc before invoking sicstus. A similar work-around should work on x86. This bug is not present in JDK 1.4.1.

JDK 1.4
64 bit SPARC Solaris is built and tested with JDK 1.4.0.

Linux (x86)
JDK 1.2
Blackdown's JDK (Version 1.2.2 FCS for Linux) is expected to work but is no longer tested. Downloadable from http://www.blackdown.org/java-linux.html.

Sun's JDK 1.2.2 does not support native threads and therefore does not work.

JDK 1.3.1
JDK 1.3.1 uses signals in a way that are incompatible with the way signals are used by the SICStus development system (sicstus).

Note that this is a problem only with development systems. SICStus run-time systems do not use signals, (e.g. when embedding SICStus in Java using the Jasper package.)

Most of the signal handlers used by the SICStus development system (sicstus) are now turned off automatically before library(jasper) starts Java. In JDK 1.3.1 the problem with conflicting uses of signals was recognized and the Java initialization option -Xrs was added to reduce Java's use of signals. It makes JDK use signals in a way that is compatible with the SICStus development system.

There are several ways to pass this flag to Java. The recommended way is to pass it with jasper_initialize:

bash> sicstus 
...
| ?- use_module(library(jasper)),
     jasper_initialize(['-Xrs', <other options here>], JVM).
Alternatively, you can pass it using the (not documented in the JDK documentation) environment variable _JAVA_OPTIONS:
bash> export _JAVA_OPTIONS='-Xrs'
bash> sicstus 

JDK 1.4.1
JDK 1.4.1 is expected to work but is not tested.
JDK 1.5.0
64 bit Linux x86 (FC 2) is built and tested with JDK 1.5.0.

Mac OS X
For Mac OS X 10.3 Jasper is built and tested with JDK 1.4.2. Earlier versions are expected to work but have not been tested. Also see the Linux entry above.

JDK 1.4.2 is now available for Mac OS X. It does not work well when SICStus is the top-level application, e.g. when using the SICStus development system. In particular, opening GUI components such as Swing, will hang. One work-around is to force the use of JDK 1.3.1 by setting the environment variable DYLD_LIBRARY_PATH before invoking SICStus.

bash> export DYLD_LIBRARY_PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Libraries
bash> sicstus -i

Mac OS X
Using Jasper from Java may require that DYLD_LIBRARY_PATH be set up so that Java can find the SICStus run-time library. That is, you may need to set DYLD_LIBRARY_PATH to the location of the SICStus run-time libsprt312.dylib.
Windows
Verified using Sun's JDK 1.3.1.

Sun's JDK 1.2.2 and JDK 1.4.x are also expected to work, but are not tested.

AIX
JDK 1.3.1 is supported.

The AIX version of JDK 1.3.1 requires some environment variables to be set before invoking an application that embeds the Java VM. For this reason, the following environment variables should be set before starting a SICStus executable that uses library(jasper):

bash$ export AIXTHREAD_SCOPE=S
bash$ export AIXTHREAD_MUTEX_DEBUG=OFF
bash$ export AIXTHREAD_RWLOCK_DEBUG=OFF
bash$ export AIXTHREAD_COND_DEBUG=OFF
bash$ export LDR_CNTRL=USERREGS
bash$ sicstus 
...

See the AIX JDK 1.3.1 readme (/usr/java131/README.HTML) for futher details.

IRIX
JDK 1.3.1 is supported.
HP-UX PA32
Java (JDK 1.3.1) is not currently supported. Please contact SICStus support if you need Jasper for this platform.