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

last-modified: May 30, 2017

[Japanese] [English]
Here http://www.shudo.net/jit/
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

FreeBSD

Tested on

Linux


Distribution

ShuJIT is distributed under the terms of GNU LGPL.


Documents


Performance

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.
Optimization
eliminate boundary check and more analysis.
Working with thread migration system MOBA
Make shuJIT work with migration of execution context.

Related Work

Project

OpenJIT
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
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 (http://intel.com/research/mrl/orp/)
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.
TYA (http://sax.sax.de/~adlibit/)
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.
ElectricalFire
JVM whose purpose is achievement high performance. It doesn't have an interpreter.
Kaffe
A Java application environment is built from scratch. It has JIT compiler.
Japhar
Another JAE is built from scratch. It doesn't have JIT compiler (yet?).
BulletTrainTM
Static compiler developed by NaturalBridge LLC..
It converts Java bytecode to x86 native code, supports Win32.
It implements strictfp semantics properly.
Java-Linux
Linux port of JDK.
FreeBSD Java Project
FreeBSD port of JDK.

References

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 computer.org>