Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wir programmieren gerade an einem komplexen JAVA-Applet mit dieversen Bild-, und Steuerelementen.
Funktioniert jetzt eigentlich schon sehr gut und soll auch noch um einige schöne Funktionen erweitert werden.
DAS PROBLEM:
Die Ladezeit betragt bei Aufruf über Web je nach Internetverbindung 10-180 Sekunden!!!!
Das ist eindeutig zu lang.
Wenn wir die locale Netzwerkadresse beim Testen aufrufen wird die Ladezeit <1 Sekunde, auch so wie es sein soll.
Wir haben uns die Aufrufe während des Ladens mal angeschaut und festgestellt, dass alle Elemente komischerweise 2 doppelt geladen werden. 1. Woran könnte das liegen?
2. Welche allgemeine Möglichkeiten und Grundsätze sollte man beim "bauen" eines Applets verwenden, um die Ladezeit auch bei schlechter Internetverbindug möglichst kurz und optimal zu halten. Gibt es da ein paar Tricks, wie man auch aufwendigere Applets schnell zur Anzeige bekommt? Wenn das Applet nämlich nach dem ersten "langem" Aufruf erfolgreich im Browser-Cache ist, dauern die später nachfolgenden Aufrufe auch nur <1 Sek., solange man nicht ein anderes Browserfenster öffnet.!!!!!
Die Klassen befinden sich auf einem externen Server.
Das Auslagern der Klassen auf unseren eigenen Server können wir nicht so einfach machen, weil die Bilder, die angezeigt werden sollen auf dem Applet von dem externen Server stammen.
Wäre toll, wenn sich hier eine Disskussion entwicklet wie man bei aufwendigeren Applets die Ladezeiten optimiert.
Um Ladezeit zu sparen, bzw. ein Applet schneller über das Internet zu befördern kann man die Klassen in ein jar-File packen. Dadurch verringert sich Übertragungsvolumen und die Klassen stehen damit schneller zur Verfügung.
Am einfachsten kann man die Klassen mit einem Packprogramm im Zip-Format speichern und danach die Dateiextension in .jar umbenennen.
gibts da nicht in der 5er Version pack200 oder sowas? IMHO ist es nicht immer optimal, gleich ALLES in ein riesiges Jar zu packen;
Es geht doch auch irgendwie, nur ein minimales Start.class fürs Applet zu verwenden und dann werden alle weiteren Klassen "on demand" vom Classloader automatisch vom Server abgeholt?!
Das Auslagern der Klassen auf unseren eigenen Server können wir nicht so einfach machen, weil die Bilder, die angezeigt werden sollen auf dem Applet von dem externen Server stammen.
stecken die Bilder mit im Jar? oder werden die extra über HTTP abgeholt (url)???
Vielleicht solltest du mal drüber nachdenken, wieviel Daten ein Modem mit 56k maximal innerhalb 1 Sekunde downloaden kann ["so wie es sein soll"] - gegen die Physik kannst du nichts ausrichten
Die Klassen haben wir schon zu einem JAR-File komprimiert.
Trotzdem hat sich die Ladezeit dadurch nicht verbessert.
Bleiglanz hat gesagt.:
Vielleicht solltest du mal drüber nachdenken, wieviel Daten ein Modem mit 56k maximal innerhalb 1 Sekunde downloaden kann ["so wie es sein soll"] - gegen die Physik kannst du nichts ausrichten
Die Grafikelemente und JAR-File sind garnicht so groß.
Selbst bei 56k sollte alles in 1-2 Sek. geladen sein.
Allerdings dauert es trotzdem über 10-180 Sek..
Die Elemente werden anscheinend 2 mal geladen. Ich weiß nicht warum.
Was mache ich falsch beim Laden, und wie machen wir das mit dem Classloader denn genau?
Mhh bei mir wird kein Bild angezeigt (auch wenn ich hinten die Klammer entfern). Kann es sein, dass es in diesem Beispiel an dem Server und nicht an Java liegt?
c) Welcher Webserver? richtiger Content-Type? last-modiefied-header richtig gesetzt?
d) 180 Sek ist doch ein Witz??? Mach mal System.out.print im init() des Appelts und öffne dann die Java-Console des Browsers, damit du mitbekommst, was überhaupt los ist ...
Im allgemeinen dauert das starten der vm doch am längsten, (natürlich gibt's ausnahmen, aber meist ist es doch so !?!) Ist das vieleicht das Probelem :: geht alles nach erneutem Laden ruck zuck ? Und wieviel Kb hat denn alles zu sammen?
Lade mal das Appletm leere den Browsercache und lade das Applet noch mal ohne den Browser neu zu starten, so dass die Daten noch mal runtergeladen werden müssen die vm aber startbereit bleibt
Hä? Was soll das sein? Warum nicht den IIS nehmen, ist doch bei jeder WindowxXP Professional mit dabei?
Einen guten Webserver zu programmieren ist hochgradig nichttrivial, z.B. weil bei Applets und Bildern eine keep-alive TCP Verbindung verwendet werden soll - kann das euer VB6-EXE Webserver?
b) Es werden ALLE Elemente 2 mal geladen und wir wissen nicht genau warum ;-((
schmeiss halt endlich mal Etherreal an und schaut was passiert. Normalerweise schickt der Browser vor jedem Request erstmal eine hasModified anfrage, vielleicht ist das schon was kapput
zeig mal den code fürs Applet her, zumindest dafür sollte doch nur ein einziger Request abgesetzt werden...