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

Andrew Dinn adinn at
Tue May 22 13:42:24 UTC 2018

On 21/05/18 16:41, Brian Goetz wrote:
> I think this is mostly a "glass 5% empty" argument.  Let's retrace our
> steps.

Before we 'retrace' may I ask: was that meant to be 5% or 50%?

> The primary purpose is providing a reduced-ceremony path for developing
> and running simple programs.  This streamlines learning (no need to
> learn about compilers before you can run your first Hello World),
> prototyping (the edit-run cycle is streamlined), and distribution
> (simple programs can be distributed and without additional packaging or
> tooling.)  And all of this is accomplished without shebang support.

Is that comment offered as specification by diktat or does it reflect
something that was previously discussed and justifiably concluded in the
drawing up of this specification? I ask because, unfortunately, it comes
across -- to me at least -- as the former. It certainly is not what I
was expecting and hoping to hear given your use of the word 'retrace'.

Of course, whatever answer you give to that last question I would also
suggest that the specification process is not really over until the JEP
has been fully discussed by members of the project, that being what is
happening in this thread, I believe.

> Shebang support is an additional feature provided for deploying
> script-like programs -- which is necessarily _at the end of their
> development phase_.  This allows you to drop a Java source in the file
> system, as part of the package installation process, as an executable. 
> That's great, but at this point, the program is now a deployment
> artifact, not a development artifact.  Adding the shebang line is the
> "packaging" step.  But shebang is surely secondary to the main goals of
> this feature.

Once again, this comes across more as the necessity of /your/ diktat
than one driven by actual logic. Logically, you cannot legitimately
dismiss the concerns of those who disagree with you simply by stating
that it's a necessity -- or even a well-known fact -- that your
perception of things is valid and theirs is invalid. Tautology or
contingent truth really need to be backed with reason and/or evidence.

Indeed, when it comes to your specific assumption here it seems to me a
fairly routine matter to observe that much -- perhaps most -- software
does not manifest a clear, one-off lifecycle change from development to
deployment. Could you provide a reasoned justification as to why the
assumption behind this JEP is that this is how users will actually
employ the proposed capability?

> I agree than in an alternate world, we could have made different choices
> around the goals, but I see no new evidence that we chose the wrong
> design center.  If pressed, I'd be more inclined towards _dropping
> shebang completely_ than infecting the language with it, but I think the
> present position is a more pragmatic compromise.

I am afraid that adopting pejorative terms like 'infecting' doesn't
really make your case stronger. If anything it looks like rhetoric
picked precisely to mask weak or non-existent argument. As, indeed, does
emphasising that from this point over here -- where you happen to stand
-- the view looks rosy when in fact the issue in question is whether
there are grounds for adopting a different perspective.

> I am happy to take Volker's suggestion and add an explicit non-goal to
> characterize the intended limits of shebang support.
Well, yes, clearly you are happy to formalize your own conclusion.
However, I recall Volker himself was not actually so, having offered
this option as a last resort in face of your unwillingness to consider
his preferred alternatives (I don't remember a lot of reasoned
justification that time round either, but I acknowledge that may just be
my bad recall). Clearly, given this thread, neither are some others
happy with this conclusion. Your statement above, magnanimously
conceding what amounts to little or nothing, looks yet again more like a
rhetorical dodge than a legitimate justification for your position.

Could you please retrace your steps as initially promised and refer
those reading this thread to whatever prior discussion and/or reasoning
justifies your conclusion and invalidates that of those who oppose it?

n.b. Just to clarify why I am asking: I'm not particularly committed to
having shebang support or otherwise. However, I am very strongly
committed to having a clear and fair discussion of why it might or might
not be supported.


Andrew Dinn
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander

More information about the jdk-dev mailing list