Krain Geschrieben 27. Oktober 2004 Geschrieben 27. Oktober 2004 Hallo zusammen, Es geht um die Programmierung eines Freundes. Dieser hat ein Chatapplet programmiert. Dieses Applet umfasst allerdings jetzt schon 80kB. Dadurch dauert es natürlich recht lange, bis es geladen und initialisiert ist! Wie bewerkstelligt man es am besten, dass erst eine Nachricht auf dem Applet erscheint, dass die Daten geladen werden? Oder kennt einer eine Möglichkeit, wie man ein Applet sinnvoll strukturiert um eine möglichst geringe Ladezeit zu bewerkstelligen? Dazu muss ich sagen, dass Bilder schon von einem Thread aus dem Applet vom Server geladen werden! Wie mach ich sowas zum Beispiel mit Java-Klassen? Also das dynamische Laden von Klassen. Kann mir einer Beispiele oder Beschreibungen einer grundsätzlichen vorgehensweise. Wäre euch sehr dankbar! gruss markus Zitieren
Morbid_Soul Geschrieben 27. Oktober 2004 Geschrieben 27. Oktober 2004 Moin! Wäre so ne art Splashscreen ne Lösung? Gruß, Peter Zitieren
Krain Geschrieben 27. Oktober 2004 Autor Geschrieben 27. Oktober 2004 Wie meinst du das? Splash-Screen? Ich hatte es mir so vorgestellt, dass sobald man die HTML-Seite mit dem Applet öffnet ein Text oder ein ProgressBar erscheint, welcher anzeigt, dass das Applet noch geladen wird. Sobald das Laden des Applets abgeschlossen ist. Soll der AppletFrame mit seinen Panels usw. angezeigt werden! Gibt es generell Vorschläge, wie man den Code verkleinern kann? z.B. Auslagern von Bildern und Texten versteht sich von selbst! Konfiguration könnte man in eine XML auslagern. Was gibt's da noch? Zitieren
Morbid_Soul Geschrieben 27. Oktober 2004 Geschrieben 27. Oktober 2004 Moin! Na ja, das solange die Anwendung geladen wird halt ein Bild angezeigt wird. Das lässt sich relativ einfach machen. Einfach bei Goggle nach "java splash screen" suchen. Dann kommen schon ein paar Beispiele. Hat den Nachteil, dass wiederum ein Bild übertragen werden muss, macht den Kohl dann aber auch nicht fett? ProgressBar wäre auch ne Möglichkeit, kann ich aber jetzt spontan nichts zu sagen. Und andere Wege Code zu sparen, fallen mir jetzt auch nicht ein. Gruß, Peter Zitieren
Krain Geschrieben 28. Oktober 2004 Autor Geschrieben 28. Oktober 2004 Ich hab hier mal einen kleinen Testfall entwickelt! kann mir einer sagen, wo mein Fehler liegt! public class TestApplet extends JApplet { public JLabel label; public void init() { } public void start() { JPanel panel = new JPanel(); label = new JLabel("Bitte warten ..."); panel.add(label); getContentPane().add(panel); Thread th = new Thread(new Loader(this)); th.start(); } } public class Loader implements Runnable { TestApplet c; public Loader(TestApplet contentPane) { this.c = contentPane; } public void run() { JPanel p = new JPanel(); for (int i = 0; i < 500; i++) { p.add(new JLabel("lbl"+i)); } c.getContentPane().removeAll(); c.getContentPane().add(p); c.repaint(); } } Nach einer gewissen Zeit verschwindet mein Label. Aber mein neues Panel erscheint nicht! Was mache ich falsch? Zitieren
etreu Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Vielleicht durch den repaint()-Aufruf. Was anderes fällt gerade nicht ein. Zitieren
Krain Geschrieben 29. Oktober 2004 Autor Geschrieben 29. Oktober 2004 Über repaint geht es nicht - ich hab es mit validate() gemacht! Damit hat es funktioniert! Danke Zitieren
frquadrat Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Dieses Applet umfasst allerdings jetzt schon 80kB. Dadurch dauert es natürlich recht lange, bis es geladen und initialisiert ist! Das ist jetzt im Grunde nicht direkt eine Antwort auf Deine Frage, aber Java Web Start wäre eine Option. Mittels Java Web Start "installierte" Programme (sind im Grunde nur signierte Java-Applets) werden auf dem Rechner zwischengespeichert, und nur dann neu heruntergeladen, wenn sich auf dem Server eine neue Datei befindet. http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/faq.html ist die FAQ dazu. Im Grunde kann man jedes Applet zu einer Java Web Start Anwendung machen: - Zertifikat erzeugen (einmalig) - Alle Dateien in ein oder mehrere Jar-Archive packen - Jedes jar mittels zertifikat signieren - passende jnlp Datei (Config-Datei für Java Web Start) erstellen. Fertig. Zum "installieren" des Java-Applets ist dann nur noch das öffnen der jnlp-Datei (z.B. ähnlich dem Applet per http) mittels des Java-Programms "javaws" notwendig. Einen (unter Umständen entscheidenden) Haken hat die Sache: Auf dem Client muss Sun Java (JRE reicht) installiert sein... Zitieren
Krain Geschrieben 29. Oktober 2004 Autor Geschrieben 29. Oktober 2004 Einen (unter Umständen entscheidenden) Haken hat die Sache: Auf dem Client muss Sun Java (JRE reicht) installiert sein... Das muss beim Applet auch so sein - bzw. beim applet muss das neuste Plugin im Browser eingebunden sein. Funktioniert dieses JNLP auch für Applets oder wie geht das ganze dann vor sich? Hört sich interessant an! Ich weiß, dass man über WebStart programme downloaden kann. Aber der Login in diesem Chat funktioniert über PHP! Wenn einer den Chat als reine Anwendung hat bringt ihm das nichts! Über den Chat alleine kann man sich nicht am Server anmelden! Zitieren
kingofbrain Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Servus, ich glaube nicht, das Webstart mit Applets funktionert. Das ist für Applikationen gedacht. Peter Zitieren
frquadrat Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 ich glaube nicht, das Webstart mit Applets funktionert. "Glauben" heißt "nicht wissen", aber ich weiß, das man so gut wie jede Applet in wenigen Schritten in eine Java Web Start Anwendung verwandeln kann, ohne das Applet an sich (bzw. seine Quelltexte) zu ändern. Zitieren
Krain Geschrieben 29. Oktober 2004 Autor Geschrieben 29. Oktober 2004 Das weiß ich auch! Das geht doch über eine Klasse im Java3D-Paket!? Hab ich selbst mal verwendet, weiß aber nicht mehr wie die heißt! Aber wie gesagt, ein Anwendung bringt mir nicht viel, da nutzername und status in appletparametern übergeben werden und nur so die Connection richtig initialisiert wird. Das hab nicht ich geproggt! :confused: Gibt wohl keine Möglichkeit, da was anständiges zu machen! Zitieren
kingofbrain Geschrieben 2. November 2004 Geschrieben 2. November 2004 Servus frquadrat. Das ist jetzt im Grunde nicht direkt eine Antwort auf Deine Frage, aber Java Web Start wäre eine Option. Mittels Java Web Start "installierte" Programme (sind im Grunde nur signierte Java-Applets) werden auf dem Rechner zwischengespeichert, und nur dann neu heruntergeladen, wenn sich auf dem Server eine neue Datei befindet. Deine Aussage hat a) nicht zum Thema gepasst, da es um ein Appletproblem geht und nicht um Applikationen inhaltliche Fehler, da Applikationen, die mit Webstart verteilt werden, keine signierten Applets sind Ausserdem war mein ich glaube kein "nicht wissen" (ich weiss nämlich auch, wie der Spruch weitergeht), sondern ein "schaut einfach mal schnell selber in die Doku, da steht das". Aber hier nochmal amtlich: Webstart funktioniert nicht mit Applets! Peter Zitieren
frquadrat Geschrieben 2. November 2004 Geschrieben 2. November 2004 Hallo Peter, Deine Aussage hat a) nicht zum Thema gepasst, da es um ein Appletproblem geht und nicht um Applikationen Jain. Ich stellte klar, dass die von mir geschriebenen Informationen vielleicht nicht unbedingt eine Lösung des Problems darstellen. inhaltliche Fehler, da Applikationen, die mit Webstart verteilt werden, keine signierten Applets sind Aber hier nochmal amtlich: Webstart funktioniert nicht mit Applets! Wow. Wenn Du das "amtlich" bestätigst, musst Du Dich natürlich auskennen. Demnach müssen folglich die Applets, die ich mittels Java Web Start verfügbar gemacht habe, Applikationen sein, obwohl ich nichts am Sourcecode selbst geändert habe und diese Applets nach wie vor (trotz signierter Archive) als "normales" Applet nutzbar sind, ein wundersamer Ausnahmefall sein. Lies mal am besten http://java.sun.com/products/javawebstart/docs/developersguide.html Dort gibt es u.a. einen Absatz, der das Applet-Desc Element einer jnlp-Datei beschreibt. Dort steht u.A. The Java Web Start software has support for launching Java Applets. Im Gegensatz dazu gibt es natürlich auch Application-Desc Element für Applikationen. Vorschlagen würde ich, mal einfach die Doku zu lesen, bevor man "amtliche" Falschaussagen macht. Zitieren
Jaraz Geschrieben 2. November 2004 Geschrieben 2. November 2004 Wie wäre es wenn ihr einfach ohne Seitenhiebe diskutiert. :mod: Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.