Does every program in Java require a class?

A program requires an entry point. An entry point has to be a method. In Java, every method must be contained in a class.

That would imply that every program must have a at least one class.


Yes, you need at least one class to have a program, but no, you do not need any methods (contrary to some other answers).

The reason you need a class is because in Java, all code is inside classes. So to have any code, you need a class. However, code doesn't necessarily need to be in a method. It can also be in initializers. So, here is a complete Java program with no methods:

class LookMaNoMethods {
    static {
        System.out.println("Hello, world!");
        System.exit(0);
    }
}

And that gives...

$ javac LookMaNoMethods.java 
$ java LookMaNoMethods 
Hello, world!
$ 

EDIT : From Java 7 the above code with just static block and no main method does not produce any output. Main method is now compulsory. The code with no main method compiles successfully though.


Yes. In Java you always need one class with the function main to have the JRE run it.


From the JVM's point of view; yes. From a programmers view point, it can be a Class or an Enum.

public enum AAA {

    AAA;

    public static void main(final String[] args) {
        System.out.println("H");
    }

}

EDIT: Even if you have a class with empty main method, there are a lot of core classes which work behind the scene to just run the "empty" class of yours. A list of those classes (around 200 from the java.* package) can be viewed by setting the -verbose:class JVM parameter.

Tags:

Java