RFR: JDK-8306112 Implementation of JEP 445: Flexible Main Methods and Anonymous Main Classes (Preview) [v2]
Alan Bateman
alanb at openjdk.org
Thu Apr 27 13:49:54 UTC 2023
On Thu, 27 Apr 2023 13:17:58 GMT, Jim Laskey <jlaskey at openjdk.org> wrote:
>> Add flexible main methods and anonymous main classes to the Java language.
>
> Jim Laskey has updated the pull request incrementally with one additional commit since the last revision:
>
> PreviewFeatures.isEnabled()
src/java.base/share/classes/sun/launcher/LauncherHelper.java line 45:
> 43: import java.lang.invoke.MethodHandles;
> 44: import java.lang.invoke.MethodHandles.Lookup;
> 45: import java.lang.invoke.MethodType;
Left over from an earlier version?
src/java.base/share/classes/sun/launcher/resources/launcher.properties line 240:
> 238: Caused by: {1}: {2}
> 239: java.launcher.cls.error8=\
> 240: Error: no non-private no argument constructor found in class {0}
Since this feature is for new developers then the error messages will need to be understand, maybe it should be "zero argument" and give an example to help.
src/java.base/share/native/libjli/java.c line 590:
> 588: CHECK_EXCEPTION_NULL_LEAVE(mainID);
> 589: (*env)->CallVoidMethod(env, mainObject, mainID);
> 590: break;
This calls into LauncherHelper to get the "main type", then calls the static or new/instance method. I'm wondering if you tried have a single entry point in LauncherHelper instead. I think the only downside might be that the trampoline would show up in stack traces but @Hidden could hide that.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179174808
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179183719
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1179172679
More information about the build-dev
mailing list