Java-Tipp 28: Verbessern Sie die Download-Leistung Ihres Applets mithilfe der Java-Konsole von Navigator

Sie haben wahrscheinlich bereits gelesen, wie Sie Ihr Applet mithilfe von Zip-Dateien verpacken, um die Download-Leistung in Netscape Navigator zu verbessern (siehe Java-Tipp 21: Verwenden Sie Archivdateien, um das Laden von Applets zu beschleunigen). In bestimmten Situationen kann die Verwendung von Zip-Dateien für Applets jedoch zu Leistungsproblemen führen.

Angenommen, ein Tool-Anbieter hat ein allgemeines Paket erstellt, das eine Reihe von Funktionen enthält, von denen viele wahrscheinlich nicht verwendet werden. Wenn Sie alle diese Klassen in Ihre Zip-Datei aufnehmen, wächst diese schnell von einigen Kilobyte auf Hunderte von Kilobyte oder mehr, wodurch der Grund für die Verwendung einer Zip-Datei zunichte gemacht wird.

Für dieses Problem gibt es eine Lösung. Obwohl nicht dokumentiert, enthält der Netscape Navigator-Browser eine Java-Konsole (im Menü Optionen). Wenn diese Konsole geöffnet ist, werden Nachrichten System.out.printlnangezeigt , die von Java-Applets geschrieben werden, die gerade in Ihrem Browser ausgeführt werden.

Was deine Mutter dir nicht über die Java-Konsole erzählt hat

Was für Benutzer nicht offensichtlich ist, ist, dass die Java-Konsole Tastaturbefehle akzeptiert. In Navigator 3.0 gibt es 10 Debugging- "Ebenen" (wie die vom Browser angezeigte Meldung sie kennzeichnet) und 3 weitere Tastaturbefehle. Durch Drücken der Tasten 0, 1, 2, ..., 9 werden die Informationen auf Debugging-Ebene festgelegt, die von der virtuellen Maschine angezeigt werden. Durch Drücken der Tasten D, F und G werden andere Aktionen ausgeführt, wie unten beschrieben. In Netscape Communicator 4.0 wurden mehrere weitere Befehle hinzugefügt, einschließlich eines Hilfebefehls, der die als Befehle gültigen Schlüssel beschreibt. Wenn Sie die Taste "h" drücken, erhalten Sie Dokumentation zu den neuen Befehlen.

Dieser Tipp enthält alles, was ich über die Verwendung von Tastaturbefehlen in der Java-Konsole weiß: Ich konnte keine Dokumentation dazu finden. Vielleicht ermutigen meine Ergebnisse jemanden bei Netscape, die Debugging-Ebenen und die drei anderen Tastaturbefehle zu dokumentieren.

Kennen Sie sich mit den Tastaturbefehlen aus

Im Folgenden finden Sie eine Beschreibung der Tastenanschläge D, F und G.

  • Der Tastendruck "D" bewirkt, dass die Java-Konsole Informationen zu allen Applets anzeigt, die von der virtuellen Maschine in der aktuellen Netscape-Sitzung geladen wurden. Mehrere gleichzeitig geöffnete Kopien des Netscape-Browsers verwenden dieselbe Java-Konsole.

  • Der Tastendruck "F" bewirkt, dass die FinalizeKlauseln des verworfenen, aber nicht durch Speicherbereinigung gesammelten Speichers ausgeführt werden - zumindest denke ich, dass dies der Fall ist, da ein separater Schlüssel für die Speicherbereinigung vorhanden ist.

  • Der Tastendruck "G" bewirkt, dass der Runtime.gc()Garbage Collector ausgeführt wird. Ich habe ein wenig mit dem Garbage Collector gespielt, und ich glaube, dass viele Anrufe an ihn getätigt werden müssen, um den Speicher aufzuräumen. Das Minimieren der Zeit, die zum Aufrufen des Garbage Collectors benötigt wird, ist sinnvoll, da Objekte mit anderen Objekten verknüpft sind. Wenn der Garbage Collector jedes Mal nur die Verknüpfung von Objekten an den Enden eines anderen Objekts aufhebt, kann er schrittweise durch den Heap gehen. Dies bedeutet, dass der Garbage Collector nicht in jeder Phase viel wertvolle Zeit verbringt, sondern viele kleine Zeitblöcke verwendet, in denen die CPU sonst nicht verwendet würde.

Hier ist die Ausgabe, die im Java-Konsolenfenster angezeigt wird, wenn jede der oben beschriebenen Tasten gedrückt wird. Vor der Ausgabe des Tastaturbefehls steht eine Copyright-Meldung des Browsers: "AppAccelerator (tm) 1.0.2a für Java, x86-Version. Copyright (c) 1996 Borland International. Alle Rechte vorbehalten."

# Applet-Debug-Level auf 0 gesetzt # Applet-Debug-Level auf 1 gesetzt # Applet-Debug-Level auf 2 gesetzt # Applet-Debug-Level auf 3 gesetzt # Applet-Debug-Level auf 4 gesetzt # Applet-Debug-Level auf 5 gesetzt # Applet-Debug-Level auf 6 gesetzt # Applet-Debug-Level auf 7 gesetzt # Applet-Debug-Level auf 8 gesetzt # Applet-Debug-Level auf 9 gesetzt # Finalisierung durchführen ... # Garbage Collection durchführen ... 

Im Folgenden finden Sie eine Checkliste mit Maßnahmen, die Sie ergreifen können, um die in diesem Tipp beschriebenen Maßnahmen zu erfahren.

  1. Starten Sie Ihren Java-fähigen Netscape Navigator.

  2. Öffnen Sie die Java-Konsole über das Optionsmenü.

  3. Klicken Sie mit der Maus auf die Java-Konsole.

  4. Drücken Sie die Taste "9" (nicht die Taste PF9).

  5. Die Meldung "# Applet-Debugstufe auf 9 gesetzt" wird angezeigt.

  6. Gehen Sie zurück zum Browserfenster.

  7. Laden Sie eine URL, die ein Java-Applet enthält.

  8. Beobachten Sie, wie die Java-Konsole die Details des Applets vom Klassenladeprogramm anzeigt, wenn .class-, .gif-, .jpg- und .zip-Dateien gefunden und geladen werden.

Das folgende Beispiel ist eine Beispielausgabe, die von der Java-Konsole beim Laden eines Applets angezeigt wurde. Ich habe die Taste 9 gedrückt und die Meldung "# Applet-Debugstufe auf 9 gesetzt" wurde in der Java-Konsole angezeigt.

# Applet-Debug-Level auf 9 gesetzt # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # total applets = 1 # Neues Applet: 17930380 in Datei: / E | / Debugger 10-06- 96 / Debugger / width = 300 height = 45 hspace = 0 archive = file: /// E | / Debugger 10-06-96 / Debugger / vspace = 0 align = basic codebase = file: /// E | / Debugger 10 -06-96 / Debugger / code = DebuggerMain.class # startApplet: contextID = 8 appletID = 17930380 newFrameMWContext = 11134828 # startApplet: appletID = 17930380 # Find class DebuggerMain # Abrufen der Datei: / E | / Debugger 10-06-96 / Debugger /DebuggerMain.class # Klasse suchen FocComm # Datei abrufen: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Klasse suchen OpenFileThread # Datei abrufen: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Applet-Ausnahme: Ausnahme: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

at netscape.applet.EmbeddedAppletFrame.run (Kompilierter Code)

at java.lang.Thread.run (Compiled Code) # Klasse suchen ConnectDialog # Datei abrufen: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Klasse StreamListener suchen # Datei abrufen: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Klasse suchen InputLinkedList # Datei abrufen: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Klasse suchen CommunicationError # Datei abrufen: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class Fehler beim Verbinden von FocusConnectjava.net.SocketException: Keine solche Datei oder kein solches Verzeichnis # Sicherheitsausnahme: exit: 0

Erstellen Sie Ihre Zip-Datei

Beachten Sie, dass alle Klassen angezeigt werden, die mein Applet instanziiert hat. Führen Sie Ihr Applet aus und wählen Sie alle möglichen Codepfade aus, um die leistungsstärkste Zip-Datei zu verpacken. Nehmen Sie die von der Java-Konsole angezeigte Ausgabe für diesen Applet-Lauf und erstellen Sie die Zip-Datei, die nur diese Klassen enthält. Diese Liste kann einfach bearbeitet werden - schneiden Sie sie einfach aus dem Java-Konsolenfenster aus, um eine Liste der verwendeten Klassen zu erstellen.

Details zu geladenen Applets mit "D" anzeigen

Der Tastaturbefehl "D" ist nicht Teil der Leistungsoptimierung, aber ich werde ihn hier behandeln, da er nirgendwo dokumentiert ist.

Das Folgende ist die Ausgabe einer Beispielsitzung, die nach Drücken der Taste "D" erfolgt. Ich habe diese Taste gedrückt, um die Parameter in der HTML-Datei zu untersuchen. Diese Informationen können auch durch Anzeigen der HTML-Quelle abgerufen werden.

MozillaAppletContext # frame = 1 # images = 0 # audioClips = 0 url = Datei: / E | / Debugger 10-06-96 / Debugger / DebuggerMain.html EmbeddedAppletFrame id = 17930380 documentURL = Datei: / E | / Debugger 10-06- 96 / Debugger / DebuggerMain.html

codebaseURL = Datei: / E | / Debugger 10-06-96 / Debugger / status = dispose

handler = Thread [Thread-1,5, applet-DebuggerMain.class]

Breite = 300

Höhe = 45

hspace = 0

archive = file: /// E | / Debugger 10-06-96 / Debugger /

vspace = 0

ausrichten = Grundlinie

codebase = file: /// E | / Debugger 10-06-96 / Debugger /

code = DebuggerMain.class

Fazit

The Netscape Navigator browser can aid in the development of your applet in a way that no other tool can. No other method collects the diagnostics of actual runtime information. I hope this technique aids the Java community in producing smaller zip packages for applets. For the Java technology model to succeed we need the speed and graphical functionality of the PC, with the full data access of the Internet and the security of the mainframe. I hope others will find similar techniques to help this new computer model to succeed.

Hinweis: Teodor Todorov, Student an der Cornell University und ein ausgezeichneter Java-Programmierer, muss anerkannt werden. Er entdeckte, dass die Java-Konsole Tastaturbefehle akzeptiert. Für die Befehle in der Java-Konsole in Netscape Communicator 4.0 möchte ich Ales Omahen unter "[email protected]" dafür danken, dass er sie zuerst gefunden hat, und Kevin Lowe unter "[email protected]" auch dafür, dass er sie gefunden hat.

Peter Lenahan ist technischer Direktor bei Information Builders. Derzeit arbeitet er mit mehreren anderen Ingenieuren an einem Java-Unternehmensinformationspaket.

Diese Geschichte "Java-Tipp 28: Verbessern Sie die Download-Leistung Ihres Applets mithilfe der Java-Konsole von Navigator" wurde ursprünglich von JavaWorld veröffentlicht.