Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Who calls the main function in java?

Tags:

java

public static void main(String[] args) 
{
    boolean t=true;
    System.out.println("Before return");
    if(t) return;
    System.out.println("not execute");
}

In the above code when the return is used then it should return to the function which calls the main function. Who exactly calls the main function?

like image 975
Radheshyam Nayak Avatar asked Oct 16 '10 16:10

Radheshyam Nayak


2 Answers

The Java Virtual Machine.

like image 94
Peter C Avatar answered Oct 02 '22 05:10

Peter C


Java classes are executed within a larger context (a particular JVM as others have noted). Below are some possibilities:

  • you run java -cp {classpath here} com.example.foo.SomeClass to explicitly select a class for the java application launcher to run
  • you run java -jar somejar.jar (the class in question will be selected in the .jar file's manifest)
  • you are working within Eclipse and use debug/run to execute a particular class's main() method.

In all cases the main() method is the canonical entry point to executing code given a particular class. From the docs on the java JVM:

DESCRIPTION

The java tool launches a Java application. It does this by starting a Java runtime environment, loading a specified class, and invoking that class's main method. The method declaration must look like the following:

   public static void main(String args[])

The method must be declared public and static, it must not return any value, and it must accept a String array as a parameter. By default, the first non-option argument is the name of the class to be invoked. A fully-qualified class name should be used. If the -jar option is specified, the first non-option argument is the name of a JAR archive containing class and resource files for the application, with the startup class indicated by the Main-Class manifest header.

The Java runtime searches for the startup class, and other classes used, in three sets of locations: the bootstrap class path, the installed extensions, and the user class path.

Non-option arguments after the class name or JAR file name are passed to the main function.

The javaw command is identical to java, except that with javaw there is no associated console window. Use javaw when you don't want a command prompt window to appear. The javaw launcher will, however, display a dialog box with error information if a launch fails for some reason.

You state:

In the above code when the return is used then it should return to the function which calls the main function.

There may not be any other Java function (in fact there usually isn't) which calls the main() function. It's the convention for declaring a well-known entry point. If the JVM is launched to run your class's main() method, then when main() returns, the JVM exits, except in a few special cases, e.g. there are other non-daemon threads running or there is a shutdown hook.

like image 27
Jason S Avatar answered Oct 02 '22 06:10

Jason S