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 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 
               
Using _JAVA_OPTIONS is currently the only way to pass this flag if you rely on the automatic Java initialization done when invoking a Java foreign resource.
JDK 1.4.1
JDK 1.4.1 is expected to work but is not tested.

MacOS X
MacOS X 10.2 comes with JDK 1.3.1 pre-installed. Also see the Linux entry above.

JDK 1.4.1 is now available for MacOS 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. The cause for this is not known. 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
          

MacOS 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 libsprt311.dylib.
Tru64 V5.1
Only the 64bit version (java -fast64) of JDK 1.3.1 is supported. Also see the Linux entry above.
Tru64 V5.1
When using Java to call SICStus, you will need to set LD_LIBRARY_PATH to the directory where the SICStus run-time library is located (e.g. /usr/local/lib).
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.
HP-UX 1.6i (B.11.22) on Itanium (IPF64)
JDK 1.4.1 is supported.

You will need to set LD_PRELOAD to the location of libjvm.so before invoking sicstus in order to use library(jasper). For instance, to start 64bit sicstus with JDK 1.4.1

          bash$ LD_PRELOAD=/opt/java1.4/jre/lib/IA64W/server/libjvm.so sicstus -i
          

This is not an issue when Java is the top-level application.