aboutsummaryrefslogtreecommitdiffstats
path: root/docs/bootstrap-flow.md
blob: 96d18e6dfa8c542d320e3bda12ed9c3d3d3de025 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# meta-java OpenJDK bootstrap workflow #

## OpenJDK-14 ##

 * TODO

## OpenJDK-7 and OpenJDK-8 ##

* first jikes-native is compiled
  * a Java 1.4-capable compiler that does not need a runtime or
    (strictly) a class library to work
* jikes-initial-native is a wrapper around it

* with this compiler we compile the initial (preliminary)
  runtime (package virtual/java-initial-native)
  * virtual/java-initial-native can be: cacao-initial-native (0.98)
    or jamvm-initial-native (1.4.5)
    * cacao is preferred, as it has a JIT, but doesn't compile
      on all hosts
    * cacao-initial-native and jamvm-initial-native both need
      classpath-initial-native (0.93) and jikes-initial-native

* now libecj-bootstrap-native is built
  * this needs jikes-initial-native virtual/java-initial-native
* now ecj-initial is built
  * this needs libecj-bootstrap-native and
    virtual/java-initial-native during runtime
  * at that point we have a 1.5-capable compiler (ecj-initial)
    running on a Java 1.4 compatible VM (cacao-inital-native
    or jamvm-initial-native)

* with this compiler (ecj-initial), we compile the final runtime
  and compiler (virtual/java-native and virtual/javac-native)
  * virtual/java-native can be: cacao-native (1.6.1) or
    jamvm-native (2.0.0~pre)
    * cacao vs jamvm as above
    * cacao-native and jamvm-native both need
      classpath-initial-native (0.93) and classpath-native (0.99)
      and ecj-initial-native and virtual/java-initial-native
  * virtual/javac-native can be: ecj-bootstrap-native
    * ecj-bootstrap-native needs libecj-bootstrap-native
      and virtual/java-native
  * at that point we have a 1.5-capable compiler (ecj-bootstrap-native)
    running on a Java 1.5 compatible VN (cacao-native or
    jamvm-native)