Ich habe mal irgendwo (glaube schon öfter) gelesen zu haben, daß es für Applets ein großes Problem sei, daß auf den meisten Rechnern keine aktuelle Java-Version installiert ist.
Wie schätzt ihr das ein?
Gibt es für alle gängigen Browser Pug-Ins, die leicht zu integrieren sind und mit denen dann Applets problemlos laufen, auch wenn sie neue Sprachmittel nutzen?
Ich habe erst 1.6.22, weil die Installer bei mir nicht richtig funktionieren und er keine Auto-Updates macht. Trotzdem hatte ich noch nie Probleme bei Applets. Aber bei Webstart ist es möglich, eine gewisse JRE vorrauszusetzen, vielleicht geht das bei Applets auch. Schau mal.
Ich kanns dir mit nen Webstart zeigen. Probiere es mal aus, du wirst warscheinlich wie ich sofort zu dem Entschluss kommen, dass es sehr viel sinnvoller als Applets sind. Schon allein, weil sich die Rechte dynamisch erweitern können.
Code:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="Domaine/Verzeichnis" href="Name dieser Datei">
<information>
<title>Titel</title>
<vendor>Ersteller</vendor>
<description>Beschreibung</description>
<icon href="Icon"/>
<offline-allowed/> //Offline ausführbar
<security> //Keine Ahnung, hab ich dazugeschrieben aber keine Änderung in den Rechten bemerkt.
<all-permissions/>
</security>
</information>
<resources>
[b]<j2se version="1.6"/>[/b] //Minimale Version
<jar href="Name der Jar"/>
</resources>
<application-desc main-class="Klasse mit der Main (package.Klassenname)"/>
</jnlp>
ganz einfach : die version mit der du dein applet compilest braucht es dann auch als minimum ...
ich weiß zwar nicht wo genau die unterschiede zwischen einzelnen updates einer major version sind ... aber es gibt deutliche unterschiede zwischen einzelnen major versionen ...
wenn du jetzt z.b. ein applet mit 1.7 compilest dann braucht man zum ausführen auch das 1.7 ... ansonsten wird das applet nicht gestartet da eine major-version-exception fliegt und einfach nur ein leeres meist weißes feld bleibt wo eigentlich das applet sein sollte
wenn du allerdings sprachelemente aus neueren versionen einbaust und dann mit den javac cmd-line options -source und -target eine niedrigere version angibst als die klassen minimumbrauchen meckert der compiler dann die entsprechenden zeilen an
@Volvagia:
habe versucht Dein Beispiel umzusetzten und dabei noch einige Probleme.
Ist es richtig, daß ich den kompletten dist-ordner des java-programms hochlade und die datei "javatry.jnlp" (mit dem code den du gepostet hast) auch in dist ordner liegen muß? und dann so:
[XML]<jnlp spec="1.0+" codebase="http://meinedomain.de/dist" href="javatry.jnlp">[/XML]
Mein Programm nutzt externe Libraries, die natürlich im dist ordner liegen.
Wenn ich dann auf www.meinedomain/javatry.jnlp gehe, bietet mir Mac OS X an die Datei javatry.jnlp herunterzuladen und mit Java Web Start zu öffnen (immerhin!). Nach der Bestätigung kommt ein Programmfehler-Fenster: "Das Programm konnte nicht gestartet werden." Bei den Details steht die Ausnahme:
"java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group"
(das GUI des Programms wurde mit dem Interface-Builder von NetBeans geschrieben.) Das jar file "swing-layout-1.0.4.jar" enthält das Package "org.jdesktop.layout" und liegt im dist ordner. Was läuft hier verkehrt?
Hab das so verstanden, dass die Dinge in externen Libs liegen. Kenne mich damit nicht aus, ich benutze bei Eclipse immer Export -> Runnable JAR File, dass macht das automatisch (im Gegensatz zu Export -> JAR File).
Vielleicht gibt es in Netbeans ja eine ähnliche Funktion, die externes Zeug gleich mit reinpackt.
Habe ich noch nicht gefunden, gibt es aber garantiert.
Habe es jetzt aber einen webstart hinbekommen mit einem Programm, das keine externen Libraries verwendet, das geht schon mal.
In der Wikipedia steht unter java web start:
"Bei jedem Start einer Java-Web-Start-Anwendung kann überprüft werden, ob neuere Komponenten vorliegen. So kann der Anwender stets mit der aktuellen vom Autor des Programms zur Verfügung gestellten Version arbeiten. Eine einmal heruntergeladene Version einer Anwendung bleibt solange in einem Cache auf der Festplatte des Clients, bis bei der Prüfung festgestellt wird, dass eine neue Version vorliegt und diese geladen werden muss. Somit werden unnötige Downloads verhindert und trotzdem sichergestellt, dass immer die aktuelle Programmversion läuft."
und irgendwo anders stand daß der client, sofern <offline-allowed/>, das Programm auch offline verwenden kann.
Das kann ich nicht nachvollziehen. Alles was ich sehe ist daß jedesmal, wenn ich die url meines webstarts eingebe, die Datei xyz.javatry.jnlp heruntergeladen wird (und leider den download-ordner zumüllt weil zumindest auf meinem Rechner die älteren Downloads nicht überschrieben werden sondern die neuen mit nem Index versehen). Wie soll denn ein offline start laufen?
EDIT: okay, bin offline gegangen und habe in den Browser die Adresse des Webstarts eingegeben. Das wars schon?