Welcome to the Harissa home-page


Harissa is a Java environment that includes a compiler from Java bytecode to C and a Java interpreter. While Harissa is aimed at applications that are statically configured, such as the Javac compiler, it is also designed to allow code to be dynamically loaded in an already compiled application. This novel feature is introduced by integrating our bytecode interpreter in the runtime library. Data structures are compatible between the Java compiled code and the interpreter, and data allocated by the interpreter does not conflict with data allocated by the compiled code. Harissa is written in C and provides an efficient and flexible solution for the execution of Java applications.

Harissa's compiler, called Hac, generates C code that can be compiled into efficient native code. To do so, several transformations have been implemented. First, the stack is statically evaluated away. Second, virtual method calls are transformed, when possible, into static (i.e., procedure) calls using a Class Hierarchy Analysis (CHA). For these virtual calls, type checks are also eliminated. Finally, Hac implements several other more conventional optimizations for object-oriented languages such as method inlining.

Harissa was previously called Salsa (the dance). Unfortunately, the name "salsa" was a registered trademark from Wall Data Incorporated. Thus, we had to find a new name. Harissa simply means Salsa Picante .

More about Harissa ?

Current Status

Harissa is covered by a copyright statement that allows non-commercial use without fee. The Boehm-Demers-Weiser conservative garbage collector is covered by its own copyright.

Frequently Asked Questions

You have a problem using Harissa? You have found a bug? If the solution to your problem is not in the FAQ file or the bug is not described in the bug list, please send us an e-mail. We will do our best to answer quickly.

Distribution

Harissa is distributed in binary form:

Linux 2.0 alpha3.02 version gzipped tar file (GC and non GC versions)
Solaris 5.5-gcc alpha3.02 version gzipped tar file (GC and non GC version)
Solaris 5.5-CC alpha3.02 version gzipped tar file (GC and non GC version)

Notes:
  • Harissa for Linux seems to be very unstable on some systems, depending on the exact configuration.
  • The Solaris CC version of Harissa is faster than the gcc version for most programs. However, gcc seems to do a better job at certain high-level optimizations, such as dead code elimination. On most of our test programs the CC version produced the fastest code. For ordinary use, you may want to pick the version that corresponds to whatever C compiler you normally use. To gain extra performance with a specific program, try both versions and stick with whatever gives the best results.
  • Previous release V2:
    SunOs 4.1.4 alpha2.2 version gzipped tar file (GC and non GC versions)
    Linux 2.0 alpha2.2 version gzipped tar file (GC and non GC versions)
    Solaris 5.5 alpha2.2 version gzipped tar file (GC version only)

    You will also need Sun java classes (classes.zip) from version 1.0.2 of the Java Developers Kit. Get the Solaris version from java.sun.com or the Linux version from www.blackdown.org.

    Authors

    Harissa has been designed and implemented by: Other contributors:

    Some related projects



    Return to the Compose Group page.