質問: Javaでプログラムを書いて、コンパイルしてclassファイルを作って、 javaコマンドでJVMを起動してclassファイルを渡すことでプログラムが起動すると思いますが、 こういったJVMで動くプログラムは、起点となるメソッドは必ずmainメソッドですか? 例えばTomcatを起動すると、JVM上で様々なスレッドが実行されますが、 これらのスレッドを生み出した起点となるのはmainメソッドなのでしょうか? どなたかご教授お願いします。
回答: unz.horiさんの回答に補足。 コードリーディング Tomcatのソースを読んでみよう 起動編 - BlueWell2より。 > > 変数MAINCLASSにセットしている部分からメインクラスが > > Bootstrapであることがわかります。 > > > > > さあBootstrapクラスのコードを見てみましょう。 > > > ``` public final class Bootstrap { private Object catalinaDaemon = null; protected ClassLoader commonLoader = null; protected ClassLoader catalinaLoader = null; protected ClassLoader sharedLoader = null; public static void main(String args[]) { if (daemon == null) { Bootstrap bootstrap = new Bootstrap(); // 初期化 bootstrap.init(); daemon = bootstrap; } ``` Tomcatのサービス自体はやはり「mainメソッド」が起点となって実行されます。 Servletやjspは、このTomcatのサービス上にLoadされて実行されるのです。