How do Java programs run without defining the main method?
The main
method is only used when the Java Virtual Machine is executing your code. Code cannot be executed without a main
method but it can still be compiled.
When compiling code, you usually specify a set of files on the command line e.g.
javac MyClass1.java MyClass2.java
The Java compiler (javac
) examines each class you passed to it and compiles it into a .class file.
One reason Java source code may be missing a main
method is because it is designed to be used as a library, instead of being executed.
Something you may find interesting: although the source code compiled by the Java compiler does not need a main
method, the source code for the Java compiler itself does have a main
method.
There is a difference between running and compiling. Java code can be compiled incrementally. You only need a main
somewhere to run the code. Java "knows where to start" because the compiler is smart enough to arrange all the dependencies when you compile.
Indeed, if you are building a web application in some sort of standard container, your code probably won't have a main
method. The container does, but you just write components that plug in.