Warum gibts die Main und was sollte drin stehen?

Status
Nicht offen für weitere Antworten.

Azrahel

Bekanntes Mitglied
Hoffentlich stoß ich da jetzt nicht ne Grundsatzdiskussion an.

Ich programmiere jetzt seit 5 Jahren Java, aber so ganz hab ich noch nicht verstanden was jetzt genau in die Klasse main rein sollte. Bisher stehen da bei mir meist nur die Aufrufe zum Starten der Gui drin, und wenn nötig noch das Abfragen und Auswerten mitgegebener Parameter. Das wars dann meist schon. Gibts da vielleicht eine mir bisher nicht bekannte Faustregel was man da reinpacken sollte? Bin um jeden! Gedanken dankbar *lernwillig iss*
 

WieselAc

Top Contributor
Vielmehr passiert da bei mir eigentlich auch nie, außer das ich bei Bedarf dorf noch benötigte dlls lade.
 

Azrahel

Bekanntes Mitglied
Schonmal danke Wiesel :D

Noch jemand nen Gedanken? vielleicht auch ne andre Meinung? (keine Angst wir sind auch tolerant gegenüber denen die nicht so göttliche Programmiergeister sind wie wir :wink: )
 

The_S

Top Contributor
In die Klasse "Main" kannste schreiben was de willst. In die main-Methode wird alles geschrieben um deni Programm zu initialisieren.
 

Azrahel

Bekanntes Mitglied
Ich hab nie Klasse geschrieben! Selbstverständlich hab ich Methode geschrieben!!!
wenn oben was andres stehen sollte verliest du dich bestimmt!!!!!

*mich schämend hinterm Monitor versteck* :oops:

Ja Ne, ich meinte ja Methode. Gibts denn ohne Main-Methode keine Probleme beim starten? habs noch nie ohne versucht...
 

The_S

Top Contributor
ohne main-methode gibt es nur probleme beim starten. Weil wenn deine Klasse keine main hat, startet sie nicht sondern kann nur von anderen Klassen (die u.U. eine main-Methode haben) initialisiert werden.
 

WieselAc

Top Contributor
Ich mach aber dennoch meistens eine "Main" Klasse, in der nichts weiter drin steht als die Main Methode. In der werden dann halt ein paar Sachen initialisiert und alles vorbereitet was das programm so bracuehn könnte.
 

Azrahel

Bekanntes Mitglied
Ich auch *mich bekenn* ich dacht aber auch das die Klasse Main heissen müsste, ich wusst nicht das ich die Main-Methode auch in ne andre Klasse lagern kann. Aber dafür lieb ich dieses Forum :D
 

thomator

Bekanntes Mitglied
Letztlich muss man sich halt einfach vor Augen halten, dass die JRE, wenn sie Dein Programm ausführen soll, irgendwie gesagt bekommen muss, wo sie anfangen soll.
Dafür gibts die main-Methode und der JVM wird als Parameter die Klasse benannt, in der die zu verwendende main-methode steht.

Was da wirklich drin steht is total schnuppe(solange wie's irgendwie Dein Programm startet. :lol: ). Alles andere is eher unter der Rubrik Form und Stil zu dikutieren...
 

mephi

Bekanntes Mitglied
Azrahel hat gesagt.:
Ich auch *mich bekenn* ich dacht aber auch das die Klasse Main heissen müsste, ich wusst nicht das ich die Main-Methode auch in ne andre Klasse lagern kann. Aber dafür lieb ich dieses Forum :D

du hast 5 jahre lang geglaubt du brauchst eine Klasse die Main heißt?
 

Azrahel

Bekanntes Mitglied
mephi hat gesagt.:
Azrahel hat gesagt.:
Ich auch *mich bekenn* ich dacht aber auch das die Klasse Main heissen müsste, ich wusst nicht das ich die Main-Methode auch in ne andre Klasse lagern kann. Aber dafür lieb ich dieses Forum :D

du hast 5 jahre lang geglaubt du brauchst eine Klasse die Main heißt?

Willste jetzt drauf rumreiten? :oops:

Ne eigentlich nur ca 1 Jahr, hab bevor ich Applikationen gebaut hab nur fürs web geproggt, jsp und so...
Also eigentlich nur 1 Jahr. Wobei ich in der Zeit aber auch nur 2 Apps gebaut hab, eine auf der Arbeit die ständig erweitert wird, und die hiess halt von anfang an Main, und eine zuhause, und naja die heisst halt auch main. Zumindest die Einstiegsklasse. Hab mir so da noch nie Gedanken drüber gemacht.

Aber pranger mich deswegen doch an, ich bin auch nur ein Mensch ich hab auch Gefühle :D
 

Marco13

Top Contributor
Es wurde jetzt ein paarmal gesagt: "Ja, in der main macht man so initialisierungen und so...". Das ist IMHO (!) schon viel zu viel. In der main kann man (wenn nötig) Kommandozeilenargumente auswerten. Wenn das nicht nötig ist, kann man dort EIN Objekt EINER Klasse erstellen. (Oder einen SwingWorker bauen, der EIN Swing-Objekt (nämlich das Hauptfenster)) aufmacht. Falls nötig, kann man auf diesem EINEN Objekt dann noch EINE Methode aufrufen. Aber was darüber hinausgeht, hat IMHO (!) in der main nichts verloren.
 

Azrahel

Bekanntes Mitglied
@Marco13 Das macht deine Main auf jeden Fall mal sehr übersichtlich.
Also ist das wohl so das es wieder mal Stilabhängig ist...

Danke schön an alle :)
 

Marco13

Top Contributor
... und es gibt guten und schlechten Stil :wink: Was in der main steht, gehört zu keiner Klasse und zu keinem Objekt. Das andere Extrem (nur, um das zu verdeutlichen) wäre ja eine main, die das gesamte Programm als prozeduralen, ge-inlineten code enthält...
 

WieselAc

Top Contributor
Marco13 hat gesagt.:
... Was in der main steht, gehört zu keiner Klasse und zu keinem Objekt. ...


Dann schließ ich mal die nächste Frage Stellung an was haltet ihr von static Blöcken? Bei denen würd ich ansatzweise das Gleiche behaupten.

Ich find die ziemlich eigenartig, sie wirken auf mich immer etwas der Sprache Java entrückt. Deshalb versuche ich sie immer zu vermeiden. Aber hin und wieder sind die teile schon sehr praktisch.
 

Leroy42

Top Contributor
Ich sehe das genauso wie Marco13.

In meinen mains steht auch (fast) ausschließlich nur

Code:
public static void main(String[] args) {
  Toolkit.getDefaultToolkit().setDynamicLayout(true);
  new MeineKlasse(/* evtl. hier args */).setVisible(true);
}
 

Azrahel

Bekanntes Mitglied
Also dann doch lieber die erste Variante. Obwohl wenn ich mir überlege das mein Projekt mittlerweile über 1000 Klassen hat, das in der main alles zusammengepackt ist garantiert der perfekte Schutz vor Code-Dieben :lol:
 

Leroy42

Top Contributor
In static-Blöcken gehört eben auch nur das rein,
was bei Initialisierung der Klasse (Laden der Klasse)
gemacht werden muß.

WieselAc hat gesagt.:
sie wirken auf mich immer etwas der Sprache Java entrückt.

Sieh' Klassen einfach als Objekte einer Metaklasse an,
die auch initialisiert werden wollen, dann passen auch static-Blöcke
in dein Java-Gefühl. :cool:
 

The_S

Top Contributor
Marco13 hat gesagt.:
Es wurde jetzt ein paarmal gesagt: "Ja, in der main macht man so initialisierungen und so...". Das ist IMHO (!) schon viel zu viel. In der main kann man (wenn nötig) Kommandozeilenargumente auswerten. Wenn das nicht nötig ist, kann man dort EIN Objekt EINER Klasse erstellen. (Oder einen SwingWorker bauen, der EIN Swing-Objekt (nämlich das Hauptfenster)) aufmacht. Falls nötig, kann man auf diesem EINEN Objekt dann noch EINE Methode aufrufen. Aber was darüber hinausgeht, hat IMHO (!) in der main nichts verloren.

Das verstehe ich eigentlich unter initialisieren der Anwendung ;) .
 

mephi

Bekanntes Mitglied
was meint ihr mit static 'blöcken'?
ich benutz überall da static wo eigenschaften für alle objekte gelten oder methoden unabhängig von einem objekt aufgerufen werden sollen

wüsste jetzt nicht was man da anders machen kann
 

Leroy42

Top Contributor
Code:
class MeinInt {
  static private int anzahl;
  static {
    Sytem.out.println("Die Klasse MeinInt wird initialisiert");
    anzahl = 0;
  }

  int theInt;
  public MeinInt() {
    anzahl++;
  }

  public static int bisherErzeugteInstanzen() {return anzahl;}
}
 

mephi

Bekanntes Mitglied
nein das war ernst gemeint. hab das echt noch nie gesehn.

edith meint jetzt versteh ich auch warum ihr diskutiert ob das nötig ist...
 

Jango

Gesperrter Benutzer
Marco13 hat gesagt.:
Es wurde jetzt ein paarmal gesagt: "Ja, in der main macht man so initialisierungen und so...". Das ist IMHO (!) schon viel zu viel. In der main kann man (wenn nötig) Kommandozeilenargumente auswerten. Wenn das nicht nötig ist, kann man dort EIN Objekt EINER Klasse erstellen. (Oder einen SwingWorker bauen, der EIN Swing-Objekt (nämlich das Hauptfenster)) aufmacht. Falls nötig, kann man auf diesem EINEN Objekt dann noch EINE Methode aufrufen. Aber was darüber hinausgeht, hat IMHO (!) in der main nichts verloren.

Dein Wort in Gottes Ohr. Ich kenne Programmierer, die basteln in die main() sogar einen Konstructor...
 
B

Beni

Gast
Ich benutz die Main-Klasse und -Methode gerne noch um Debug-Code zu de-/aktivieren; ansonsten kreiere ich hier nur das Programm-Objekt, und starte es.
 

Illuvatar

Top Contributor
@Jango: Sorry, ich versteh grad net so ganz, was du meinst ;)

Einen Konstruktor in die main-Methode machen? Das geht ja nicht. Und einen aus der main-Methode aufrufen? Das muss man ja wohl.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
7 Gibts in Java ne Funktion, die ein ganzes Array ausgibt Allgemeine Java-Themen 11
H gibts in Java sowas wie in Visual Basic den Timer? Allgemeine Java-Themen 5
T JMF, welche Codecs gibts, und vor allem, wo? Allgemeine Java-Themen 9
B Gibts sogar hier Allgemeine Java-Themen 3
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
F Konstante an main - Argumenten initialisieren Allgemeine Java-Themen 1
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
W Warum muss void main() public sein? Allgemeine Java-Themen 3
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
A main-class Not found Allgemeine Java-Themen 3
A Konstrukt ohne Main für Xml-Parser Allgemeine Java-Themen 1
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
I JFrame Icon in Main übergeben Allgemeine Java-Themen 1
Phash Can't find Main Class Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
C Could not find the main class. Allgemeine Java-Themen 15
I Main wird nicht gefunden Allgemeine Java-Themen 3
B Threads Main Thread warten auf abgebrochen Task warten lassen Allgemeine Java-Themen 25
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
B Cannot find main-claas... Allgemeine Java-Themen 21
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
E Programm von Main Methode starten Allgemeine Java-Themen 9
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
reibi Main-Class in Jarfile Allgemeine Java-Themen 3
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
badfish Inerhalb der [void main] auf ein Objekt der [protected void] zugreifen Allgemeine Java-Themen 13
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
J Main-Thread soll auf alleKinder Threads warten Allgemeine Java-Themen 5
B Main Thread Status abrufen Allgemeine Java-Themen 4
N import com.sun.tools.javac.Main; Allgemeine Java-Themen 1
V main(...) aus Klasse in PDF starten? Allgemeine Java-Themen 3
B UML: Main classe verschwindet nach code generierung nicht?! Allgemeine Java-Themen 4
I Signatur von Main-Methoden? Allgemeine Java-Themen 29
T zu Beginn der main: Heap space ermitteln und hochsetzen Allgemeine Java-Themen 11
J Applet in JAR packen - was muss in main() stehen? Allgemeine Java-Themen 12
E beim Ende der main() das Programm nicht beenden Allgemeine Java-Themen 3
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
V Mehrere main() in jar, wie starten? Allgemeine Java-Themen 4
J Methode nicht ausführbar in main Allgemeine Java-Themen 7
P Kann .jar nicht ausführen - main class not found Allgemeine Java-Themen 6
B Jar File und die Main Klassen Allgemeine Java-Themen 3
M zwei main-Methoden Allgemeine Java-Themen 7
L static main - Spezifikation? Allgemeine Java-Themen 7
N Main-Klasse wird beim Aufruf des JARs nicht gefunden Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
G [JDK 6u2] - JAR Failed to load Main-Class manifest attribute Allgemeine Java-Themen 6
P Zugriff von Klasse 2 auf Klasse 1 (die main methode hat) Allgemeine Java-Themen 5
G Programm ohne Main Allgemeine Java-Themen 10
M Parameter an main übergeben aber wie? Allgemeine Java-Themen 4
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
C Mehrere main-Klassen in JAR Allgemeine Java-Themen 2
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
G "Could not find the main class. Program will exit" Allgemeine Java-Themen 20
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
S Programmlogik, wo ist die Main? Allgemeine Java-Themen 9
C Mehrere main-Methoden in einer jar Allgemeine Java-Themen 7
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
G DBzugriff funktioniert nach 'Build Main Project' nicht mehr Allgemeine Java-Themen 2
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
S wie übergebe ich eine Variable aus einer Methode an main() ? Allgemeine Java-Themen 16
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
R Ausführen von *.JAR || "Could not find main class" Allgemeine Java-Themen 7
I "Could not find the main class. Program will exit" Allgemeine Java-Themen 6
L boolean aus der main übergeben? Allgemeine Java-Themen 12
H jar-file in anderem main programm ausführen Allgemeine Java-Themen 2
M Klassenname in main-Methode ausgeben? Allgemeine Java-Themen 29
G Exception in thread "main" :? Allgemeine Java-Themen 5
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
B Could not find the main class Allgemeine Java-Themen 2
A Was haltet ihr von einer standardisierten Main Klasse? Allgemeine Java-Themen 4
E Klasse dynamisch über main-Methode aufrufen Allgemeine Java-Themen 9
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
MiMa Was sollte man ins JavaDoc implementieren?? Allgemeine Java-Themen 17
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
R Input/Output java.io.EOFException, obwohl sie abgefangen sein sollte? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben