- Web 服务器,例如:Apache Tomcat。
- 应用服务器,例如:Weblogic。
- EJB 容器。
- 安卓java容器。5>所有其他java实现?
6 回答
Usually yes. But no, it is not required ... as eloquently pointed out by this answer ... https://stackoverflow.com/a/2897323/1481262
Also, while instrumenting the code of applications (using the java.lang.instrument
package), the execution starts with the premain
method before the main
is executed. - [1] [2].
[1] http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html
[2] http://dhruba.name/2010/02/07/creation-dynamic-loading-and-instrumentation-with-javaagents/
Theoretically, you can write a custom launcher instead of java.exe, like here http://www.codeproject.com/Articles/17352/JVM-Launcher. Take a look at how they invoke main
:
//Find the class
jclass jcJclass = psJNIEnv->FindClass(mainClassName);
//Find the main method id
jmethodID jmMainMethod =
psJNIEnv-> GetStaticMethodID(jcJclass, "main", "([Ljava/lang/String;)V");
//Call the main method.
psJNIEnv->CallStaticVoidMethod(jcJclass, jmMainMethod, joApplicationArgs);
that is, it could be any method
是的。main
当您启动一个 java 程序时,您指定要使用的类,并使用命令行参数调用它的静态方法。
是的,所有的 java 程序都以 main 开头,尽管每个类都没有必要拥有它自己的 main 函数。
是的,所有程序都应该以 开头main
,这有点像 JDK 和 JRE 之间的合同。
JRE总是从一个main()
方法开始。但是,可以启动 JRE 并使用它来运行多个独立程序。例如,浏览器通常会在同一个 JRE 中运行它的所有小程序。