Draft JEP: Launch Single-File Source-Code Programs
Brian Goetz
brian.goetz at oracle.com
Mon Feb 12 16:07:10 UTC 2018
Its simpler than that. There are NO changes to the JLS, nor even any (IIRC) changes to the compiler. This is all in the command-line launcher. This is not a Java language feature. The scope is JDK, not SE.
There are really two features here:
- Launch Java source files from the java launcher.
- Additionally, strip off the #! line (if present) before passing the source to the compiler, so that the compiler sees a normal Java compilation unit when compiling, to interact nicely with native #! support.
> On Feb 12, 2018, at 6:38 AM, Volker Simonis <volker.simonis at gmail.com> wrote:
>
> On Mon, Feb 12, 2018 at 3:22 PM, Roger Riggs <Roger.Riggs at oracle.com> wrote:
>> Hi Jonathan,
>>
>> It would be a great convenience to developers to NOT to have two types of
>> java source files.
>> Those that can be run directly and those that cannot. According to the JLS,
>> the former can not
>> be called java source files, they are something else.
>>
>
> Yes, that's exactly what I actually wanted to say. The JavaDoc analogy
> can't be applied here because JavaDoc is completely transparent to the
> JLS (because it is hidden within a comment). Not sure how hard and
> controversial it would be tough, to change the JLS to allow and ignore
> a shebang in the first line?
>
>> $.02, Roger
>>
>>
>>
>>
>> On 2/10/2018 11:59 AM, Jonathan Gibbons wrote:
>>>
>>> Volker,
>>>
>>> I don't see a compelling need to change the JLS to accommodate "shebang"
>>> files. Most Java source files don't need the `#!` line, including any source
>>> file passed to an explicit invocation of the Java launcher. The line is only
>>> needed when the file is set up to be directly executed by the "shebang"
>>> mechanism, in which case the line can be thought of as a "wrapper" supported
>>> by the host system to enable such use. If the feature is sufficiently
>>> popular, it may even be that editors will recognize and support the use of
>>> such lines, in the same way that some editors recognize and support the
>>> manipulation of javadoc comments, which are also not defined in the JLS
>>> (beyond the basic definition of a comment in JLS 3.7).
>>>
>>> -- Jon
>>>
>>>
>>> On 2/9/18 2:51 AM, Volker Simonis wrote:
>>>>
>>>> Hi Jonathan,
>>>>
>>>> that's an interesting proposal. It is just unfortunate that a Java
>>>> source file starting with "shebang" won't be a legal Java file
>>>> according to the Java Language Specification. Or do you plan to change
>>>> the JLS to allow (and ignore) "shebang" in the first line?
>>>>
>>>> Thanks,
>>>> Volker
>>>>
>>>> On Fri, Feb 9, 2018 at 12:18 AM, Jonathan Gibbons
>>>> <jonathan.gibbons at oracle.com> wrote:
>>>>>
>>>>> This draft JEP contains a proposal to enhance the java launcher to
>>>>> support
>>>>> running a
>>>>> program supplied as a single file of Java source code. The program will
>>>>> be
>>>>> compiled
>>>>> and run, without the need to explicit invoke javac, or to package up a
>>>>> jar
>>>>> file.
>>>>>
>>>>> For more details, see:
>>>>>
>>>>> http://openjdk.java.net/jeps/8192920
>>>>>
>>>>> -- Jon
>>>
>>>
>>
More information about the jdk-dev
mailing list