New candidate JEP: 463: Implicit Classes and Instance Main Methods (Second Preview)

David Alayachew davidalayachew at gmail.com
Wed Nov 1 21:23:51 UTC 2023


Hello Mark,

Thank you for posting this!

I really like the direction of simplifying concepts and reducing the
surface size. Starting out with a smaller domain of concepts makes the
universe easy to understand, not to mention, you can appreciate the
expanded domain once you need to start introducing some
programming-in-the-large concepts.

> The new programmer encounters these concepts
> at the worst possible time, before they learn
> about variables and control flow, and when
> they cannot appreciate the utility of
> programming-in-the-large constructs for
> keeping a large program well organized.
> Instructors often offer the admonition,
> "don't worry about that, you'll understand it
> later." This is unsatisfying to them and
> their students alike, and leaves students
> with the enduring impression that the
> language is complicated.

Rereading this paragraph, I appreciate the wording of it very much. It
helps us see the mindset of the student as clearly as possible. So much so
that it raises 2 questions.

1. In the name of simplifying things for beginners, what is the reason why
the main method is specifically called "main"? Would not "run" or something
similar be better? The word "main" implies to me that it is the "main"
method (out of all of the others). But that right there means I must be
aware of the concept of there being multiple methods. But again, that's
forcing the beginner to think about concepts that they don't yet need to.
Most students' first programs will be solely contained in a single method.

2. Alternatively, could we have the name be irrelevant if it is the only
method in the class? If we do that, then the concept of the "main" method
would be really impactful, because, once you introduce the concept of
multiple methods, students are likely to ask themselves "which method will
get run first?" In that instance, the concept of a method called main wll
be extremely intuitive and understandable. I really like this idea. I feel
like we have an opportunity for a memorable "light bulb" moment in
student's minds. If they ask themselves which method will be called now
that there are multiple, the "main" method will make perfect sense the
first time. It will complicate that launch protocol. For example, do we
allow parameters? I say, it should follow suit with "main" semantics.

Thank you for your time and help!
David Alayachew

On Wed, Nov 1, 2023 at 4:34 PM Mark Reinhold <mark.reinhold at oracle.com>
wrote:

> https://openjdk.org/jeps/463
>
>   Summary: Evolve the Java programming language so that students can
>   write their first programs without needing to understand language
>   features designed for large programs. Far from using a separate dialect
>   of the language, students can write streamlined declarations for
>   single-class programs and then seamlessly expand their programs to use
>   more advanced features as their skills grow. This is a preview language
>   feature.
>
> - Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20231101/84b08b2d/attachment-0001.htm>


More information about the amber-dev mailing list