Download und Update einer Java-Anwendung

faustdonner

Mitglied
Ich möchte in meinem Spiel einen Patchvorgang ausführen habe aber keine Ahnung wie man Sachen aus dem Internet downloadet. Ich hoffe ihr könnt mir helfen :D
 

irgendjemand

Top Contributor
Ich möchte in meinem Spiel einen Patchvorgang ausführen habe aber keine Ahnung wie man Sachen aus dem Internet downloadet. Ich hoffe ihr könnt mir helfen :D

alleine die frage beinhaltet schon deinen denkfehler ...

auch ist "aus dem netz loaden" nicht ganz so korrekt ... denn es ist lediglich ein datenaustausch wie jeder andere auch ... "download" bezeichnet dabei nur den vorgang den von der quelle kommenden daten-stream in ein file zu speichern ... *upload dementsprechend die umkehrung : ein file über einen daten-stream an einen server senden*

WIE du das ganze umsetzen kannst hängt vor allem von deinem "patcher" ab ...

du kannst entweder normal daten über HTTP laden ... oder dir einen eigenen patch-server basteln ...

näheres dazu würde ich dir dann aber empfehlen im netz-forum zu posten
 

irgendjemand

Top Contributor
@l-ectron-x
webstart ist vermutlich ne ganz super lösung ... aber wirklich "praktikabel" ist webstart auch nur unter windows mit IE als browser ... denn bei allen anderen konfigurationen greift schon alleine das auto-setup *welches über ActiveX läuft* schon nicht mehr ... führt also im backend zu einem riesen aufwand um alleine mit der website alle möglichen browser/OS kombinationen zu unterstützen ...

auch ist webstart eher als eine art applet-viewer als für richtige applications gedacht ... denn apps innerhalb der webstart VM laufen in der selben sandbox wie applets im browser ... was mit unter zu problemen führen kann und in der regel eine signierung des gesamten codes nötig macht ...

@TO
du siehst : es gibt möglichkeiten ... aber die "frage" ist halt schlecht gestellt um dir genug infos geben zu können
 

L-ectron-X

Gesperrter Benutzer
aber wirklich "praktikabel" ist webstart auch nur unter windows mit IE als browser ... denn bei allen anderen konfigurationen greift schon alleine das auto-setup *welches über ActiveX läuft* schon nicht mehr ...
Hast du das durch eigene Tests ermittelt, oder irgendwo mal gelesen?
Jedenfalls kannst du getrost dieses (vermutlich veraltete) Wissen aus deinem Gedächtnis streichen.

Ich arbeite schon seit Jahren mit Opera, der weiß gar nicht, was ActiveX ist. Und dennoch startet er meine Webstart-Anwendungen. Genauso wie der Firefox.

Es gibt für die technische Kompatibilität nur eine Bedingung: der Webserver muss die Dateiendung .jnlp verarbeiten können. (das machen die meisten Webserver)
Die jnlp-Datei ist eine Textdatei, die in XML-Form einige Informationen über die Konfiguration, abhängige Bibliotheken und minimalste JRE sowie die Anwendung selbst speichert. Diese Datei wird in einer Webseite als Link angeboten. Der Benutzer läd diese jnlp-Datei herunter und startet (doppelklickt) sie lokal auf seinem System.
Da die Anwendung jedoch aus dem Netz heruntergeladen wurde, untersteht die den Einschränkungen der Sandbox - genau wie ein Applet.

und in der regel eine signierung des gesamten codes nötig macht ...
Korrekt, und die Anwendung erhält dann auch volle Zugriffsrechte, wenn der Benutzer dem Zertifikat vertraut. Anderenfalls werden potentiell kritische Operationen mit einer AccessControlException "beendet".

Wenn man den Speicherort eines Java-Programms (jar-Datei) und dessen evtl. abhängige Bibliotheken kennt, kann man (nicht nur theoretisch) zu hause, lokal eine jnlp-Datei dazu schreiben, die das Programm herunterläd und startet.
 

irgendjemand

Top Contributor
OUCH ... ich denke DU hast nicht verstanden was ICH mit meine post sagen wollte ...


gesetz dem fall das der user KEIN java installiert hat ... muss dies erst installiert werden bevor der client rechner überhaupt in der lage ist webstart auszuführen ... vorher würde der browser selbst mit einem korrekten content-type für .jnlp nur einen DL-dialog öffnen ... da der rechner nicht weis was er mit "application/x-java-jnlp-file (.jnlp)" anfangen soll

nun kommt microsofts ActiveX technologie zum einsatz : ActiveX ist etwas ähnliches wie "add-ons / plug-ins / wie auch immer" in allen anderen browsern ... mit dem unterschied das diese während der "runtime" des IE geladen , installiert und eingebunden werden können ... wo ja leider alle anderen browser erfolgreich dran scheitern ...

nun bietet ActiveX die möglichkeit das sog. JavaSetup-ActiveXControll zu installieren ... was quasi ein dierektes setup von java von der seite aus ermöglicht ... *ist übrigens die selbe vorgehens weise wenn du mit IE auf ne seite gehst in der ein flash eingbunden ist *z.b. YT* ... dann wirst du gleich zum setup aufgefordert *natürlich auch "abbrech-bar"*

in allen anderen browsern muss allerdings in diesem falle VORHER geprüft werden ob der browser überhaupt java bereits unterstützt *wird durch ActiveX ebenfalls geregelt und erfordert daher KEINEN weiteren code* und wenn nicht muss z.b. via JS in einer schleife auf das beenden des setups gewartet werden *so der offiziell vorgeschlagene "weg" von Sun/Oracle ... nachzulesen im Java-Tut* ... und das ist schon ein erheblicher aufwand ... im gegensatz dazu mal schnell einen eignen kleinen updater zu schreiben ist *mit etwas hilfe von erfahrenen programmierern* deutlich einfacher und schneller umgesetzt als sich mit WebStart zu beschäftigen ... das JNLP kennen zu lernen und sich dann noch mit verschiedenen möglichkeiten rumzuschlagen ...

zeigt mir : du hast dich scheinbar noch NIE mit Win/IE und/oder ActiveX und damit auch noch nicht 100% mit WebStart beschäftigt ... sonst wüsstest du das es genau dieses problem gibt ... *für jemanden der seit seinen anfängen nur IE nutzt *aus überzeugung und aus gewissen vorteilen gegenüber anderen browsern* und daher diese hürden kennt würde sich eine EIGENE , pure-java implementierung immer besser machen als sich mit einem haufen unnötigen kram zu beschäftigen um eine simple aufgabe zu lösen ...


WebStart ist eben nun mal NICHT das all-heil-wunder-mittel wenn es um sowas wie "up-to-date halten" seiner software handet ...
auch ist die vorhandene SandBox von den meiste NICHT gewünscht ... und manchmal wäre das "produkt" mit diesen einschränkungen auch überhaupt nicht lauffähig ...


also bitte : vorher selber mal ein wenig im sun-tut über das vorgeschlagene nachlesen als es einfach stumpf zu posten ... da es auch "schattenseiten" haben kann von denen du nichts weist *wie sich hier wunderschön gezeigt hat*
 

L-ectron-X

Gesperrter Benutzer
irgendjemand hat gesagt.:
gesetz dem fall das der user KEIN java installiert hat ... muss dies erst installiert werden bevor der client rechner überhaupt in der lage ist webstart auszuführen ...
Da gebe ich dir Recht. Habe ich nicht erwähnt. Aber wie viele Rechner haben kein Java installiert?
Der TO möchte einen Patchvorgang starten. Da er in einem Java-Forum gepostet hat, gehe ich davon aus, dass sich sein Anliegen um eine Java-Anwendung dreht.
Ergo: sollte er und die Benutzer seines Programms auch Java installiert haben, und schon greift dein ActiveX-Argument nicht mehr, zumal es sich ausschließlich auf Windows-Systeme beziehen dürfte. :bahnhof:
Sobald eine aktuelle JRE installiert ist, dürfte Webstart kein Problem mehr sein.

nun kommt microsofts ActiveX technologie zum einsatz : ActiveX ist etwas ähnliches wie "add-ons / plug-ins / wie auch immer" in allen anderen browsern ...
...
wo ja leider alle anderen browser erfolgreich dran scheitern ...
Das muss nicht unbedingt ein Problem des Browsers sein. Ich frage mich, warum die das in Linux nicht hinkriegen... ? :bahnhof: ;)
Abgesehen davon ist ActiveX unsicher, da dürfte ich dir nichts Neues erzählen. Ein Sandbox-System wie in Java gibts dort nicht.

Du hast recht, ich schere mich nicht um ActiveX und auch nicht um den IE und noch weniger um Windows-Bibliotheken. Weils proprietär und unsicher ist und ungefragt am System des Benutzers rumfrickelt.
Ich programmiere mit Java, weil ich mich ungern auf eine Plattform festlegen möchte.

ActiveX mag vielleicht für den einen oder anderen Sinn machen. Aber ich brauche es in meinem Programmieralltag nicht.

WebStart ist eben nun mal NICHT das all-heil-wunder-mittel wenn es um sowas wie "up-to-date halten" seiner software handet ...
Das habe ich auch nicht behauptet. Es ist aber eine Möglichkeit. Darum ging es mir.
 

tdc

Bekanntes Mitglied
Ich hatte dieses Problem auch bereits und mein grober Ansatz sah folgendermaßen aus:
Man hat 2 .jar-Dateien, einen "Starter" und das Spiel an sich. Zuerst startet man den Starter, der dann über das normale Java-Netwerk-Zeugs (ja, ich drücke mich wieder sehr professionell aus ;) ) mit einem Server kommuniziert. Mit diesem gleicht er dann eine, in einer Textdatei abgespeicherten, Versionsnummer ab und falls diese übereinstimmt, startet er die Spiel-Jar. Wenn sie nicht übereinstimmt, lädt er die aktuelle Spiel-Jar vom Server herunter und speichert sie unter einem anderen Namen (z.B. "Spiel_new.jar") neben der existierenden Spiel-jar ab. Die alte .jar löscht er dann, die neue benennt er um und startet sie.

Okay, die Lösung ist ein wenig umständlicher als die Webstart-Lösung, aber mir hat Webstart einfach nicht gefallen und wenn man sich ein wenig in die Netzwerkprogrammierung in Java einarbeitet ist es auch relativ einfach umzusetzen.

[EDIT]So viel zur Grundidee, da du aber schreibst, du wüsstest nicht, wie man Sachen aus dem Internet herunterlädt, solltest du dich im Internet (Google) mal zur Netzwerkprogrammierung in Java einlesen. Ich glaube mir hat damals unter anderem das geholfen. ;)[/EDIT]
 
Zuletzt bearbeitet:

irgendjemand

Top Contributor
[ot]im gegensatz zu zum beispiel FireFox-Plugins sind ActiveX deutlich sicherer ...
begründung : beim FF wird lediglich eine meldung geöffnet ob man Plugin X installieren möchte ...

beim IE wird vorher erstmal eine signatur-prüfung durchgeführt ... ergo : ein ActiveX muss über eine gültige signatur verfügen damit es überhaupt installiert werden kann ... ansonsten wird es *zumindest bei default settings* komplett gesperrt ...
auch gibt der IE deutliche hinweise das es IMMER risikoreich ist ActiveX zu installieren ... so eine meldung fehlt beim FF komplett ...

das größte problem allerdings ist das die meisten user ganz stumpf auf "ja" / "next" / "weiter" klicken ... dafür brauch ich nich mal n plugin oder n activex ... da brauch ich nur n "applet" signieren ... das irgendwo einbinden ... und kann dann auf grund dieser stumpfheit das eh alles zu gelassen wird ... auch damit meine "schad-software" verbreiten ...[/ot]
 
G

Guest2

Gast
Moin,

ich kann die Argumentation leider nicht ganz nachvollziehen. Es wird damit argumentiert das Webstart versagt, wenn gar kein Java installiert ist. Was auch völlig korrekt ist (außer im IE, da geht es trotzdem). Eure Selbstbau-Updater versagen allerdings doch auch, wenn kein Java installiert ist?!

Dann wird bei ActivX damit argumentiert diese seien sicherer (als FF-Plugins) weil sie signiert sein müssen. Bei Webstart wiederum wird dies als Nachteil angesehen. Ganz davon abgesehen, dass eine Signatur erstmal nichts über die Sicherheit einer Anwendung aussagt, sondern lediglich den Autor ausweist.

Das Webstart Anwendungen erstmal in einer Sandbox laufen ist korrekt. Für einzelne Dateizugriffe sowie Drucker und Persistenzfunktionen bietet die JNLP API aber auch Funktionen, um aus der Sandbox heraus zu agieren. Alles Weitere muss in der Tat signiert werden. Eine Selbstsignatur ist im Zweifelsfall aber auch nicht schlimmer, als eine Anwendung direkt ohne Sandbox laufen zu lassen.

Daneben bietet Webstart aber auch eine ganze Reihe weiterer Funktionen ohne zusätzlichen Mehraufwand. Angefangen von VM Parametern bis zu Links im Start Menü (und noch viel mehr). Ganz konkret: Eine LWJGL Anwendung per Webstart zu starten ist easy und geht ohne weitere Signatur! Ohne Webstart: Kommandozeile, Batch-Dateien, EXE Warpper, ELF Wrapper usw., das ist doch gruselig?!

Viele Grüße,
Fancy
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S [SUCHE] 2D-Spieleprogrammierung (Autor: Quaxli) zum Download Spiele- und Multimedia-Programmierung 2
hdi Quiclix : Game download Spiele- und Multimedia-Programmierung 5
D Probleme beim Download von GIF-Bildern Spiele- und Multimedia-Programmierung 4
J LWJGL Update Schleife (Snake) Spiele- und Multimedia-Programmierung 6
B LWJGL Display.update() ist langsam Spiele- und Multimedia-Programmierung 5
A Minecraft SocketException nach Minecraft-Update Spiele- und Multimedia-Programmierung 6
Developer_X How to : Update? Spiele- und Multimedia-Programmierung 26
R Update und repaint() im ActionListener Spiele- und Multimedia-Programmierung 3
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14

Ähnliche Java Themen

Neue Themen


Oben