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

Brian Goetz brian.goetz at oracle.com
Mon May 21 15:39:12 UTC 2018


Then javac would not be a compiler for the Java Language.  You don't get 
to sidestep the question by saying "just hack the compiler"; either this 
is part of the language -- which is defined by the specification -- or 
it's not.

On 5/17/2018 4:55 PM, Ben Evans wrote:
> What about special-casing javac to interpret #! as a single-line
> comment marker (synonym for //), for the first line of an input file,
> and nowhere else?
>
> Thanks,
>
> Ben
>
> On Thu, May 17, 2018 at 9:50 PM, Roman Kennke <roman at kennke.org> wrote:
>> 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