Tony
Tony

Reputation: 1217

Does every program in Java require a class?

Every Java program requires the presence of at least one class.

Is the above statement always true ?

Upvotes: 14

Views: 23734

Answers (8)

Jan Schultke
Jan Schultke

Reputation: 40164

Since Java 21, you can write a program without the presence of a class, interface, or enum:

void main() {
    System.out.println("Hello, World!");
}

This is possible thanks to JEP 445: Unnamed classes.

However, from the JVM's perspective, there is always a class. enum or interface are considered classes by the JVM, and this Java 21 code simply puts main into an unnamed class. Therefore, it may look like you're not using a class, but under the hood, every program contains at least one class.

Besides your own classes, every program at least needs to load the Object class.

Upvotes: 2

Hrk Manbattulwar
Hrk Manbattulwar

Reputation: 1

No, classes aren't mandatory always we can write/define methods without using classes It is simple, Use INTERFACES , here is the code

public interface MainWithoutClass {
public static void main(String[] args) {
    System.out.println("Main method without Class");
}

public static void m1() {
    System.out.println("M1 method ");
    
}

}

Because Java 8 and after versions allows the interface to have a static methods .

Upvotes: 0

JATIN BEHUNE
JATIN BEHUNE

Reputation: 1

JAVA required at least one class in a program because at the time of execution of Java programs we needed to provide the name of a class which contains the main () method.
so, it is compulsory to provide at least one class name to Java programs. ex--->`

class Test 
{ 
public static void main(String [] args)
{ 
System.out.println("Hello World");
}
}

so, javac _____ ("Here we have to give the name of java program in which we save")

java ______ ("Provide the name of a class which contain the main() method")

-----> according to our program

javac Hello (here I save the program name by Hello.java)

java Test (because Test class contains main() method)

Thank You

Upvotes: -3

rlibby
rlibby

Reputation: 6021

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.

Upvotes: 26

stinepike
stinepike

Reputation: 54742

yes , you need minimum one class.

Upvotes: 0

Sanjay T. Sharma
Sanjay T. Sharma

Reputation: 23248

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.

Upvotes: 9

Matti Virkkunen
Matti Virkkunen

Reputation: 65166

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.

Upvotes: 7

Konerak
Konerak

Reputation: 39773

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

Upvotes: 3

Related Questions