projects: Break out page about JDK bootstrapping.
This commit is contained in:
parent
388215daee
commit
14c778af61
|
@ -3,9 +3,10 @@
|
|||
(p [Here are a couple of ongoing projects in the bootstrappable builds community.
|
||||
If you're interested in working on any of these projects please ,(anchor "contact us" "/who.html").])
|
||||
|
||||
(h2 [Maintaining the Java bootstrap])
|
||||
(p [The Java Development Kit (JDK) is written in Java. The JDK can be bootstrapped from C++ with Jikes, JamVM, GNU Classpath and older versions of the IcedTea build system for the OpenJDK. See the ,(anchor "Guix sources for an implementation" "https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/java.scm#n82") of this bootstrap chain. Most of the software needed for the bootstrap unfortunately has been abandoned.])
|
||||
(p [To ensure that the JDK can be built from sources without the need for an existing installation of the OpenJDK we propose to continue maintaining the bootstrap chain.])
|
||||
(h2 [From C++ to the world of Java])
|
||||
(p [The Java Development Kit (JDK) is written in Java, so you
|
||||
need a JDK to build a JDK.
|
||||
,(anchor "Learn more about how we cut the cycle!" "/projects/java.html")])
|
||||
|
||||
(h2 [Maintaining GCC version 4.7])
|
||||
(p [The C and C++ compilers of the GNU Compiler Collection make up the foundation of many free software distributions.
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
title: From C++ to Java
|
||||
---
|
||||
|
||||
The Java Development Kit (JDK) is written in Java, so you need a JDK
|
||||
to build the JDK. One way to cut this dependency cycle is to use
|
||||
older tools that were written in a time when Java was not yet popular
|
||||
enough to write compilers in Java.
|
||||
|
||||
In Guix the Java bootstrap begins with Jikes, a Java compiler written
|
||||
in C++. We use it to build a simple version of GNU Classpath, the
|
||||
Java standard library. We chose version 0.93 because it is the last
|
||||
version that can be built with Jikes. With Jikes and this version of
|
||||
GNU Classpath we can build JamVM, a Java Virtual Machine. We build
|
||||
version 1.5.1 because it is the last version of JamVM that works with
|
||||
a version of GNU classpath that does not require ECJ. These three
|
||||
packages make up the bootstrap JDK.
|
||||
|
||||
This is sufficient to build an older version of Ant, which is needed
|
||||
to build an older version of ECJ, an incremental Java compiler, both
|
||||
of which are written in Java.
|
||||
|
||||
ECJ is needed to build the latest release (0.99) and the development
|
||||
version of GNU Classpath. The development version of GNU Classpath
|
||||
has much more support for Java 1.6 than the latest release, but we
|
||||
need to build 0.99 first to get a working version of javah. ECJ, the
|
||||
development version of GNU Classpath, and the latest version of JamVM
|
||||
make up the second stage JDK with which we can build the OpenJDK 6
|
||||
with the Icedtea 1.x build framework. We then build the more recent
|
||||
JDKs Icedtea 2.x and Icedtea 3.x for OpenJDK 7 and 8, respectively.
|
||||
|
||||
Moving on to JDK 9 and 10 is left as an exercise for the reader.
|
||||
|
||||
This is the dependency graph of the bootstrap JDK as implemented in
|
||||
[GNU Guix](https://gnu.org/software/guix):
|
||||
|
||||
![dependency graph of the bootstrap JDK in GNU Guix](/images/jdk-bootstrap.png)
|
||||
|
||||
Unfortunately, most of the software needed for the bootstrap has been
|
||||
abandoned. To ensure that the JDK can be built from sources without
|
||||
the need for an existing installation of the OpenJDK we propose to
|
||||
continue maintaining the links of this bootstrap chain.
|
||||
|
||||
[← back to list of projects](/projects.html)
|
|
@ -167,43 +167,44 @@ a {
|
|||
strong {
|
||||
font-weight: bold; }
|
||||
|
||||
div.page {
|
||||
div#page {
|
||||
overflow: visible;
|
||||
max-width: 32rem;
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
margin-bottom: 1rem; }
|
||||
@media only screen and (min-width: 600px) {
|
||||
div.page {
|
||||
div#page {
|
||||
margin-left: 4rem;
|
||||
margin-right: 4rem; }}
|
||||
@media only screen and (min-width: 1024px) {
|
||||
div.page {
|
||||
div#page {
|
||||
margin-left: auto;
|
||||
margin-right: auto; }}
|
||||
div.page ul {
|
||||
div#page ul {
|
||||
max-width: 32rem; }
|
||||
div.page p {
|
||||
div#page p {
|
||||
margin-bottom: 0;
|
||||
text-align: justify;
|
||||
max-width: 32rem; }
|
||||
div.page p img, div#page p video {
|
||||
div#page p img, div#page p video {
|
||||
max-width: 100%;
|
||||
display: inline;
|
||||
float: right;
|
||||
margin-left: 0.8rem;
|
||||
-moz-border-radius: 15px;
|
||||
border-radius: 15px; }
|
||||
div.page p.back {
|
||||
div#page p.back {
|
||||
margin-top: 1.5rem;
|
||||
width: 50%; }
|
||||
div.page blockquote {
|
||||
div#page blockquote {
|
||||
margin-left: 3rem;
|
||||
margin-right: 3rem;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
font-size: 0.9rem;
|
||||
font-style: italic; }
|
||||
div.page img.full {
|
||||
div#page img.full {
|
||||
width: 100%;
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 1rem;
|
||||
|
@ -216,7 +217,7 @@ div.page {
|
|||
display: block;
|
||||
-moz-border-radius: 15px;
|
||||
border-radius: 15px; }
|
||||
div.page img.stretch {
|
||||
div#page img.stretch {
|
||||
width: 100%; }
|
||||
|
||||
p + p, div.figure + p {
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 401 KiB |
Loading…
Reference in New Issue