RFR: 8306914: Implement JEP 458: Launch Multi-File Source-Code Programs [v11]

Jan Lahoda jlahoda at openjdk.org
Mon Dec 4 08:46:50 UTC 2023


On Mon, 4 Dec 2023 08:10:30 GMT, Christian Stein <cstein at openjdk.org> wrote:

>> Please review this change set implementing [JEP 458](https://openjdk.org/jeps/458) "Launch Multi-File Source-Code Programs" by introducing a new entry-point `SourceLauncher` in package `com.sun.tools.javac.launcher` of module `jdk.compiler`. The former `Main` entry-point is kept as-is in order to preserve (and possibly fall back to) existing behaviour of launching single-file source-code programs.
>> 
>> The code of the new entry-point and other new classes introduced by this pull request is based on the original implementation. It extends it to dynamically resolve required types "on-the-fly" using an in-memory class loader capable to compile Java source files - applying a strict name-based pattern as described in the JEP.
>> 
>> ### OpenJDK's Demo Programs
>> 
>> OpenJDK's demo programs can be found in the [src/demo/share/jfc](https://github.com/openjdk/jdk/tree/master/src/demo/share/jfc) directory. These multi-file source-code programs can be launched via `java ${PROGRAM}` once this implementation is integrated; with `${PROGRAM}` being one of the following files:
>> 
>> - [x] `src/demo/share/jfc/CodePointIM/CodePointIM.java`
>> - [x] `src/demo/share/jfc/FileChooserDemo/FileChooserDemo.java`
>> - [x] `src/demo/share/jfc/Font2DTest/Font2DTest.java`
>> - [x] `src/demo/share/jfc/J2Ddemo/java2d/J2Ddemo.java`
>> - [x] `src/demo/share/jfc/Metalworks/Metalworks.java`
>> - [x] `src/demo/share/jfc/Notepad/Notepad.java`
>> - [x] `src/demo/share/jfc/SampleTree/SampleTree.java`
>> - [x] `src/demo/share/jfc/SwingSet2/SwingSet2.java`
>> - [x] `src/demo/share/jfc/TableExample/TableExample3.java`
>> - [x] `src/demo/share/jfc/TableExample/TableExample4.java`
>> - [x] `src/demo/share/jfc/TransparentRuler/transparentruler/Ruler.java`
>> 
>> The following demo programs do not start out of the box:
>> 
>> - `src/demo/share/jfc/TableExample/TableExample.java` — requires a database driver on the class path
>> - `src/demo/share/jfc/TableExample/TableExample2.java` —  requires a database driver on the class path
>> - `src/demo/share/jfc/Stylepad/Stylepad.java` — requires `src/demo/share/jfc/Notepad/Notepad.java`
>
> Christian Stein has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Update tests

Overall seems reasonable to me, with two comments inline - one minor, but the other one is the change to the Gatherers tests - sorry, but I don't think it is appropriate to bury that change in this PR/commit.

test/jdk/java/util/stream/GathererTest.java line 352:

> 350:     @MethodSource("configurations")
> 351:     public void testMassivelyComposedGatherers(Config config) {
> 352:         final int ITERATIONS = 128; // Total number of compositions is 1 + (iterations*2)

Sorry, but I think it is not appropriate to do a change like this here. It should have its own PR and discussion.

test/langtools/tools/javac/launcher/src/p/q/CLTest.java line 2:

> 1: /*
> 2:  * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.

Probably:
Suggestion:

 * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.

(not sure, but the file existed before, it is just moved, AFAIK.)

-------------

PR Review: https://git.openjdk.org/jdk/pull/13712#pullrequestreview-1761841707
PR Review Comment: https://git.openjdk.org/jdk/pull/13712#discussion_r1413528478
PR Review Comment: https://git.openjdk.org/jdk/pull/13712#discussion_r1413532003


More information about the compiler-dev mailing list