Programavimas

„Java“ patarimas 28: pagerinkite savo programėlės atsisiuntimo našumą naudodami „Navigator“ „Java“ konsolę

Tikriausiai jau skaitėte apie programėlės pakavimą naudojant ZIP failus, kad pagerintumėte atsisiuntimo našumą „Netscape Navigator“ (žr. „Java“ patarimas 21: Naudokite archyvinius failus, kad paspartintumėte programėlių įkėlimą). Tačiau tam tikrose situacijose naudojant zip failus programėlėms gali kilti našumo problemų.

Pavyzdžiui, tarkime, kad įrankių pardavėjas sukūrė bendrą paketą, kuriame yra daugybė funkcijų - kurių daugelio greičiausiai nenaudosite. Įtraukus visas šias klases į ZIP failą, jis greitai išaugs nuo kelių kilobaitų iki šimtų ar daugiau kilobaitų, taigi bus paneigta priežastis, kodėl pirmiausia reikia naudoti ZIP failą.

Yra šios problemos sprendimas. Nors „Netscape Navigator“ naršyklėje nėra dokumentų, joje yra „Java“ konsolė (meniu Parinktys). Kai ši konsolė yra atidaryta, pasirodo pranešimai, į kuriuos rašoma System.out.println iš bet kokių „Java“ programėlių, veikiančių jūsų naršyklėje.

Ko mama nepasakė apie „Java“ pultą

Vartotojams nėra akivaizdu, kad „Java“ konsolė priima klaviatūros komandas. „Navigator 3.0“ yra 10 derinimo „lygių“ (nes juos pažymi naršyklės rodomas pranešimas) ir dar 3 klaviatūros komandos. Paspaudus klavišus 0, 1, 2, ..., 9 nustatoma derinimo lygio informacija, kurią rodys virtuali mašina. Paspaudus klavišus D, F ir G, bus atlikti kiti veiksmai, kaip aprašyta toliau. „Netscape Communicator 4.0“ buvo pridėtos dar kelios komandos, įskaitant pagalbos komandą, apibūdinančią raktus, kurie galioja kaip komandos. Paspaudę klavišą „h“, gausite naujų komandų dokumentus.

Šis patarimas pateikia viską, ką žinau apie klaviatūros komandų naudojimą „Java“ konsolėje: man nepavyko rasti jokios dokumentacijos apie tai. Galbūt mano išvados paskatins ką nors iš „Netscape“ dokumentuoti derinimo lygius ir tris kitas klaviatūros komandas.

Žinokite apie klaviatūros komandas

Toliau aprašomi klavišų D, F ir G veiksmai:

  • „D“ klavišo paspaudimu „Java“ konsolė rodo informaciją apie visas programas, kurias virtuali mašina įkėlė per dabartinę „Netscape“ sesiją. Kelios tuo pačiu metu atidarytos „Netscape“ naršyklės kopijos naudoja tą pačią „Java“ konsolę.

  • "F" klavišo paspaudimas sukelia Baigti išmetamo, tačiau ne šiukšlių surinkto, atminties, kurią reikia paleisti, sąlygos - bent jau aš manau, kad taip nutinka, nes šiukšlių surinkimui yra atskiras raktas.

  • "G" klavišo paspaudimas sukelia „Runtime.gc“ () šiukšlių surinkėjas bėgti. Aš šiek tiek žaidžiau su šiukšlių surinkėju ir manau, kad norint išvalyti atmintį reikia jam skambinti daug. Sumažinti laiką, per kurį iškviečiamas šiukšlių surinkėjas, yra prasminga, nes objektai yra susieti su kitais objektais. Jei šiukšlių surinkėjas kiekvieną kartą susieja objektus tik kito objekto galuose, jis gali žingsniuoti per krūvą etapais. Tai reiškia, kad šiukšlių surinkėjas neišleidžia daug brangaus laiko kiekviename etape, tačiau naudoja daugybę mažų laiko dalių, kai priešingu atveju procesorius būtų nenaudojamas.

Čia yra išvestis, rodoma „Java“ konsolės lange, kai paspaudžiami visi aukščiau aprašyti klavišai. Prieš klaviatūros komandos išvestį iš autorių teisių žinutės iš naršyklės: "AppAccelerator (tm) 1.0.2a for Java, x86 version. Copyright (c) 1996 Borland International. Visos teisės saugomos."

# Programos derinimo lygis nustatytas į 0 # Appleto derinimo lygis nustatytas į 1 # Appleto derinimo lygis nustatytas į 2 # Appleto derinimo lygis nustatytas į 3 # Appleto derinimo lygis nustatytas į 4 # Appleto derinimo lygis nustatytas į 5 # Appleto derinimo lygis nustatytas į 6 # Programos derinimo lygis nustatytas į 7 # Appleto derinimo lygis nustatytas į 8 # Appleto derinimo lygis nustatytas į 9 # Atliekamas užbaigimas ... # Atliekamas šiukšlių surinkimas ... 

Veiksmų, kuriuos galite atlikti norėdami sužinoti, kas aprašyta šiame patarime, kontrolinis sąrašas yra pateiktas žemiau.

  1. Paleiskite „Java“ palaikantį „Netscape Navigator“.

  2. Meniu Option atidarykite „Java“ konsolę.

  3. Pele spustelėkite „Java“ konsolę.

  4. Paspauskite klavišą „9“ (ne klavišą PF9)

  5. Parodomas pranešimas „# Applet derinimo lygis nustatytas į 9“.

  6. Grįžkite į naršyklės langą.

  7. Įkelkite URL, kuriame yra „Java“ programėlė.

  8. Žiūrėkite, kaip „Java“ pultas pateikia išsamią programėlės informaciją iš klasės krautuvo, kai yra .class, .gif, .jpg ir .zip failai.

Šis pavyzdys yra pavyzdinis išvestis, kurią „Java“ konsolė parodė, kai įkėliau programėlę. Paspaudžiau klavišą 9 ir „Java“ konsolėje buvo parodytas pranešimas „# Applet derinimo lygis nustatytas į 9“.

# Appleto derinimo lygis nustatytas į 9 # initApplet: contextID = 8 appletID = 17930380 parentContext = 11134828 frameContext = 11134828 # initApplet: appletID = 17930380 # total applets = 1 # Nauja programėlė: 17930380 faile: / E | / Debugger 10-06- 96 / derintuvas / plotis = 300 aukštis = 45 „hspace“ = 0 archyvas = failas: /// E | / derintuvas 10-06-96 / derintuvas / vspace = 0 lygiavimas = pagrindinė kodų bazė = failas: /// E | / derintuvas 10 -06-96 / Debugger / code = DebuggerMain.class # startApplet: contextID = 8 appletID = 17930380 newFrameMWContext = 11134828 # startApplet: appletID = 17930380 # Rasti klasę DebuggerMain # Gaunamas failas: / E | / Debugger 10-06-96 /DebuggerMain.class # Raskite klasę FocComm # Failo gavimas: / E | / Derintojas 10-06-96 / Debugger / FocComm.class # Raskite klasę OpenFileThread # Failo gavimas: / E | / Debugger 10-06-96 / Debugger / OpenFileThread .class # Appleto išimtis: išimtis: java.lang.ClassCastException: DebuggerMain java.lang.ClassCastException: DebuggerMain

adresu netscape.applet.EmbeddedAppletFrame.run (sudarytas kodas)

adresu java.lang.Thread.run (sudarytas kodas) # Raskite „ConnectDialog“ klasę # Failo gavimas: / E | / Derintojas 10-06-96 / Debugger / ConnectDialog.class # Raskite klasę „StreamListener“ # Gaunamas failas: / E | / Derintuvas 10 -06-96 / Debugger / StreamListener.class # Rasti klasę InputLinkedList # Gaunamas failas: / E | / Derintuvas 10-06-96 / Debugger / InputLinkedList.class # Rasti klasę CommunicationError # Gaunamas failas: / E | / Debugger 10-06 -96 / Debugger / CommunicationError.class klaida jungiantis „FocusConnectjava.net.SocketException“: tokio failo ar katalogo nėra # Saugumo išimtis: išėjimas: 0

Sukurkite savo ZIP failą

Atkreipkite dėmesį, kad rodomos visos klasės, kurias suaktyvino mano programėlė. Norėdami supakuoti geriausiai veikiantį ZIP failą, paleiskite programėlę ir pasirinkite visus galimus kodo kelius. Paimkite iš „Java“ konsolės rodomą išvestį tam programėlės paleidimui ir sukurkite ZIP failą, kuriame yra tik šios klasės. Šį sąrašą galima lengvai redaguoti - tiesiog iškirskite jį iš „Java“ konsolės lango, kad sukurtumėte naudotų klasių sąrašą.

Rodyti išsamią programėlių su „D“ informacija

„D“ klaviatūros komanda nėra našumo derinimo dalis, bet aš ją aptariu čia, nes ji niekur nėra dokumentuota.

Toliau pateikiama pavyzdinio seanso, įvykusio paspaudus klavišą „D“, išvestis. Paspaudžiau šį klavišą, norėdamas ištirti HTML failo parametrus. Šią informaciją taip pat galima gauti peržiūrint HTML šaltinį.

„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 = failas: / E | / derintuvas 10-06-96 / derintuvas / status = dispose

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

plotis = 300

aukštis = 45

hspace = 0

archyvas = failas: /// E | / derintuvas 10-06-96 / derintuvas /

vspace = 0

sulyginti = bazinė linija

codebase = failas: /// E | / Derintojas 10-06-96 / Debugger /

kodas = DebuggerMain.class

Išvada

„Netscape Navigator“ naršyklė gali padėti plėtoti jūsų programėlę taip, kaip negali jokia kita priemonė. Joks kitas metodas nerenka faktinės vykdymo laiko informacijos diagnostikos. Tikiuosi, kad ši technika padeda „Java“ bendruomenei gaminti mažesnius programėlių paketus. Norint, kad „Java“ technologijos modelis būtų sėkmingas, mums reikia kompiuterio greičio ir grafinio funkcionalumo, užtikrinant visišką interneto prieigą ir pagrindinio kompiuterio saugumą. Tikiuosi, kad kiti ras panašių būdų, kaip padėti šiam naujam kompiuterio modeliui pasisekti.

Pastaba: Kreditas turi būti suteiktas Teodorui Todorovui, Kornelio universiteto studentui ir puikiam „Java“ programuotojui. Jis atrado, kad „Java“ konsolė priima klaviatūros komandas. Už komandas „Netscape Communicator 4.0“ „Java“ konsolėje norėčiau padėkoti Ales Omahen, adresu „[email protected]“ už tai, kad pirmą kartą jas surado, ir Kevinui Lowe adresu „[email protected]“.

Peteris Lenahanas yra „Information Builders“ techninis direktorius. Šiuo metu jis dirba su keliais kitais inžinieriais kurdamas „Java“ korporatyvinės informacijos paketą.

Šią istoriją „Java 28 patarimas: pagerinkite savo programėlės atsisiuntimo našumą naudodami„ Navigator “„ Java “konsolę“ iš pradžių paskelbė „JavaWorld“.