web-dev-qa-db-ja.com

Java applications:main()、init()、or run()?

これまで、私はpublic void run() {}メソッドを使用してJavaでコードを実行してきました。 main()の代わりにinit()またはrun()を使用したい場合/その理由は?

38
Ziggy

mainメソッドは、Javaアプリケーションのエントリポイントです。

具体的には、Java仮想マシンがクラスを指定して(Javaアプリケーションランチャーを使用して)アプリケーションを実行するように指示された場合、シグネチャを持つmainメソッドを探します。 public static void main(String[])の。

Sunの Javaコマンドページから

JavaツールはJavaアプリケーションを起動します。これを行うには、Javaランタイム環境を開始し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出します。

このメソッドは、パブリックおよび静的として宣言する必要があり、値を返してはならず、String配列をパラメーターとして受け入れる必要があります。メソッド宣言は次のようになります。

public static void main(String args[])

Javaアプリケーションの実行方法に関する追加リソースについては、次のソースを参照してください。

  1. 第12章:実行 から Java言語仕様、第3版
  2. 第5章:リンク、ロード、初期化 から Java仮想マシン仕様、第2版
  3. 「Hello World」アプリケーションを詳しく見るJavaチュートリアル

runメソッドは、新しい Thread または Runnable インターフェイスを実装するクラスのエントリポイントです。 Javaコマンドによって起動される場合、JavaVirutal Machineによって呼び出されません。

ThreadまたはRunnable自体は、Java仮想マシンで直接実行できないため、Thread.start()メソッドで呼び出す必要があります。これは、Threadをインスタンス化し、アプリケーションのstartメソッドでmainメソッドを呼び出すことで実現できます。

public class MyRunnable implements Runnable
{
    public void run()
    {
        System.out.println("Hello World!");
    }

    public static void main(String[] args)
    {
        new Thread(new MyRunnable()).start();
    }
}

ThreadのサブクラスまたはRunnableを実装するクラスの開始方法の詳細と例については、 スレッドの定義と開始 Javaチュートリアルを参照してください。


initメソッドは、 Applet または JApplet で呼び出される最初のメソッドです。

アプレットがブラウザのJavaプラグインまたはアプレットビューアによってロードされると、最初にApplet.initメソッドが呼び出されます。アプレットの使用に必要な初期化はすべてここで実行する必要があります。 initメソッドが完了すると、startメソッドが呼び出されます。

アプレットのinitメソッドがいつ呼び出されるかについての詳細は、JavaチュートリアルのThe Appleのライフサイクル でアプレットのライフサイクルについて読んでください。

参照: アプレットの作成方法 Javaチュートリアルから。

17
coobird

Javaには特別な静的メソッドがあります。

public static void main(String[] args) { ... }

Javaコマンドラインでクラスが開始されると、クラスで実行されます:

$ Java Class

存在する場合、クラス「Class」でこのメソッドを実行します。

public void run() { ... }

runnableインターフェースで必要とされるか、新しいスレッドを作成するときにThreadクラスから継承されます。

3

main()メソッドは、Java application。run()のエントリポイントです。通常、新しいスレッドまたはタスクに使用されます。

run()メソッドをどこで書いていますか、どの種類のアプリケーション(Swing、AWT、コンソールなど)を書いており、開発環境は何ですか?

2
Jon Skeet