Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Applet Problem

Empfohlene Antworten

Veröffentlicht

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

Moin!

Wäre so ne art Splashscreen ne Lösung?

Gruß, Peter

  • Autor

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?

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

  • Autor

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?

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...

  • Autor
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!

Servus,

ich glaube nicht, das Webstart mit Applets funktionert. Das ist für Applikationen gedacht.

Peter

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.

  • Autor

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!

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

B) 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

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.

B) 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.

Wie wäre es wenn ihr einfach ohne Seitenhiebe diskutiert. :mod: ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.