JEP proposed to target JDK 11: 330: Launch Single-File Source-Code Programs

Roman Kennke roman at kennke.org
Thu May 17 20:50:44 UTC 2018


Am 17.05.2018 um 22:12 schrieb mark.reinhold at oracle.com:
> The following JEP is proposed to target JDK 11:
> 
>   330: Launch Single-File Source-Code Programs
>        http://openjdk.java.net/jeps/330
> 
> Feedback on this proposal is more than welcome, as are reasoned
> objections.  If no such objections are raised by 23:00 UTC on Thursday,
> 24 May, or if they're raised and then satisfactorily answered, then
> per the JEP 2.0 process proposal [1] I'll target this JEP to JDK 11.
> 
> - Mark
> 
> 
> [1] http://cr.openjdk.java.net/~mr/jep/jep-2.0-02.html
> 

I like this proposal.

I have a question about the shebang support though. If I write a
sourcefile Test.java like this:

#!/usr/bin/java

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

... then it's not a valid Java source file anymore, and (currently)
rejected by javac. I see that it is not relevant for the intended use
because the java launcher would strip the first line (except for the
newline). I still find it odd.

In particular, it may end up confusing for the growing experience:
- people who start learning Java using this single-source feature will
find that shebang 'Java scripts' don't actually compile when passed to
the Java compiler
- the little Java script turns out to be 'too slow', hey, let's compile
it. Oops, doesn't work.
- the little Java scipt has grown to complicated and needs additional
classes, but doesn't compile.
- editors/IDEs might (rightly) flag it as errors

etc

I wonder if it might be reasonable to extend the JLS to allow for
shebang support too? Or maybe even don't extend the JLS but make
compilers behave nicely anyway? At the very least, there should be some
language in the JEP that mentions this issue. It is a complication that
seems more important than the mentioned "HelloWorld"-package with "java"
classname.

Best regards, Roman



More information about the jdk-dev mailing list