Java savjet 28: Poboljšajte izvedbu preuzimanja apleta pomoću Java konzole Navigatora

Vjerojatno ste već čitali o pakiranju apleta pomoću zip datoteka radi poboljšanja izvedbe preuzimanja u Netscape Navigatoru (pogledajte Java Savjet 21: Upotrijebite arhivske datoteke za ubrzanje učitavanja apleta). No, u određenim situacijama upotreba zip datoteka za aplete može dovesti do problema s performansama.

Na primjer, recimo da je prodavač alata stvorio opći paket koji uključuje brojne značajke - od kojih mnoge vjerojatno nećete koristiti. Uključivanje svih ovih klasa u vašu zip datoteku učinit će da ona brzo naraste s nekoliko kilobajta na stotine kilobajta ili više, čime se u prvom redu negira razlog upotrebe zip datoteke.

Za ovaj problem postoji rješenje. Iako nema dokumenata, preglednik Netscape Navigator sadrži Java konzolu (u izborniku Opcije). Kad je ova konzola otvorena, pojavljuju se poruke u koje se upisuje System.out.printlns bilo kojeg Java apleta koji se izvodi u vašem pregledniku.

Ono što vam majka nije rekla o Java konzoli

Korisnicima nije očito da Java konzola prihvaća naredbe s tipkovnice. U Navigatoru 3.0 postoji 10 "razina za uklanjanje pogrešaka" (kako ih prikazuje poruka u pregledniku) i 3 druge naredbe na tipkovnici. Pritiskom na tipke 0, 1, 2, ..., 9 postavlja se informacija na razini otklanjanja pogrešaka koju će virtualni stroj prikazati. Pritisak tipki D, F i G uzrokovat će druge radnje, kao što je opisano u nastavku. U Netscape Communicator 4.0 dodano je još nekoliko naredbi, uključujući naredbu za pomoć koja opisuje tipke koje vrijede kao naredbe. Ako pritisnete tipku "h", dobit ćete dokumentaciju za nove naredbe.

Ovaj savjet predstavlja sve što znam o korištenju naredbi s tipkovnice na Java konzoli: Nisam uspio pronaći nikakvu dokumentaciju o tome. Možda će moja otkrića potaknuti nekoga u Netscapeu da dokumentira razine otklanjanja pogrešaka i tri druge naredbe na tipkovnici.

Upoznajte se s naredbama na tipkovnici

Slijedi opis radnji pritiskanja tipki D, F i G:

  • Pritisak tipke "D" uzrokuje da Java konzola prikazuje informacije o svim apletima koje je virtualni stroj učitao u trenutnoj Netscape sesiji. Više otvorenih istodobno otvorenih kopija preglednika Netscape dijeli istu Java konzolu.

  • Pritisak tipke "F" uzrokuje pokretanje Finalizeklauzula odbačene, ali ne i prikupljene smeće - barem mislim da se to događa, jer za odvoz smeća postoji zasebni ključ.

  • Pritisak tipke "G" uzrokuje pokretanje Runtime.gc()sakupljača smeća. Malo sam se poigrao sa sakupljačem smeća i vjerujem da mu se moraju uputiti mnogi pozivi kako bi se očistila memorija. Smanjivanje vremena potrebno za pozivanje sakupljača smeća ima smisla jer su objekti povezani s drugim objektima. Ako sakupljač smeća svaki put samo odvoji objekte na krajevima drugog objekta, može korakom prolaziti kroz hrpu. To znači da sakupljač smeća ne troši puno dragocjenog vremena u svakoj fazi, ali koristi mnogo malih dijelova vremena kada CPU inače ne bi bio iskorišten.

Evo izlaza koji se prikazuje u prozoru Java konzole kada se pritisne svaka od gore opisanih tipki. Poruka o autorskim pravima iz preglednika prethodi izlazu naredbe na tipkovnici: "AppAccelerator (tm) 1.0.2a za Javu, verzija x86. Copyright (c) 1996 Borland International. Sva prava pridržana."

# Razina otklanjanja pogrešaka u apletu postavljena na 0 # Razina otklanjanja pogrešaka u apletu postavljena na 1 # Razina otklanjanja pogrešaka u apletu postavljena na 3 # Razina otklanjanja pogrešaka u apletu postavljena na 3 # Razina otklanjanja pogrešaka u apletu postavljena na 5 # Razina otklanjanja pogrešaka u apletu postavljena na 6 # Razina otklanjanja pogrešaka u apletu postavljena na 7 # Razina otklanjanja pogrešaka u apletu postavljena na 8 # Razina otklanjanja pogrešaka u apletu postavljena na 9 # Izvođenje finalizacije ... # Izvođenje sakupljanja smeća ... 

Kontrolni popis radnji koje možete poduzeti da biste iskusili opisano u ovom savjetu nalazi se u nastavku.

  1. Pokrenite svoj Netscape Navigator s omogućenom Javom.

  2. Otvorite Java konzolu s izbornika Option.

  3. Kliknite mišem na Java konzolu.

  4. Pritisnite tipku "9" (ne tipku PF9)

  5. Pojavljuje se poruka "# Razina otklanjanja pogrešaka u apletu postavljena na 9".

  6. Vratite se na prozor preglednika.

  7. Učitajte URL koji sadrži Java aplet.

  8. Gledajte kako Java konzola prikazuje detalje apleta iz učitavača klase kako se nalaze i učitavaju datoteke .class, .gif, .jpg i .zip.

Sljedeći je primjer uzorak izlaza koji je Java konzola prikazala kad sam učitao aplet. Pritisnuo sam tipku 9 i na Java konzoli prikazala se poruka "# Razina uklanjanja pogrešaka u apletu postavljena na 9".

# Razina ispravljanja programskih pogrešaka postavljena na 9 # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # total applets = 1 # Novi aplet: 17930380 u datoteci: / E | / Debugger 10-06- 96 / program za ispravljanje pogrešaka / širina = 300 visina = 45 hspace = 0 arhiva = datoteka: /// E | / program za ispravljanje pogrešaka 10-06-96 / program za ispravljanje pogrešaka / vspace = 0 align = basebase baseline = datoteka: /// E | / program za uklanjanje pogrešaka 10 -06-96 / Debugger / code = DebuggerMain.class # startApplet: contextID = 8 appletID = 17930380 newFrameMWContext = 11134828 # startApplet: appletID = 17930380 # Pronađi klasu DebuggerMain # Dohvaćanje datoteke: / E | / Debugger 10-06-96 / Debugger 10-06-96 / Debugger 10-06-96 / Debugger 10-06-96 / Debugger /DebuggerMain.class # Pronađi klasu FocComm # Dohvaćanje datoteke: / E | / Debugger 10-06-96 / Debugger / FocComm.class # Pronađi klasu OpenFileThread # Dohvaćanje datoteke: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Applet iznimka: iznimka: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

na netscape.applet.EmbeddedAppletFrame.run (kompajlirani kôd)

na java.lang.Thread.run (prevedeni kôd) # Pronađi klasu ConnectDialog # Dohvaćanje datoteke: / E | / Debugger 10-06-96 / Debugger / ConnectDialog.class # Pronađi klasu StreamListener # Dohvaćanje datoteke: / E | / Debugger 10 -06-96 / Debugger / StreamListener.class # Pronađi klasu InputLinkedList # Dohvaćanje datoteke: / E | / Debugger 10-06-96 / Debugger / InputLinkedList.class # Pronađi klasu CommunicationError # Dohvaćanje datoteke: / E | / Debugger 10-06 -96 / Pogreška debagera / CommunicationError.class pri povezivanju FocusConnectjava.net.SocketException: Nema takve datoteke ili direktorija # Iznimka sigurnosti: izlaz: 0

Izradite svoju zip datoteku

Primijetite da su prikazane sve klase koje je instancirao moj aplet. Da biste zapakirali zip datoteku s najboljim performansama, pokrenite svoj aplet i odaberite sve moguće putove koda. Uzmite izlaz prikazan s Java konzole za to izvođenje apleta i izradite zip datoteku koja sadrži samo ove klase. Ovaj se popis može lako uređivati ​​- samo ga izrežite iz prozora Java konzole da biste stvorili popis korištenih klasa.

Prikaži detalje učitanih apleta s "D"

Naredba tipkovnice "D" nije dio podešavanja izvedbe, ali ovdje je pokrivam jer nigdje nije dokumentirana.

Slijedi izlaz uzorka sesije koji se događa nakon pritiska tipke "D". Pritisnuo sam ovu tipku kako bih ispitao parametre koji se nalaze u HTML datoteci. Te se informacije mogu dobiti i pregledavanjem HTML izvora.

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=dispose

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

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

Conclusion

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.

Napomena: Zaslugu treba dati Teodoru Todorovu, studentu Sveučilišta Cornell i izvrsnom programeru Java. Otkrio je da Java konzola prihvaća naredbe tipkovnice. Za naredbe u Java konzoli u Netscape Communicatoru 4.0, želim zahvaliti Alešu Omahenu na "[email protected]" što ih je prvo pronašao i Kevinu Loweu na "[email protected]", također na tome što ih je pronašao.

Peter Lenahan tehnički je direktor tvrtke Information Builders. Trenutno surađuje s nekoliko drugih inženjera na Java korporativnom informacijskom paketu.

Ovu priču, "Java savjet 28: Poboljšajte izvedbu preuzimanja vašeg apleta pomoću Navigatorove Java konzole", izvorno je objavio JavaWorld.