Furthermore, there's ongoing work ([0] and related JEPs) to allow running single Java files without an enclosing class and the static main method:
void main() {
System.out.println("Hello, World!");
}
This is currently (as of JDK 24) under preview, so such a file needs to be run with "--enable-preview". E.g. $ java --enable-preview HelloWorld.java
Hello, World!
[0] https://openjdk.org/jeps/445
With the latest EA release (EA 24) of JDK 25 [1], you no longer need the `--enable-preview`. You can also simplify the println to:
JEP 445 has been followed by JEP 512 which contained minor improvements and finalizes the feature [2].If you want to use 3rd-party libraries, I highly recommend trying JBang [3].
[1] https://jdk.java.net/25/release-notes
[2] https://openjdk.org/jeps/512
[3] https://www.jbang.dev
Hmmm... Disappointing that the static methods are no longer imported as of JEP 512. I thought that was the whole point of the new IO class. If we can't write "println" we might as well just write "System.out.println".