Ponto de entrada para aplicativos Java: main (), init () ou run ()?

Até agora tenho usado métodos public void run() {} para executar meu código em Java. Quando/por que alguém pode querer usar main() ou init() ao invés de run() ?

0
Você está usando uma ferramenta GUI, que constrói um monte de código esqueleto para você, e em que você solta o seu método de execução?
adicionado o autor toolkit, fonte

5 Respostas

Java tem um método estático especial:

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

que é executado em uma classe quando a classe é iniciada com uma linha de comando java:

$ java Class

executaria o dito método na classe "Class" se existisse.

public void run() { ... }

é exigido pela interface Runnable ou herdado da classe Thread ao criar novos threads.

0
adicionado

O método main() é o ponto de entrada para um aplicativo Java. run() é normalmente usado para novos threads ou tarefas.

Onde você está escrevendo um método run() , que tipo de aplicativo você está escrevendo (por exemplo, Swing, AWT, console etc) e qual é o seu ambiente de desenvolvimento?

0
adicionado
Eu estou trabalhando no Eclipse, e enquanto eu não sei o que significa AWT ou swing, eu certamente escrevi programas de console. Todos os meus programas até agora só tinham 1 método run() e nenhum método main ().
adicionado o autor Ziggy, fonte
Hmm ... Acabei de tentar no Eclipse, e não consigo lançar classes que apenas tenham o método run (). Como você está executando esses programas?
adicionado o autor Jon Skeet, fonte

O método main é o ponto de entrada de um aplicativo Java.

Especificamente, quando a máquina virtual Java for instruída a executar um aplicativo especificando sua classe (usando o iniciador de aplicativos java ), ele procurará o método main com a assinatura. de public static void main (String []) .

A partir da página de comandos java da Sun :

A ferramenta java inicia um aplicativo Java. Isso é feito começando   um ambiente de tempo de execução Java, carregando uma classe especificada e chamando   método main da classe.

     

O método deve ser declarado público e estático, não deve retornar nenhum   valor, e ele deve aceitar uma matriz String como um parâmetro. O método   declaração deve ser semelhante ao seguinte:

 public static void main (args de seqüência de caracteres [])
 

Para obter recursos adicionais sobre como um aplicativo Java é executado, consulte as seguintes fontes:

  1. Chapter 12: Execution from the Java Language Specification, Third Edition.
  2. Chapter 5: Linking, Loading, Initializing from the Java Virtual Machine Specifications, Second Edition.
  3. A Closer Look at the "Hello World" Application from the Java Tutorials.

O método run é o ponto de entrada para um novo Thread ou uma classe implementando o Interface Runnable . Não é chamado pela Java Virutal Machine quando é iniciado pelo comando java .

Como um Thread ou Runnable não pode ser executado diretamente pelo Java Virtual Machine, então ele deve ser invocado pelo método Thread.start() . Isso pode ser feito instanciando um Thread e chamando seu método start no método main do aplicativo:

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

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

Para obter mais informações e um exemplo de como iniciar uma subclasse de Thread ou uma classe implementando Runnable , consulte Definindo e iniciando um thread a partir dos tutoriais Java.


O método init é o primeiro método chamado em um Applet ou JApplet .

Quando um applet é carregado pelo plug-in Java de um navegador ou por um visualizador de miniaplicativos, ele primeiro chama o método Applet.init . Quaisquer inicializações que são necessárias para usar o applet devem ser executadas aqui. Depois que o método init é concluído, o método start é chamado.

Para obter mais informações sobre quando o método init de um applet é chamado, leia sobre o ciclo de vida de um applet em The Ciclo de vida de um applet dos Tutoriais Java.

Veja também: Como criar applets a partir do Java Tutorial .

0
adicionado

Esta é uma questão peculiar porque não é suposto ser uma questão de escolha.

Ao iniciar a JVM, você especifica uma classe para executar e é o main() desta classe onde seu programa é iniciado.

Por init() , eu suponho que você quer dizer o método JApplet. Quando um applet é iniciado no navegador, o método init() do applet especificado é executado como a primeira ordem de negócios.

Por run() , eu suponho que você quer dizer o método de Runnable. Esse é o método chamado quando um novo encadeamento é iniciado.

  • main: início do programa
  • init: início do applet
  • run: início do encadeamento

Se o Eclipse está executando o seu método run() mesmo que você não tenha main() , então ele está fazendo algo peculiar e não-padrão, mas não é inviável. Talvez você deva postar uma classe de amostra que você está correndo dessa maneira.

0
adicionado
Ha ha ha, OK: Estou importando arquivos de bibliotecas que não sei ler. Então, provavelmente, há um Runnable sendo criado em algum lugar e, em seguida, meus métodos run() estão executando runables. Isso foi ótimo, obrigado!
adicionado o autor Ziggy, fonte

como um iniciante, eu importo pacotes acm, e neste pacote, run() inicia a execução de um encadeamento, init() inicializa o Java Applet.

0
adicionado
Antes de responder a perguntas antigas, verifique se alguém já postou sua resposta. Você não está fornecendo algo novo, comparado com a resposta de Jegschemesch.
adicionado o autor user unknown, fonte