You are viewing a single thread.
View all comments View context
1 point

This is getting a little better nowadays.

> cat Hello.java
void main() {
    System.out.println("Hello, World!");
}
> java --enable-preview Hello.java
Hello, World!

Things to notice:

  1. No compilation step.
  2. No class declaration.
  3. Main method is not public static
  4. No String[] args.

This still uses preview features though. However, like you demonstrated already, compilation is no longer a required step for simplistic programs like this.

permalink
report
parent
reply
-1 points
*

Microsoft Java is a one-liner these days.

> cat program.cs
Console.WriteLine("Hello, World!");
> dotnet run
Hello, World!
permalink
report
parent
reply
4 points

permalink
report
parent
reply
-1 points
*

Main method is not public static

It must be somewhere under the hood. Otherwise, it wont be callable and it would require an instance of an object to call. Unless the object here is the Java environment?

No String[] args

They are just optional I’m sure, like C and C++. You still need them to read command line arguments.

All in all, these syntax improvements are welcome. I already moved on to Kotlin for Android development though.

permalink
report
parent
reply
2 points
*

Main method is not public static

It must be somewhere under the hood. Otherwise, it wont be callable and it would require an instance of an object to call. Unless the object here is the Java environment?

No. From JEP-445:

If an unnamed class has an instance main method rather than a static main method then launching it is equivalent to the following, which employs the existing anonymous class declaration construct:

new Object() {
    // the unnamed class's body
}.main();

No String[] args

They are just optional I’m sure, like C and C++. You still need them to read command line arguments.

Without the preview feature enabled, it is not an optional part of the method signature. It specifically looks for a main(String[]) signature.

permalink
report
parent
reply
-4 points

I am not in the mood to read a technical document, but I don’t think the resulting binary/byte code should be different between the two “hello world” programs. But then again, why not?

Without the preview feature enabled, it is not an optional part of the method signature. It specifically looks for a main(String[]) signature.

Ah ha! So that’s what’s going on here. They almost got it right. They had the potential to make a lot of the boilerplate optional or implicit under relevant circumstances, but instead the language has two explicit switchable modes.

Can I write a Java application in “preview feature”?

permalink
report
parent
reply
2 points

System.base.stuff.output.out.printfunctions.println

Or so it felt every time you wanted to dump something into the console…

permalink
report
parent
reply

Greentext

!greentext@sh.itjust.works

Create post

This is a place to share greentexts and witness the confounding life of Anon. If you’re new to the Greentext community, think of it as a sort of zoo with Anon as the main attraction.

Be warned:

  • Anon is often crazy.
  • Anon is often depressed.
  • Anon frequently shares thoughts that are immature, offensive, or incomprehensible.

If you find yourself getting angry (or god forbid, agreeing) with something Anon has said, you might be doing it wrong.

Community stats

  • 6.8K

    Monthly active users

  • 1.1K

    Posts

  • 43K

    Comments