Why is the Java main() method public?

The main method "public static void main(String [] args)" of java should be public because JVM has to call from anywhere of it.

Suppose Currently JVM is inside the D column and my program is inside the B, Now JVM need to call main method from D column, because of that we need to declare main method as "public".

Java specifies several access modifiers e.g. private, protected and public. Any method or variable which is declared public in Java can be accessible from outside of that class. Since the main method is public in Java, JVM can easily access and execute it.

Main method is public so that it can be accessible everywhere and to every object which may desire to use it for launching the application. Here, I am not saying that JDK/JRE had similar reasons because java.exe or javaw.exe (for windows) use Java Native Interface (JNI) calls to invoke method, so they can have invoked it either way irrespective of any access modifier.