Java Programm aus anderem Java Programm starten

Taggert

Mitglied
Servus,

ich habe eine Java Programm geschrieben - läuft auch wirklich gut, allerdings soll es sich von nem Server mit Updates versorgen. Meine Idee hierzu war, dass ich ein anderes Java Programm, nennen wir es mal "Updater", schreibe, dieses auf dem Server nachschaut, ob das eigentliche Programm aktuell ist, um entsprechend die ganzen Dateien runterzuladen, und das Programm danach startet. Nun die Frage: "Wie starte ich ein Java Programm aus einem anderen Java Programm heraus?". Ich möchte nicht mit C arbeiten, da es die Plattformunabhängigkeit zerstört.

Vielen Dank für Eure Hilfe
Taggert

PS: Ich will nicht mit Webstart arbeiten, da Updates nur ab und an anfallen - aber wenn Ihr einen anderen guten Gedanken habt - ich bin für (fast) alles offen.
 
Probiere mal folgendes aus:

Aus deinem Java-Programm rufst du den Updater so auf:
Java:
Updater.main(null);

Voraussetzung dafür ist, dass dein Updater wirklich, wie du oben geschrieben hast, ein eigenständiges Java-Programm ist.
Wenn du deinem Updater noch ein paar Startoptionen mitgeben möchtest, kannst du das mit dem von der main()-Methode geforderten String-Array machen.
 
Das muss ich gleich mal ausprobieren. Lass mich raten, der Updater steht in gleichen Verzeichnis, dann muss ich mir den nicht über getResource reinholen. Klever.
Danke Dir
 
Ich wuerde die beiden Programme getrennt ausfuehren. Zuerst der Updater, der die Version checkt und neue libraries runterlaedt. Dann das eigentliche Program.

Wenn du ein Update runterlaedst musst du eh neu starten oder den Java Classloader so hinbiegen, dass er auch wirklich die neuen libraries laedt. Das ist zuviel Aufwand.

Alternativ wuerde ich Java Web Start empfehlen, welches ja insbesondere die Update funktion unterstuetzt.
 
Ich wuerde die beiden Programme getrennt ausfuehren. Zuerst der Updater, der die Version checkt und neue libraries runterlaedt. Dann das eigentliche Program.

Wenn du ein Update runterlaedst musst du eh neu starten oder den Java Classloader so hinbiegen, dass er auch wirklich die neuen libraries laedt. Das ist zuviel Aufwand.

Alternativ wuerde ich Java Web Start empfehlen, welches ja insbesondere die Update funktion unterstuetzt.

Dito. Die anderen Ansätze sind zu aufwendig. Runtime.getRuntime().exec ist dein Freund.
 
Webstart is so ne Sache - die Software lädt ja dann vom Server aus, das will ich eigentlich nicht, da das ganze Ding schon etwas größer ist. Ausserdem sollen es auch etwas mehr Nutzer sein, wodurch ich davon ausgehe, dass es Performance Probleme geben könnte. Daher war mein Ansatz, dass man sich das Programm runterlädt und der Server nur die Updates macht (die hoffentlich nicht so häufig sind). Ausserdem brauch ich bei für mein Programm dann eine NutzerIdentifikation, die ich eigentlich nicht noch coden will. Daher ist Webstart für mich suboptimal (obwohl ich auch schon darüber nachgedacht habe).

Aber vielen Dank für die guten Tipps und die Anregungen
 
Eventuell solltest du die Web Start Doku nochmal anschauen. Web Start unterstuetzt inkrementelles Runterladen und laedt dann nur die Updates nach. Die Applikation wird auf dem Client gespeichert und nicht jedes mal neu vom Server geladen.
 
Bei Webstart läuft die Software nicht vom Server sondern vom Client.
Es wird lediglich geguckt, ob Updates da sind, die werden dann runtergeladen.
Wenn keine da sind, oder gar keine Verbindung zum Server existiert kann es rein vom Client aus laufen.
 
Also ich kenne mit JDownloader und SQuirreL zwei Java Programme, noch dazu Open Source, die einen solchen Mechanismus wie du ihn haben willst benutzen. Da kommt beim Starten dann auch die Frage, ob vorhandene Updates heruntergeladen und "installiert" werden sollen. Vielleicht schaust du dir da etwas ab?
 

Zurück
Oben