diff options
Diffstat (limited to 'third_party/java/jdk/README.md')
-rw-r--r-- | third_party/java/jdk/README.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/third_party/java/jdk/README.md b/third_party/java/jdk/README.md new file mode 100644 index 0000000000..02c794ae20 --- /dev/null +++ b/third_party/java/jdk/README.md @@ -0,0 +1,23 @@ +# Java compilers in Bazel + +Bazel compiles Java code using a custom builder. This builder is called +JavaBuilder and its code lies in //src/java_tools/buildjar. To build Java +code, JavaBuilder use the Java compiler from the JDK. To support +[ErrorProne](http://errorprone.info) checks, we vendor a custom build +of the Java compiler code. This is the raw version of the Java compiler +from [OpenJDK](https://openjdk.java.net) but compiled for a lower +version of the JRE. Those builds are vendored in +//third_party/java/jdk/langtools. + +Current Bazel supports running on a JRE 8 only because the default Java +compiler used (//third_party/java/jdk/langtools/javac.jar) is the +Java compiler of OpenJDK 9 compiled to run on a JRE 8. This cannot +be built to run on a JRE 7 because of code incompatiblity. Bazel's +JavaBuilder at HEAD cannot be linked with earlier version of the +Java compiler (it depends on some internals of the Java compiler). + +To build a version of Bazel that can run on a JRE 7, we need to rely +on the version of JavaBuilder provided with Bazel 0.1.0 +(//third_party/java/jdk/javabuilder/JavaBuilder_0.1.0_deploy.jar) which works +with a Java compiler of OpenJDK 8 compiled to run on a JRE 7 +(//third_party/java/jdk/langtools/javac7.jar). |