some words for intro and overview by andi
[cacao.git] / doc / handbook / intro.tex
1 \chapter{Introduction}
2
3 Reinhard Grafl and I do not like coffee. Therefore, our Java virtual machine
4 could not be named after coffee. We prefer hot chocolate and have chosen to
5 name our Java virtual machine CACAO [kaukau].
6
7 \section{Introduction}
8
9 CACAO is a research Java virtual machine. From the beginning it was designed
10 for 64 bit architectures and was based on a just-in-time compiler. To avoid
11 two different stack frame formats no interpreter is included. The compiler is
12 so fast that it does not matter to compile code which is just executed once.
13 One of the aims of CACAO is to keep the system small and simple which makes
14 CACAO also well suited for embedded systems. It has been used to explore new
15 just-in-time compilation techniques, fast program analyses and improvements
16 for run time systems. Many of our developments turned out to be useful and
17 had been included in the version of CACAO which we now distribute under the
18 GNU general public license.
19
20 \section{History}
21
22 CACAO started as a master thesis by Rainhard Grafl in the year 1996. It
23 included a JIT compiler
24 for the Alpha archtecture. It used Sun's library 1.0
25 and contained the native functions for {\tt lang}, {\tt io}, {\tt util} and
26 {\tt math}. The first version was running in January 1997. This was the first
27 Java virtual machine for 64 bit architectures. The binary version 0.1 was made
28 available for the public on February 14th 1997. Afterwards I started the
29 developement of the new faster JIT compiler. Multithreading was added by
30 Mark Probst. Binary version 0.2 was released on September 23rd 1998. On
31 October 12th 1998 immediately before the PACT conference in Paris we put the
32 binary release 0.3 on our web server. Within ten days around Christmas 1998
33 I ported CACAO to the MIPS architecture. In the next four years there was
34 very little development on CACAO. Christopher Kr\"ugel added array bound check
35 removal, Phil Tomsich wrote a new garbage collector and Roman Obermaisser
36 made the change to the Java 1.2 library. In 2003 development became more
37 intensive. Dieter Th\"urnbeck added inlining, Christian Thalinger did the
38 port to the x86 and AMD64 architecture, Stefan Ring did the port to the
39 PowerPC architecture, Josef Wenninger replaced the SUN library by GNU
40 classpath and Edwin Steiner added verification.
41