Programmering

Java Tip 28: Forbedr din applets downloadydelse ved hjælp af Navigators Java-konsol

Du har sandsynligvis allerede læst om emballering af din applet ved hjælp af zip-filer for at forbedre downloadydelsen i Netscape Navigator (se Java Tip 21: Brug arkivfiler til at fremskynde appletindlæsning). Men i visse situationer kan brug af zip-filer til applets føre til ydeevneproblemer.

Lad os for eksempel sige, at en værktøjsleverandør har oprettet en generel pakke, der indeholder en række funktioner - hvoraf mange sandsynligvis ikke bruger. Hvis du inkluderer alle disse klasser i din zip-fil, vokser den hurtigt fra nogle få kilobyte til hundreder kilobyte eller mere, hvilket negerer grunden til at bruge en zip-fil i første omgang.

Der er en løsning på dette problem. Selvom det ikke er dokumenteret, indeholder Netscape Navigator-browseren en Java-konsol (under menuen Indstillinger). Når denne konsol er åben, vises meddelelser, der er skrevet til System.out.println uanset hvad Java-applets tilfældigvis kører i din browser.

Hvad din mor ikke fortalte dig om Java-konsollen

Hvad der ikke er indlysende for brugerne er, at Java-konsollen accepterer tastaturkommandoer. Der er 10 fejlfindingsniveauer (som meddelelsen, der vises i browseren mærker dem) og 3 andre tastaturkommandoer i Navigator 3.0. Ved at trykke på tasterne 0, 1, 2, ..., 9 indstilles de oplysninger om fejlretningsniveau, som den virtuelle maskine skal vise. Et tryk på tasterne D, F og G vil forårsage andre handlinger som beskrevet nedenfor. I Netscape Communicator 4.0 er der tilføjet flere kommandoer, herunder en hjælpekommando, der beskriver de nøgler, der er gyldige som kommandoer. Hvis du trykker på "h" -tasten, får du dokumentation for de nye kommandoer.

Dette tip præsenterer alt, hvad jeg ved om brug af tastaturkommandoer i Java-konsollen: Jeg har ikke været i stand til at finde nogen dokumentation om det. Måske vil mine fund opmuntre nogen i Netscape til at dokumentere fejlretningsniveauerne og de tre andre tastaturkommandoer.

Kend din vej rundt på tastaturkommandoerne

Følgende er en beskrivelse af D-, F- og G-tastetryk:

  • Tastetrykket "D" får Java-konsollen til at vise oplysninger om alle de applets, der er indlæst af den virtuelle maskine i den aktuelle Netscape-session. Flere kopier af Netscape-browseren, der er åbne på samme tid, deler den samme Java-konsol.

  • F-tastetrykket forårsager Afslut klausuler om kasseret, men alligevel ikke affaldsindsamlet, hukommelse, der skal køres - i det mindste tror jeg, det er, hvad der sker, da der findes en separat nøgle til affaldsindsamling.

  • "G" tastetryk forårsager Runtime.gc () skraldespand til at køre. Jeg har spillet lidt med affaldssamleren, og jeg tror, ​​at der skal foretages mange opkald for at rense hukommelsen. Det er fornuftigt at minimere den tid, det tager at ringe til affaldssamleren, fordi genstande er knyttet til andre objekter. Hvis affaldssamleren kun frakobler genstande i enderne af en anden genstand hver gang, kan den gå trinvis gennem bunken. Dette betyder, at affaldssamleren ikke bruger meget værdifuld tid på hvert trin, men bruger mange små klumper af tid, når CPU'en ellers ville være ubrugt.

Her er det output, der vises i Java-konsolvinduet, når der trykkes på hver af de ovenfor beskrevne taster. En copyrightbesked fra browseren går forud for tastaturkommandooutputtet: "AppAccelerator (tm) 1.0.2a til Java, x86-version. Copyright (c) 1996 Borland International. Alle rettigheder forbeholdes."

# Fejlfindingsniveau for applet sat til 0 # Fejlfindingsniveau for applet indstillet til 1 # Fejlfindingsniveau for applet indstillet til 2 # Fejlfindingsniveau for applet indstillet til 3 # Fejlfindingsniveau for applet indstillet til 4 # Fejlfindingsniveau for applet sat til 5 # Fejlfindingsniveau for applet sat til 6 # Applet-fejlfindingsniveau indstillet til 7 # Applet-fejlretningsniveau indstillet til 8 # Applet-fejlretningsniveau indstillet til 9 # Udfører finalisering ... # Udfører en affaldssamling ... 

En tjekliste over handlinger, du kan tage for at opleve, hvad der er beskrevet i dette tip, er inkluderet nedenfor.

  1. Start din Java-aktiverede Netscape Navigator.

  2. Åbn Java-konsollen fra menuen Option.

  3. Klik med musen på Java-konsollen.

  4. Tryk på "9" -tasten (ikke PF9-tasten)

  5. Meddelelsen "# Applet-fejlfindingsniveau indstillet til 9" vises.

  6. Gå tilbage til browservinduet.

  7. Indlæs en URL, der indeholder en Java-applet.

  8. Se Java-konsollen vise detaljerne i appleten fra klasselæsseren, da .class-, .gif-, .jpg- og .zip-filer findes og indlæses.

Følgende eksempel er et eksempel på output, der blev vist af Java-konsollen, da jeg indlæste en applet. Jeg trykkede på 9-tasten, og meddelelsen "# Applet debug level set to 9" blev vist i Java-konsollen.

# Debug-niveau for applet sat til 9 # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # total applets = 1 # Ny applet: 17930380 ved fil: / E | / Debugger 10-06- 96 / Debugger / bredde = 300 højde = 45 hspace = 0 arkiv = fil: /// 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 # Find klasse DebuggerMain # Henter fil: / E | / Debugger 10-06-96 / Debugger /DebuggerMain.class # Find klasse FocComm # Hent fil: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Find klasse OpenFileThread # Hent fil: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Applet undtagelse: undtagelse: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

på netscape.applet.EmbeddedAppletFrame.run (kompileret kode)

på java.lang.Thread.run (kompileret kode) # Find klasse ConnectDialog # Hent fil: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Find klasse StreamListener # Hent fil: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Find klasse InputLinkedList # Henter fil: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Find klasse CommunicationError # Henter fil: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class Fejl ved tilslutning af FocusConnectjava.net.SocketException: Ingen sådan fil eller katalog # Sikkerhedsundtagelse: exit: 0

Byg din zip-fil

Bemærk, at alle de klasser, som min applet instantierede, vises. For at pakke den bedst mulige zip-fil skal du køre din applet og vælge alle de mulige kodestier. Tag det output, der vises fra Java-konsollen til den kørsel af appleten, og opbyg zip-filen, der kun indeholder disse klasser. Denne liste kan let redigeres - bare klip den ud af Java-konsolvinduet for at oprette en liste over brugte klasser.

Vis detaljer for indlæste applets med "D"

"D" -tastaturkommandoen er ikke en del af performance-tuning, men jeg dækker det her, fordi det ikke er dokumenteret nogen steder.

Følgende er output fra en prøvesession, der forekommer efter tryk på "D" -tasten. Jeg trykkede på denne tast for at undersøge de parametre, der var på HTML-filen. Disse oplysninger kunne også fås ved at se HTML-kilden.

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 = fil: / E | / Debugger 10-06-96 / Debugger / status = bortskaff

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

bredde = 300

højde = 45

hspace = 0

arkiv = fil: /// E | / Debugger 10-06-96 / Debugger /

vspace = 0

align = baseline

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

kode = DebuggerMain.class

Konklusion

Netscape Navigator-browseren kan hjælpe med at udvikle din applet på en måde, som intet andet værktøj kan. Ingen anden metode indsamler diagnosticering af faktisk kørselsinformation. Jeg håber, at denne teknik hjælper Java-samfundet med at producere mindre zip-pakker til applets. For at Java-teknologimodellen skal lykkes, har vi brug for pc'ens hastighed og grafiske funktionalitet med fuld dataadgang på Internettet og sikkerheden på mainframe. Jeg håber andre vil finde lignende teknikker til at hjælpe denne nye computermodel med at få succes.

Bemærk: Der skal gives kredit til Teodor Todorov, en studerende ved Cornell University og en fremragende Java-programmør. Han opdagede, at Java-konsollen accepterer tastaturkommandoer. For kommandoerne i Java-konsollen i Netscape Communicator 4.0 vil jeg takke Ales Omahen på "[email protected]" for først at finde dem og Kevin Lowe på "[email protected]" også for at finde dem.

Peter Lenahan er teknisk direktør hos Information Builders. Han arbejder i øjeblikket med flere andre ingeniører på en Java-virksomhedsinformationspakke.

Denne historie, "Java Tip 28: Forbedre din applets download-ydeevne ved hjælp af Navigators Java-konsol" blev oprindeligt udgivet af JavaWorld.