Programmering

Java Tips 28: Forbedre appletens nedlastingsytelse ved hjelp av Navigators Java-konsoll

Du har sannsynligvis allerede lest om å pakke appleten din ved hjelp av zip-filer for å forbedre nedlastingsytelsen i Netscape Navigator (se Java Tips 21: Bruk arkivfiler for å øke hastigheten på innlasting av applet). Men i visse situasjoner kan bruk av zip-filer for applets føre til ytelsesproblemer.

La oss for eksempel si at en verktøyleverandør har opprettet en generell pakke som inneholder en rekke funksjoner - hvorav mange du sannsynligvis ikke vil bruke. Å inkludere alle disse klassene i zip-filen din vil føre til at den raskt vokser fra noen få kilobyte til hundrevis av kilobyte eller mer, og dermed negerer grunnen til å bruke en zip-fil i utgangspunktet.

Det er en løsning på dette problemet. Selv om det ikke er dokumentert, inneholder Netscape Navigator-nettleseren en Java-konsoll (under Alternativer-menyen). Når denne konsollen er åpen, vises meldinger som er skrevet til System.out.println uansett hva Java-appletter kjører i nettleseren din.

Hva moren din ikke fortalte deg om Java-konsollen

Det som ikke er åpenbart for brukerne er at Java-konsollen godtar tastaturkommandoer. Det er 10 feilsøkingsnivåer (slik meldingen vises i nettleseren merker dem) og 3 andre tastaturkommandoer i Navigator 3.0. Ved å trykke på tastene 0, 1, 2, ..., 9 stilles informasjonen om feilsøkingsnivået som den virtuelle maskinen skal vises. Trykk på tastene D, F og G vil føre til andre handlinger, som beskrevet nedenfor. I Netscape Communicator 4.0 har flere kommandoer blitt lagt til, inkludert en hjelpekommando som beskriver nøklene som er gyldige som kommandoer. Hvis du trykker på "h" -tasten, får du dokumentasjon for de nye kommandoene.

Dette tipset presenterer alt jeg vet om bruk av tastaturkommandoer i Java-konsollen: Jeg har ikke klart å finne noen dokumentasjon om det. Kanskje mine funn vil oppmuntre noen i Netscape til å dokumentere feilsøkingsnivåene og de tre andre tastaturkommandoene.

Kjenn deg rundt tastaturkommandoene

Følgende er en beskrivelse av D, F og G tastetrykk handlingene:

  • Tastetrykket "D" får Java-konsollen til å vise informasjon om alle applets som er lastet inn av den virtuelle maskinen i den nåværende Netscape-økten. Flere kopier av Netscape-nettleseren som er åpne samtidig, deler samme Java-konsoll.

  • "F" tastetrykk forårsaker Fullfør klausuler om kasserte, men ikke søppelinnsamlede, hukommelser som skal kjøres - i det minste tror jeg dette er hva som skjer, ettersom det finnes en egen nøkkel for søppelinnsamling.

  • "G" tastetrykk forårsaker Runtime.gc () søppeloppsamler å kjøre. Jeg har spilt litt med søppeloppsamleren, og jeg tror det må ringes mange til det for å rydde opp i minnet. Å minimere tiden det tar å ringe søppeloppsamleren er fornuftig fordi gjenstander er knyttet til andre gjenstander. Hvis søppeloppsamleren bare kobler fra gjenstander i endene av et annet objekt hver gang, kan den gå trinnvis gjennom haugen. Dette betyr at søppeloppsamleren ikke bruker mye verdifull tid på hvert trinn, men bruker mange små biter av tid når CPUen ellers ville være ubrukt.

Her er utdataene som vises i Java-konsollvinduet når hver av tastene beskrevet ovenfor trykkes. En copyright-melding fra nettleseren går foran tastaturkommandoutgangen: "AppAccelerator (tm) 1.0.2a for Java, x86-versjon. Copyright (c) 1996 Borland International. Alle rettigheter forbeholdt."

# Feilsøkingsnivå for applet satt til 0 # Feilsøkingsnivå for applet satt til 1 # Feilsøkingsnivå for applet satt til 2 # Feilsøkingsnivå for applet satt til 3 # Feilsøkingsnivå for applet satt til 4 # Feilsøkingsnivå for applet satt til 5 # Feilsøkingsnivå for applet satt til 6 # Applet feilsøkingsnivå satt til 7 # Applet feilsøkingsnivå satt til 8 # Applet feilsøkingsnivå satt til 9 # Utfører finalisering ... # Utfører en søppelsamling ... 

En sjekkliste over handlinger du kan ta for å oppleve det som er beskrevet i dette tipset, er inkludert nedenfor.

  1. Start din Java-aktiverte Netscape Navigator.

  2. Åpne Java-konsollen fra alternativmenyen.

  3. Museklikk på Java-konsollen.

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

  5. Meldingen "# Applet debug level set to 9" vises.

  6. Gå tilbake til nettleservinduet.

  7. Last inn en URL som inneholder en Java-applet.

  8. Se Java-konsollen vise detaljene i appleten fra klasselasterne, da .class-, .gif-, .jpg- og .zip-filer ligger og lastes inn.

Følgende eksempel er et eksempel på utdata som ble vist av Java-konsollen da jeg lastet inn en applet. Jeg trykket på 9-tasten og meldingen "# Applet debug level set to 9" ble vist i Java-konsollen.

# Feilsøkingsnivå for applet satt 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øyde = 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 # Finn klasse DebuggerMain # Henter fil: / E | / Debugger 10-06-96 / Debugger / DebuggerMain.class # Finn klasse FocComm # Henter fil: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Finn klasse OpenFileThread # Henter fil: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Applet unntak: unntak: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

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

på java.lang.Thread.run (kompilert kode) # Finn klasse ConnectDialog # Henter fil: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Finn klasse StreamListener # Henter fil: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Finn klasse InputLinkedList # Henter fil: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Finn klasse CommunicationError # Henter fil: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class Feil ved tilkobling av FocusConnectjava.net.SocketException: Ingen slik fil eller katalog # Security Exception: exit: 0

Bygg din zip-fil

Legg merke til at alle klassene som min applet instantierte vises. For å pakke den best ytende zip-filen, kjør appleten din og velg alle mulige kodestier. Ta utdataene som vises fra Java-konsollen for den kjøringen av appleten, og bygg zip-filen som bare inneholder disse klassene. Denne listen kan enkelt redigeres - bare kutt den ut av Java-konsollvinduet for å lage en liste over brukte klasser.

Vis detaljer for ladede applets med "D"

"D" -tastaturkommandoen er ikke en del av ytelsesjusteringen, men jeg dekker den her fordi den ikke er dokumentert hvor som helst.

Følgende er resultatet av en prøvesesjon som oppstår etter å ha trykket på "D" -tasten. Jeg trykket på denne tasten for å undersøke parametrene som var på HTML-filen. Denne informasjonen kan også fås ved å vise 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 = file: / E | / Debugger 10-06-96 / Debugger / status = disponere

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

bredde = 300

høyde = 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

Konklusjon

Netscape Navigator-nettleseren kan hjelpe deg med utviklingen av appleten din på en måte som ingen andre verktøy kan. Ingen andre metoder samler inn diagnosen av faktisk kjøretidsinformasjon. Jeg håper denne teknikken hjelper Java-samfunnet til å produsere mindre zip-pakker for applets. For at Java-teknologimodellen skal lykkes, trenger vi PC-ens hastighet og grafiske funksjonalitet, med full datatilgang på Internett og sikkerheten til hovedrammen. Jeg håper andre vil finne lignende teknikker for å hjelpe denne nye datamodellen til å lykkes.

Merk: Kreditt må gis til Teodor Todorov, en student ved Cornell University og en utmerket Java-programmerer. Han oppdaget at Java-konsollen godtar tastaturkommandoer. For kommandoene i Java-konsollen i Netscape Communicator 4.0, vil jeg takke Ales Omahen på "[email protected]" for først å finne dem og Kevin Lowe på "[email protected]" også for å finne dem.

Peter Lenahan er teknisk direktør i Information Builders. Han jobber for tiden sammen med flere andre ingeniører om en Java-firmainformasjonspakke.

Denne historien, "Java Tips 28: Improve your applet's download performance by Navigator's Java console" ble opprinnelig utgitt av JavaWorld.

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