Programovanie

Tip Java 28: Zlepšite výkon sťahovania vášho appletu pomocou konzoly Java Navigator

Pravdepodobne ste už čítali o balení vášho appletu pomocou súborov zip na zlepšenie výkonu sťahovania v aplikácii Netscape Navigator (pozri Java Tip 21: Na urýchlenie načítania appletu použite archívne súbory). V určitých situáciách však použitie súborov zip pre applety môže viesť k problémom s výkonom.

Povedzme napríklad, že dodávateľ nástrojov vytvoril všeobecný balík, ktorý obsahuje množstvo funkcií - z ktorých mnohé pravdepodobne nebudete používať. Zahrnutie všetkých týchto tried do súboru zip spôsobí jeho rýchly nárast z niekoľkých kilobajtov na stovky kilobajtov alebo viac, čím sa v prvom rade zruší dôvod na použitie súboru zip.

Tento problém má riešenie. Prehliadač Netscape Navigator, hoci nie je doložený, obsahuje konzolu Java (v ponuke Možnosti). Keď je táto konzola otvorená, zobrazia sa správy, do ktorých sa zapisuje System.out.println z ktoréhokoľvek appletu Java, ktorý je vo vašom prehliadači spustený.

Čo ti mama nepovedala o konzole Java

Užívateľom nie je zrejmé, že konzola Java prijíma klávesové príkazy. V aplikácii Navigator 3.0 je 10 ladiacich „úrovní“ (ako ich zobrazuje správa, ktorú prehliadač označuje) a 3 ďalšie klávesové príkazy. Stlačením klávesov 0, 1, 2, ..., 9 nastavíte informácie na úrovni ladenia, ktoré bude virtuálny stroj zobrazovať. Stlačenie klávesov D, F a G spôsobí ďalšie činnosti, ako je popísané nižšie. V Netscape Communicator 4.0 bolo pridaných niekoľko ďalších príkazov, vrátane príkazu pomocníka popisujúceho klávesy, ktoré sú platné ako príkazy. Stlačením klávesu „h“ získate dokumentáciu k novým príkazom.

Tento tip predstavuje všetko, čo viem o používaní klávesových príkazov v konzole Java: Nenašiel som o tom nijakú dokumentáciu. Možno moje zistenia niekoho v Netscape povzbudia, aby zdokumentoval úrovne ladenia a ďalšie tri klávesové príkazy.

Ovládajte príkazy z klávesnice

Nasleduje popis akcií klávesových skratiek D, F a G:

  • Stlačenie klávesu „D“ spôsobí, že konzola Java zobrazí informácie o všetkých appletoch načítaných virtuálnym strojom v aktuálnej relácii Netscape. Viaceré kópie prehľadávača Netscape, ktoré sú otvorené súčasne, zdieľajú rovnakú konzolu Java.

  • Stlačenie klávesu „F“ spôsobí Dokončiť klauzuly vyradenej, zatiaľ nezhromaždenej pamäte, ktorá sa má spustiť - aspoň si myslím, že sa tak deje, pretože pre zber smetí existuje samostatný kľúč.

  • Stlačenie klávesu "G" spôsobí Runtime.gc () smetiar bežať. Trochu som sa pohral so smetiarom a myslím si, že je potrebné na neho veľa volať, aby sa vyčistila pamäť. Minimalizácia času potrebného na volanie smetiara má zmysel, pretože objekty sú prepojené s inými objektmi. Ak nástroj na odstraňovanie odpadu zakaždým odpojí iba objekty na koncoch iného objektu, môže haldu postupne prechádzať po etapách. To znamená, že zberač odpadu netrávi veľa drahocenného času v každej fáze, ale využíva veľa malých časových úsekov, keď by procesor inak nebol k dispozícii.

Tu je výstup, ktorý sa zobrazí v okne konzoly Java po stlačení každej z klávesov opísaných vyššie. Správa s autorskými právami z prehliadača predchádza výstupu príkazu z klávesnice: „AppAccelerator (tm) 1.0.2a pre Java, verzia x86. Copyright (c) 1996 Borland International. Všetky práva vyhradené.“

# Úroveň ladenia appletu nastavená na 0 # Úroveň ladenia appletu nastavená na 1 # Úroveň ladenia appletu nastavená na 2 # Úroveň ladenia appletu nastavená na 3 # Úroveň ladenia appletu nastavená na 4 # Úroveň ladenia appletu nastavená na 5 # Úroveň ladenia appletu nastavená na 6 # Úroveň ladenia appletu nastavená na 7 # Úroveň ladenia appletu nastavená na 8 # Úroveň ladenia appletu nastavená na 9 # Vykonáva sa finalizácia ... # Vykonáva sa zbierka odpadu ... 

Nižšie je uvedený kontrolný zoznam akcií, ktoré môžete podniknúť, aby ste zistili, čo je popísané v tomto tipe.

  1. Spustite program Netscape Navigator s podporou Java.

  2. Otvorte konzolu Java z ponuky Možnosti.

  3. Kliknite myšou na konzolu Java.

  4. Stlačte kláves „9“ (nie klávesa PF9)

  5. Zobrazí sa správa „# Úroveň ladenia appletu nastavená na 9“.

  6. Vráťte sa späť do okna prehliadača.

  7. Vložte adresu URL, ktorá obsahuje applet Java.

  8. Sledujte, ako konzola Java zobrazuje podrobnosti appletu z nakladača tried, keď sa nachádzajú a načítajú súbory .class, .gif, .jpg a .zip.

Nasledujúci príklad je ukážkový výstup, ktorý sa zobrazil v konzole Java, keď som načítal applet. Stlačil som kláves 9 a v konzole Java sa zobrazila správa „# Applet debug level set to 9“.

# Úroveň ladenia appletu nastavená na 9 # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # celkový počet appletov = 1 # Nový applet: 17930380 v súbore: / 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 # Nájsť triedu DebuggerMain # Načítanie súboru: / E | / Debugger 10-06-96 /DebuggerMain.class # Nájsť triedu FocComm # Načítanie súboru: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Nájsť triedu OpenFileThread # Načítanie súboru: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Výnimka appletu: výnimka: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

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

na java.lang.Thread.run (kompilovaný kód) # Nájsť triedu ConnectDialog # Načítať súbor: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Nájsť triedu StreamListener # Načítať súbor: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Nájsť triedu InputLinkedList # Načítanie súboru: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Nájsť triedu CommunicationError # Načítanie súboru: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class Chyba pri pripájaní FocusConnectjava.net.SocketException: Žiadny takýto súbor alebo adresár # Výnimka zabezpečenia: výstup: 0

Vytvorte si svoj zip súbor

Všimnite si, že sú zobrazené všetky triedy, ktoré môj applet vytvoril. Ak chcete zabaliť najvýkonnejší súbor zip, spustite applet a vyberte všetky možné cesty kódu. Vezmite výstup zobrazený v konzole Java pre dané spustenie appletu a vytvorte súbor zip obsahujúci iba tieto triedy. Tento zoznam je možné ľahko upravovať - ​​stačí ho vystrihnúť z okna konzoly Java a vytvoriť zoznam použitých tried.

Zobraziť podrobnosti načítaných appletov pomocou „D“

Príkaz klávesnice „D“ nie je súčasťou ladenia výkonu, ale uvádzam ho tu, pretože nie je nikde zdokumentovaný.

Nasleduje výstup ukážkovej relácie, ku ktorej dôjde po stlačení klávesu „D“. Stlačil som túto klávesu, aby som preskúmal parametre, ktoré boli v súbore HTML. Tieto informácie je možné získať aj zobrazením zdroja 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 = súbor: / E | / Debugger 10-06-96 / Debugger / status = vyradiť

obslužný program = vlákno [vlákno-1,5, applet-DebuggerMain.class]

šírka = 300

výška = 45

hspace = 0

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

vspace = 0

align = základná čiara

codebase = súbor: /// E | / Debugger 10-06-96 / Debugger /

kód = DebuggerMain.class

Záver

Prehliadač Netscape Navigator môže pomôcť pri vývoji vášho appletu tak, ako to nedokáže žiadny iný nástroj. Žiadna iná metóda nezhromažďuje diagnostiku skutočných runtime informácií. Dúfam, že táto technika pomôže komunite Java pri výrobe menších balíkov zip pre applety. Aby bol technologický model Java úspešný, potrebujeme rýchlosť a grafickú funkčnosť počítača s úplným prístupom k dátam z internetu a bezpečnosťou sálového počítača. Dúfam, že ostatní nájdu podobné techniky, ktoré pomôžu tomuto novému počítačovému modelu uspieť.

Poznámka: Poďakovanie musí byť udelené Teodorovi Todorovovi, študentovi Cornell University a vynikajúcemu programátorovi Java. Zistil, že konzola Java prijíma príkazy klávesnice. Za príkazy v konzole Java v aplikácii Netscape Communicator 4.0 by som chcel poďakovať Alešovi Omahenovi na adrese „[email protected]“ za ich prvé nájdenie a Kevinovi Loweovi na adrese „[email protected]“ tiež za ich nájdenie.

Peter Lenahan je technický riaditeľ v spoločnosti Information Builders. V súčasnosti spolupracuje s niekoľkými ďalšími inžiniermi na balíku podnikových informácií pre Java.

Tento príbeh, „Tip Java 28: Zlepšite výkonnosť sťahovania vášho appletu pomocou konzoly Java Navigator“, bol pôvodne publikovaný spoločnosťou JavaWorld.

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