Hello World

Möchtegern

Mitglied
Hallo liebe Java-Gemeinde,

ich möchte jetzt gerne noch JAVA lernen, scheitere aber (im Gegensatz zu PHP) gleich an der ersten Hürde.

Ich habe eine HelloApp.java

Java:
import java.awt.*;
import java.applet.*;

public class HelloApp extends Applet {


  
  public static void main(String[] args)
  {
	System.out.println("Hello, world!!!");
  }
}

Wenn ich diese mit
Code:
javac HelloApp.java
kompilliere und mit
Code:
java HelloApp
aufrufe, funktioniert alles.

Auch bei
Code:
appletviewer HelloApp.html
wird ein kleines Fenster geöffnet, jedoch ohne "Hello, world" anzuzeigen.

Und bei
Code:
start HelloApp.html
bleiben der IE und der FF weiß.

Mit einem schwierigerem Beispiel, dass ich gefunden habe, funktioniert aber alles. Sogar auf der Homepage.


Hier die HelloApp.html:

HTML:
<html>
<head>
<title>Example</title>
</head>
<body>

<h1>Example</h1>

<p align=center>
<applet code="HelloApp.class" width="200" height="100" >
  
</applet>
</p>

</body>
</html>

Vielen Dank für Euere Mühe und Unterstützung

Werde, wenn ich JAVA einigermaßen kann, auch wieder Newbies helfen, wie ich das mittlerweile auch bei PHP und MySQL tue.
 
Zuletzt bearbeitet:
Applets kennen keine main()-Methode. Sie gehört nicht zu den Methoden des Applet-Lebenszyklus.
Der Browser findet also nichts zum Ausführen.

Ändere mal Zeile 8 in:
[JAVA=8]public void init() {[/code]

Dann solltest du etwas in deiner Konsole ausgegeben bekommen.
Wenn du Hello World in deinem Browser lesen möchtest, kann dein Applet bspw. so aussehen:
Java:
import java.awt.*;
import java.applet.*;
 
public class HelloApp extends Applet {  
  public void init() {
    add(new Label("Hello World!"));
  }
}

oder so:
Java:
import java.awt.*;
import java.applet.*;
 
public class HelloApp extends Applet {  
  public void paint(Graphics g) {
    super.paint(g);
    g.drawString("Hello World!", 10, 10);
  }
}
 
Ich würde dir raten, Java erst einmal ohne Applets zu lernen, also einfach mit Ein- und Ausgabe über die Konsole. Die meisten Bücher und fast alle Tutorials gehen erst einmal von Desktop-Anwendungen (Konsole oder Swing) aus.
 
@L-ectron-X:

wahnsinn, mit so einer schnellen Antwort habe ich nicht gerechnet.

Auf der Console wird mir nach
Code:
javac HelloApp.java
und
Code:
java HelloApp
folgendes ausgegeben:

Fehler: Hauptmethode in Klasse HelloApp nicht gefunden. Definieren Sie die Hauptmethode als: public static void main(String[] args)


Allerdings zeigt mir
Code:
appletviewer HelloApp.html
"Hello, World!".

Nur
Code:
start HelloApp
zeigt immer noch ein leeres Fenster. Wenn man genau hinschaut, wird für 1/10 sek. ein kleines Fenster geöffnet.


@Landei:

danke für Deinen gut gemeinten Rat, der sicherlich auch sinnvoll ist. Auf der Konsole klappt es ja auch. Trotzdem will ich nicht erst komplett JAVA auf der Konsole lernen, wenn es mir noch nicht einmal gelingt, eine kleine Klasse im Browser auszugeben.

Gruß
 
Hallo L-ectron-X,

vielen Dank für den kompletten Code.

Habe jetzt Deinen kompletten Code übernommen und kompiliert. Trotz gleicher Fehlermeldung auf der Konsole wird diesmal im Browser "Hello World" angezeigt. Das verstehe ich nicht. Möchte ich aber gerne.

Vielen Dank und liebe Grüße
 
Du musst dich aber im Vorfeld dafür entscheiden, ob du nun eine Applikation schreiben möchtest, z.B. in Form einer Consolen-Anwendung (mit main-Methode) oder ob du ein Applet haben möchtest (mit init-Methode).

Oder du machst eine Kombination, d.h. in der Console wird die Main-Methode aufgerufen und als Applet wird die init aufgerufen.

Java:
import java.awt.*;
import java.applet.*;
 
public class HelloApp extends Applet {  
  public static void main(String[] args) {
    System.out.println("Hello, world!!!");
  }

  public void init() {
    add(new Label("Hello World!"));
  }
}
 
Auf der Console wird mir nach
Code:
javac HelloApp.java
und
Code:
java HelloApp
folgendes ausgegeben:

Fehler: Hauptmethode in Klasse HelloApp nicht gefunden. Definieren Sie die Hauptmethode als: public static void main(String[] args)
Das ist ein Fehler deines Editors bzw. deiner IDE, der/die nicht erkennt, dass es sich bei deiner Klasse um ein Applet handelt.
Der Browser sucht bei einer Applet-Klasse immer nach der init()-Methode. Das ist sein Einstiegspunkt in das Applet. Genauso, wie der Interpreter bei der ihm übergebenen Applikation nach einer main()-Methode sucht.

Allerdings zeigt mir
Code:
appletviewer HelloApp.html
"Hello, World!".
Na bitte! :toll: Das Gleiche sollte passieren, wenn du die Webseite doppelklickst.

Nur
Code:
start HelloApp
zeigt immer noch ein leeres Fenster.
start funktioniert an dieser Stelle nur mit einer ausführbaren Datei, bspw. einer exe- oder bat-Datei.
Eine class-Datei muss einem Interpreter übergeben werden.
Code:
start HelloApp
wird hier also eine Fehlermeldung des Betriebssystems provozieren, die man auch kurz für eine 1/10 Sekunde in der Kommandozeile sehen kann. 😉

Um eine Java-Applikation zu starten muss, so wie du es oben schon richtig geschrieben hast, der Java-Interpreter aufgerufen werden. Ihm wird die Klasse mit der main()-Methode übergeben.
 
Hallo Paddelpirat,

vielen Dank für Deine schnelle und erklärende Antwort. Dort liegt also der Hase begraben. Aber in den verschiedenen Tutorials, die ich mir vorerst angeschaut habe, steht davon gar nichts. Sondern genau das Gegenteil: mann kann diesen Code auf der Konsole gebrauchen und auch mit dem Browser ausgeben.

Gruß auch
 
Was dir Paddelpirat vorgeschlagen hat, funktioniert noch in diesem Fall. Wenn du aber größere Programme mit Bildern und GUI schreiben möchtest und in einer Klasse Applet und Applikation mischst, wirst du nicht so einfach ans Ziel kommen. Es wird immer hässliche Konstrukte geben.
Ich finde es besser, wenn beide immer getrennt gehalten werden.
 
@L-ectron-X,

vielen Dank für die Supererklärung. Das habe ich in noch keinem Tutorial gelesen. Habe mir sowieso erst mal ein paar Bücher bestellt.

Muss jetzt an die Arbeit.

Schließe das Thema, weil mir geholfen wurde.

Einen schönen Tag für Euch Alle und vielen Dank.

Liebe Grüße
Möchtegern
 
Nuja in meinem Beispiel hab ich halt nur die Startoptionen für Applet und Applikation gezeigt. Wieso funktioniert das denn nicht mehr bei größeren Projekten?!? Klar du musst die beiden Methoden so handhaben dass sie nur zum Aufrufen des Programmes dienen und nicht der gesamte sonstige Code darin steht (im übelsten Fall zweimal *g*). Aber sonst sehe ich gerade keinen Grund wieso es nicht funktionieren sollte.
 
Durchsuche mal das Forum nach Appletcation oder Applikation zu Applet oder Applet zu Applikation etc. Du findest Code-Beispiele aus denen hervorgeht, dass die Handhabung von einer Mischung von Applet und Applikation in einer Klasse unbequem werden kann. Wenn du das sauber trennst, gewinnst du so auch noch mehr Flexibilität (Wiederverwendbarkeit).
 

Zurück
Oben