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