Programování

Tip pro Javu 28: Zlepšete výkon stahování svého appletu pomocí konzoly Java v Navigátoru

Pravděpodobně jste již četli o zabalení appletu pomocí souborů zip ke zlepšení výkonu stahování v Netscape Navigator (viz Java Tip 21: Použití archivních souborů k urychlení načítání appletu). V určitých situacích však použití souborů zip pro applety může vést k problémům s výkonem.

Řekněme například, že prodejce nástrojů vytvořil obecný balíček, který obsahuje řadu funkcí - z nichž mnohé pravděpodobně nebudete používat. Zahrnutí všech těchto tříd do souboru zip způsobí jeho rychlý růst z několika kilobajtů na stovky kilobajtů nebo více, čímž se nejprve zruší důvod pro použití souboru zip.

Existuje řešení tohoto problému. Ačkoli není dokumentován, obsahuje prohlížeč Netscape Navigator konzolu Java (v nabídce Možnosti). Když je tato konzola otevřená, objeví se zprávy, do kterých se zapisuje System.out.println z jakýchkoli appletů Java spuštěných ve vašem prohlížeči.

Co vám vaše matka neřekla o konzole Java

Uživatelům není zřejmé, že konzola Java přijímá klávesové příkazy. V Navigátoru 3.0 je 10 ladicích „úrovní“ (jak je zobrazuje zpráva zobrazená prohlížečem) a 3 další klávesové příkazy. Stisknutím kláves 0, 1, 2, ..., 9 nastavíte informace na úrovni ladění, které virtuální počítač zobrazí. Stisknutím kláves D, F a G způsobíte další akce, jak je popsáno níže. V Netscape Communicator 4.0 bylo přidáno několik dalších příkazů, včetně příkazu nápovědy popisujícího klíče, které jsou platné jako příkazy. Pokud stisknete klávesu „h“, získáte dokumentaci k novým příkazům.

Tento tip představuje vše, co vím o používání klávesových příkazů v konzole Java: Nebyl jsem schopen najít o tom žádnou dokumentaci. Možná moje zjištění povzbudí někoho v Netscape, aby zdokumentoval úrovně ladění a další tři klávesové příkazy.

Orientujte se v příkazech z klávesnice

Následuje popis akcí klávesových zkratek D, F a G:

  • Klávesová zkratka "D" způsobí, že konzole Java zobrazí informace o všech appletech načtených virtuálním strojem v aktuální relaci Netscape. Několik kopií prohlížeče Netscape, které jsou otevřeny současně, sdílejí stejnou konzolu Java.

  • Klávesa "F" způsobí Dokončit klauzule vyřazené, ale ne shromážděné paměti, která má být spuštěna - alespoň si myslím, že se to stane, protože pro sběr odpadu existuje samostatný klíč.

  • Klávesa "G" způsobí Runtime.gc () garbage collector spustit. Trochu jsem si hrál se sběratelem odpadků a věřím, že je třeba na něj volat hodně, aby se vyčistila paměť. Minimalizace času potřebného k volání garbage collector má smysl, protože objekty jsou propojeny s jinými objekty. Pokud garbage collector pokaždé odpojí pouze objekty na koncích jiného objektu, může procházet haldu ve fázích. To znamená, že sběratel odpadků netráví v každé fázi mnoho cenného času, ale používá mnoho malých časových úseků, kdy by procesor jinak nebyl používán.

Tady je výstup, který se zobrazí v okně konzoly Java po stisknutí každé z kláves popsaných výše. Zpráva s autorskými právy z prohlížeče předchází výstupu příkazu klávesnice: „AppAccelerator (tm) 1.0.2a pro Java, verze x86. Copyright (c) 1996 Borland International. Všechna práva vyhrazena.“

# Úroveň ladění appletu nastavena na 0 # Úroveň ladění appletu nastavena na 1 # Úroveň ladění appletu nastavena na 2 # Úroveň ladění appletu nastavena na 3 # Úroveň ladění appletu nastavena na 4 # Úroveň ladění appletu nastavena na 5 # Úroveň ladění appletu nastavena na 6 # Úroveň ladění appletu nastavena na 7 # Úroveň ladění appletu nastavena na 8 # Úroveň ladění appletu nastavena na 9 # Provádění finalizace ... # Provádění uvolňování paměti ... 

Níže je uveden kontrolní seznam akcí, které můžete podniknout, abyste si vyzkoušeli, co je popsáno v tomto tipu.

  1. Spusťte Netscape Navigator s podporou Java.

  2. Otevřete konzolu Java z nabídky Možnost.

  3. Klikněte myší na konzolu Java.

  4. Stiskněte klávesu „9“ (ne klávesu PF9)

  5. Zobrazí se zpráva „# úroveň ladění appletu nastavena na 9“.

  6. Vraťte se zpět do okna prohlížeče.

  7. Načtěte adresu URL, která obsahuje applet Java.

  8. Sledujte, jak konzola Java zobrazuje podrobnosti appletu z zavaděče tříd, protože jsou umístěny a načteny soubory .class, .gif, .jpg a .zip.

Následující příklad je ukázkový výstup, který se zobrazil v konzole Java, když jsem načetl applet. Stiskl jsem klávesu 9 a na konzole Java se zobrazila zpráva „# Applet debug level set to 9“.

# Úroveň ladění appletu nastavena na 9 # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # celkový applet = 1 # Nový applet: 17930380 v souboru: / E | / Debugger 10-06- 96 / Debugger / width = 300 height = 45 hspace = 0 archive = file: /// E | / Debugger 10-06-96 / Debugger / vspace = 0 align = baseline codebase = file: /// E | / Debugger 10 -06-96 / Debugger / code = DebuggerMain.class # startApplet: contextID = 8 appletID = 17930380 newFrameMWContext = 11134828 # startApplet: appletID = 17930380 # Najít třídu DebuggerMain # Načíst soubor: / E | / Debugger 10-06-96 /DebuggerMain.class # Najít třídu FocComm # Načítání souboru: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Najít třídu OpenFileThread # Načítání souboru: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Výjimka appletu: výjimka: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

na netscape.applet.EmbeddedAppletFrame.run (kompilovaný kód)

at java.lang.Thread.run (Compiled Code) # Find class ConnectDialog # Fetching file: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Find class StreamListener # Fetching file: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Najít třídu InputLinkedList # Načítání souboru: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Najít třídu CommunicationError # Načítání souboru: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class Chyba při připojování FocusConnectjava.net.SocketException: Žádný takový soubor nebo adresář # Výjimka zabezpečení: výstup: 0

Vytvořte si svůj zip soubor

Všimněte si, že jsou zobrazeny všechny třídy, které můj applet vytvořil. Chcete-li zabalit nejvýkonnější soubor zip, spusťte applet a vyberte všechny možné cesty kódu. Vezměte výstup zobrazený v konzole Java pro tento běh appletu a vytvořte soubor zip obsahující pouze tyto třídy. Tento seznam lze snadno upravovat - stačí jej vystřihnout z okna konzoly Java a vytvořit seznam použitých tříd.

Zobrazit podrobnosti načtených appletů s „D“

Příkaz klávesnice „D“ není součástí ladění výkonu, ale zde jej popisuji, protože není nikde zdokumentován.

Následuje výstup ukázkové relace po stisknutí klávesy „D“. Stisknutím této klávesy jsem prozkoumal parametry, které byly v souboru HTML. Tyto informace lze získat také prohlížením zdroje HTML.

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

codebaseURL = soubor: / E | / Debugger 10-06-96 / Debugger / status = likvidovat

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

šířka = 300

výška = 45

hspace = 0

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

vspace = 0

align = základní linie

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

code = DebuggerMain.class

Závěr

Prohlížeč Netscape Navigator může pomoci při vývoji vašeho appletu způsobem, jaký žádný jiný nástroj nedokáže. Žádná jiná metoda neshromažďuje diagnostiku skutečných běhových informací. Doufám, že tato technika pomůže komunitě Java při výrobě menších balíčků zip pro applety. Aby byl technologický model Java úspěšný, potřebujeme rychlost a grafickou funkčnost počítače s plným přístupem k datům na internetu a zabezpečením sálového počítače. Doufám, že ostatní najdou podobné techniky, které pomohou tomuto novému počítačovému modelu uspět.

Poznámka: Kredit musí být udělen Teodorovi Todorovovi, studentovi Cornell University a vynikajícímu programátorovi Java. Zjistil, že konzola Java přijímá příkazy klávesnice. Za příkazy v konzole Java v Netscape Communicator 4.0 bych rád poděkoval Aleši Omahenovi na „[email protected]“ za jejich první nalezení a Kevinovi Loweovi na „[email protected]“ také za jejich nalezení.

Peter Lenahan je technickým ředitelem společnosti Information Builders. V současné době pracuje s několika dalšími inženýry na podnikovém informačním balíčku Java.

Tento příběh „Tip Java 28: Zlepšete výkon stahování appletu pomocí konzoly Java Navigator“ původně publikoval JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found