shuJIT - Java Just-in-Time Compiler for x86 processors

last-modified: May 30, 2017

[Japanese] [English]
ShuJIT is a JavaTM Just-in-Time compiler for Sun Microsystems' Classic VM (i.e. JDK, Java 2 SE, JRE) and Intel x86 processors. It supports FreeBSD, Linux and NetBSD.

What's New

May 30, 2017
0.8.1 was released.
August 8, 2005
0.8.0 was released.
April 9, 2003
Added a list of papers which refer to shuJIT.
January 20, 2003
0.7.14 was released.
July 17, 2002
0.7.13 was released.
August 21, 1999
0.3.7 was released.
September 20, 1998
First public release.

Table of Contents

Supported Platforms


Tested on



ShuJIT is distributed under the terms of GNU LGPL.



This page shows results of performance comparisons among Java runtime systems, running SPEC JVM98, SciMark 2.0, Linpack benchmark and Eratosthenes Sieve.

Future Plans

Experiments to change the recognition of bytecode by JVM
JIT compilers can generate native code which doesn't comply with JVM specification.
I've implemented MetaVM (a paper in Japanese is here). It's a very transparent distributed object system. It allows programmers to write code executed on distributed machines in the just same style as code executed locally.
eliminate boundary check and more analysis.
Working with thread migration system MOBA
Make shuJIT work with migration of execution context.

Related Work


The project aims to let programmers be able to customize behavior of JIT compiler with Java language's own.
It supports FreeBSD/x86, Linux/x86 and Solaris/SPARC.
Jaguar is a research project and a system which allow direct access to OS and hardware resources to Java programs.
Direct access without JNI reduces an overhead of memory copy and achieves high-performance communication and I/O.
A former implementation of Jaguar employs shuJIT to change native code generated by the JIT.
This project is drived by Matt Welsh.

Java runtime system and JIT compiler

Open Runtime Platform (
A Java runtime system for x86, developed in Intel Microprocessor Research Labs.
It has two JIT compilers (O3 and O1).
In future, part of source code which supports IA-64 will be available.
JIT compiler for Linux/x86 and FreeBSD/x86.
JBuilder JIT for Linux
JIT compiler for JDK 1.2/Linux/x86 developed by Inprise.
Now this compiler is included in Sun/Inprise JDK 1.2.X for Linux.
JVM whose purpose is achievement high performance. It doesn't have an interpreter.
A Java application environment is built from scratch. It has JIT compiler.
Another JAE is built from scratch. It doesn't have JIT compiler (yet?).
Static compiler developed by NaturalBridge LLC..
It converts Java bytecode to x86 native code, supports Win32.
It implements strictfp semantics properly.
Linux port of JDK.
FreeBSD Java Project
FreeBSD port of JDK.


The JIT Compiler Interface Specification
C language API to build a JIT for Sun's Classic VM.
Sun supports this API any longer.
JNI (Java Native Interface) satisfies programmer's usual requirements but JIT writers still need this interface which Sun doesn't support.
The Java Virtual Machine Specification (Tim Lindholm, Frank Yellin)
JVM and JIT writers should refer to this document.

Papers which refer to shuJIT

Back to

Copyright (C) 1998,1999,2000,2001,2002,2003,2004,2005,2017 Kazuyuki Shudo
<shudo at>