- 次のようなWebサーバー:ApacheTomcat。
- 次のようなアプリケーションサーバー:Weblogic。
- EJBコンテナ。
- AndroidのJavaコンテナ。5>他のすべてのJava実装?
6 に答える
通常はそうです。しかし、いいえ、それは必須ではありません...この回答によって雄弁に指摘されているように... https://stackoverflow.com/a/2897323/1481262
java.lang.instrument
また、(パッケージを使用して)アプリケーションのコードをインストルメントしている間、実行は実行されるpremain
前のメソッドから開始main
されます。-[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 /
はい、すべてのJavaプログラムはmainで始まりますが、各クラスが個別のmain関数を持つ必要はありません。
はい、すべてのプログラムはで始まる必要がありmain
ます。これは、JDKとJREの間の契約のようなものです。
はい。Javaプログラムを起動するときに、使用するクラスを指定すると、その静的main
メソッドがコマンドライン引数を使用して呼び出されます。
JREは常にmain()
メソッドから開始します。ただし、JREを起動し、それを使用して複数の独立したプログラムを実行することは可能です。たとえば、ブラウザは多くの場合、同じJREですべてのアプレットを実行します。
理論的には、http://www.codeproject.com/Articles/17352/JVM-Launcher のように、java.exe の代わりにカスタム ランチャーを作成できます。彼らがどのように呼び出すかを見てみましょう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);
つまり、どのメソッドでもかまいません