Specializovan² t²denφk o v²poΦetnφ technice
o Internetu (CW 16/97)
JAVA a ti druzφ
Jak vypadß budoucnost interaktivnφho Internetu
Bed°ich Smetana
Internet je jednφm z nejv∞tÜφch po₧φraΦ∙ lidskΘho Φasu po celΘm sv∞t∞, je to jedna z oblastφ, okolo kterΘ se toΦφ nejvφce pen∞z a je to takΘ jedna z nej₧ßdan∞jÜφch slu₧eb -- a proto se nenφ co divit, ₧e tΘm∞° ka₧d², kdo mß ambice "jφt s dobou", se o n∞j zajφmß.
Aby vÜak byl Internet pou₧iteln² i pro ty nejnßroΦn∞jÜφ aplikace, zejmΘna podnikovΘ, muselo b²t vytvo°eno mnoho dalÜφch standard∙, kterΘ majφ na starosti interakci jinak pasivnφho Webu s u₧ivatelem.
Jednou z nejlepÜφch mo₧nostφ k vybudovßnφ dokonalΘho webovΘho serveru je programovacφ jazyk Java -- a prßv∞ o n∞m bude pojednßvat toto tΘma.
┌vod do Interaktivnφho WWW
Slu₧ba World Wide Web je zalo₧ena na hypertextovΘm jazyce HTML. Ten ve svΘ zßkladnφ podob∞ umo₧nφ propojit prost°ednictvφm hypertextov²ch odkaz∙ r∙znß mφsta na stejnΘ strßnce, nebo se m∙₧e odkazovat i na jinou strßnku Φi jin² objekt.
V tΘto definici neexistuje obousm∞rnß komunikace mezi nßvÜt∞vnφkem WWW a serverem zprost°edkujφcφm data. Pro u₧ivatele je tento zp∙sob sice interaktivnφ (zobrazujφ se mu informace, kterΘ chce vid∞t on), ale rozhodn∞ ne obousm∞rn², nebo¥ server nem∙₧e reagovat na informace POSKYTNUT╔ UÄIVATELEM.
Od tΘ doby (a nenφ to tak dßvno -- v₧dy¥ i WWW je velmi mlad²), co se na WWW zaΦaly objevovat prvnφ nßznaky interaktivnφch aplikacφ (zejmΘna on-line cenφky, nßkup pomocφ kreditnφch karet, registrace u₧ivatele, kter² si stahuje testovacφ verzi softwaru atd.), se musel °eÜit zßsadnφ problΘm, jak se s novou situacφ vyrovnat. A proto₧e k WWW pat°φ neodmysliteln∞ UNIX, zaΦaly se aplikace °eÜit pomocφ bohatΘho skriptovΘho jazyka, kter²m ka₧dß mutace UNIXu disponuje. HTML standard byl p°izp∙soben tvorb∞ GUI objekt∙ (tlaΦφtka, pole, zaÜkrtßvacφ polφΦka) a byl vybaven schopnostφ URL k≤dovßnφ (p°ek≤dovßnφ vφce informacφ do URL adresy p°edßvanΘ serveru, kter² po dek≤dovßnφ zφskß informace takovΘ, jakΘ odeslal u₧ivatel).
Java a jφ podobnΘ programovacφ metody p°istupujφ k problematice trochu jinak. Uvnit° okna prohlφ₧eΦe (kter² toho pochopiteln∞ musφ b²t schopen -- nap°φklad takzvan² Java kompatibilnφ browser je uzp∙soben na provoz Java aplikacφ) si jazyk vytvo°φ svΘ vlastnφ okno (pracovnφ plochu), ve kterΘm potΘ obsluhuje veÜkerΘ pot°ebnΘ zßle₧itosti tak, jako nap°. program v operaΦnφm systΘmu. Pochopiteln∞ je mo₧nΘ p°edßvat appletu data i p°es webovskΘ rozhranφ -- ale o tom si povφme a₧ pozd∞ji.
DalÜφ z metod zastupuje programovacφ jazyk JavaScript, kter² je sice rovn∞₧ emulovßn prohlφ₧eΦem, ale jeho zdrojov² k≤d je psßn p°φmo do v²pisu HTML strßnky. Je takΘ podstatn∞ jednoduÜÜφ a vzhledem k tomu, ₧e je orientovßn klientsky, neumo₧≥uje zasahovat do dat na serveru.
Prost°edky interaktivnφch WWW strßnek
V tΘto kapitole si podrobn∞ji popφÜeme n∞kterΘ metody pou₧itΘ u interaktivnφch WWW strßnek, abychom v Φßsti nßsledujφcφ mohli posoudit, jakΘ odliÜnosti majφ aplikace psanΘ v Jav∞.
Mo₧nosti HTML
I kdy₧ se to na prvnφ pohled nemusφ zdßt, mß i samotn² jazyk HTML dost prost°edk∙, kterΘ byste m∞li znßt p°i tvorb∞ dokonal²ch WWW strßnek. Jednou z nich jsou tzv. rßmce, kterΘ p°edstavujφ rozd∞lenφ okna prohlφ₧eΦe. Jejich variabilita je vynikajφcφ a umo₧≥uje vytvo°it krom∞ jednotnΘho zßhlavφ a spodku takΘ nabφdku a dalÜφ pomocnΘ liÜty.
Rßmce se vytvß°ejφ v souboru, kter² natahuje prohlφ₧eΦ; v tom jsou pak zapsßna jmΘna dalÜφch strßnek, kterΘ se nahrajφ do ka₧dΘho z vytvo°en²ch oken. Pro zobrazenφ rßmc∙ pot°ebujete kompatibilnφ prohlφ₧eΦ, jak²m je nap°φklad Netscape Navigator, nebo Microsoft Internet Explorer 3.x.
Jako p°φklad pou₧itφ si p°edstavte strßnku, kterß bude mφt t∞lo uprost°ed, v hornφm rßmci bude zßhlavφ s logem firmy, a po levΘ stran∞ bude nabφdka, ze kterΘ si nßvÜt∞vnφk vybere to, co ho prßv∞ zajφmß. JednoduÜÜφ nenφ jenom takov² Web navrhnout, ale takΘ se v n∞m orientovat.
Jinou funkcφ, kterou m∙₧ete vyu₧φt, je mo₧nost spuÜt∞nφ dalÜφch oken webovskΘho prohlφ₧eΦe na jednΘ obrazovce pomocφ parametru Target, zadßvan²m v hypertextov²ch odkazech (p°φkazy <a></a>). V²hody jsou z°ejmΘ -- m∙₧ete ovlßdat n∞kolik otev°en²ch oken a dovolit tak u₧ivateli pracovat b∞hem toho, co se do jednoho okna nahrßvajφ novß data.
DalÜφ, mΘn∞ znßmou, ale Φasto vyu₧φvanou metodou, je mo₧nost na°φdit, aby prohlφ₧eΦ automaticky nahrßl jin² dokument. To je v²hodnΘ nejen p°i vytvo°enφ kompatibilnφch verzφ strßnky (automatickΘ nahrßnφ se pak umφstφ do mφsta, kterΘ kompatibilnφ prohlφ₧eΦe nezobrazujφ) -- nap°φklad u strßnek s Javou nebo s rßmci. AutomatickΘ nahrßnφ dokumentu se provßdφ nßsledujφcφm p°φkazem:
<META HTTP-EQUIV="Refresh" CONTENT="20; url=index.htm">
V parametrech se uvßdφ doba, za kterou se mß nov² dokument nahrßt (co₧ je vhodnΘ pro ponechßnφ vφce Φasu na p°eΦtenφ zprßvy nebo v p°φpad∞ animacφ) a cesta (URL) k novΘmu dokumentu.
Tvorba formulß°∙
Standard HTML umo₧≥uje vytvß°et formulß°e (strßnky s b∞₧n²mi GUI objekty, jako jsou tlaΦφtka a pole), kterΘ pou₧ijete zejmΘna na r∙zn²ch dotaznφcφch, p°ihlaÜovacφch dialozφch a strßnkßch pro odesφlßnφ poÜty nebo p°φsp∞vk∙ do konference. V²sledky formulß°∙ mohou putovat bu∩ do poÜty, pro zpracovßnφ do CGI-skriptu, Javy nebo JavaScriptu.
Formulß°e mohou obsahovat nßsledujφcφ objekty: tlaΦφtka (s r∙zn²mi funkcemi a popisy), stavovΘ p°epφnaΦe (jedna volba z vφce mo₧nostφ), zaÜkrtßvacφ polφΦka (vφce mo₧nostφ na v²b∞r), vstupnφ pole (zadßnφ jmΘna, hesla, adresy...), textovß pole (zn∞nφ dopisu, p°φsp∞vek do konference) a dalÜφ.
Hlavnφ v²hoda pou₧itφ formulß°∙ je ve velkΘ rychlosti a v rozhranφ blφzkΘm u₧ivateli danΘho systΘmu. Navφc jejich programovßnφ je velmi jednoduchΘ a nenßroΦnΘ na velikost stahovanΘho dokumentu.
CGI-Skript
Programovßnφ interaktivnφch strßnek pomocφ CGI-skript∙ je jednou z nejpou₧φvan∞jÜφch a nejstarÜφch metod v prost°edφ Internetu. Vychßzφ z p°irozen²ch funkcφ UNIXu, kter² umo₧≥uje klientovi spouÜt∞t aplikace a vykonßvat p°φkazy p°es sφ¥ TCP/IP, a z integrovanΘ podpory spouÜt∞t jednoduchΘ aplikace v nep°elo₧enΘm, tedy textovΘm k≤du (nap°. Bourne Shell, Φi obdoba na OS/2 -- REXX). Ve skuteΦnosti je vÜak pod nßzev CGI-skript za°azovßno vÜe, co vßÜ serverov² software podporuje. Mohou to tedy b²t aplikace p°elo₧enΘ nebo psanΘ v textovΘm editoru.
Data odeslanß do CGI-skriptu jsou k≤dovßna pomocφ tzv. URL k≤dovßnφ, co₧ znamenß, ₧e jsou do aplikace serverem p°edßna prost°ednictvφm parametru a server je od prohlφ₧eΦe zφskß zak≤dovanΘ prost°ednictvφm URL adresy.
VÜe si m∙₧eme p°edstavit nßsledovn∞: Vy poÜlete serveru svΘ jmΘno, ten je dostane nap°. tφmto odkazem (ale zak≤dovanΘ):
http://mujserver.com/cgi-bin/test.cmd moje_jmeno
Z toho poznß, ₧e mß skriptu s nßzvem "test.cmd" p°edat parametr "moje_jmeno". Skript si ji₧ dokß₧e tuto informaci dek≤dovat a nalo₧it s nφ, podle toho, jak je naprogramovßn.
Jako v²sledek je vzat v²stup CGI-skriptu, kter² nap°φklad m∙₧e d∞kovat za odeslßnφ atd.
Zp∙sob spouÜt∞nφ skript∙ si pro lepÜφ pochopenφ m∙₧eme p°edstavit jako analogick² situaci, kdybychom telefonem zavolali sprßvci serveru, aby na n∞m spustil n∞jak² program, nadiktovali bychom mu vstupnφ data a jmΘno programu a potΘ bychom od n∞j cht∞li v∞d∞t, co se objevilo na obrazovce. V praxi vÜak funkci spojenφ (telefonu) zajiÜ¥uje TCP/IP sφ¥, programy nespouÜtφ obsluha serveru, ale software, kter² zßrove≥ odesφlß v²stup aplikace. Rovn∞₧ o data si nemusφte °φkat -- obstarß to za vßs prohlφ₧eΦ.
Upozornφm jeÜt∞ na jednu vlastnost, kterou CGI-skripty majφ. Vzhledem k tomu, ₧e jsou zßvislΘ na platform∞ (tedy zp∙sob, jak²m pracujφ a jak se programujφ, zßvisφ na platform∞, na kterΘ jsou spouÜt∞ny), m∙₧e se z nich nap°. spouÜt∞t aplikace pro vßÜ systΘm. Nenφ tedy vylouΦenΘ, abyste p°es CGI ovlßdali cel² sv∙j poΦφtaΦ, a nap°. spouÜt∞li dosovskΘ, UNIXovΘ, windowsovΘ Φi OS/2 programy. Vzhledem k tomu, ₧e existuje mo₧nost mφt jako v²stup celou webovou strßnku, tedy i s odkazy, obrßzky, rßmci a tabulkami, nenφ problΘm vytvo°it nap°. i dßlkov∞ ovlßdanou lokomotivu, jejφ₧ trasa bude poslΘze sledovßna p°es m∞nφcφ se obrßzky na strßnce a sm∞r a rychlost jφzdy budete m∞nit pomocφ formulß°e.
ActiveX
Mnoho lidφ se domnφvß, ₧e ActiveX je konkurencφ Jav∞. Ve skuteΦnosti tomu tak ale nenφ a vlastn∞ b²t ani nem∙₧e. ActiveX je technologie, kterß integruje mo₧nosti Internetu a konvenΦnφch programovacφch jazyk∙, podobn∞, jako OLE integruje aplikace r∙znΘho charakteru mezi sebou.
ActiveX se m∙₧e vyu₧φt takΘ k rozÜφ°enφ mo₧nostφ Javy -- p°φstupem do aplikacφ vytvo°en²ch v jin²ch jazycφch.
Vzhledem k problΘm∙m s kompatibilitou s r∙zn²mi prohlφ₧eΦi a poΦφtaΦov²mi platformami se ActiveX zatφm rozhodn∞ nemß Üanci stßt na Internetu standardem, ale pokud do budoucna Java n∞kterΘ mo₧nosti zde poprvΘ umo₧n∞nΘ nebude implementovat, mß ActiveX velkou nad∞ji b²t pomocnφkem v komplikovan²ch internetov²ch a intranetov²ch systΘmech.
JavaScript
DalÜφm d∙le₧it²m prvkem, na kter² narazφme p°i naÜich toulkßch po interaktivnφch WWW strßnkßch, je JavaScript.
Vznik JavaScriptu
Jazyk p∙vodn∞ vznikl jako tzv. LiveScript ve firm∞ Netscape Communications. P∙vod LiveScriptu byl v jazyce Java od firmy Sun Microsystems, kter² byl pro tyto ·Φely znaΦn∞ zjednoduÜen. LiveScript byl urΦen pro vklßdßnφ na platform∞ nezßvisl²ch jednoduch²ch aplikacφ p°φmo do zdrojovΘho textu jazyka HTML, ve kterΘm je vytvo°ena WWW strßnka.
Vzhledem k tomu, ₧e o LiveScript nikdo nejevil valn² zßjem a jazyk byl podporovßn pouze prohlφ₧eΦi firmy Netscape, mohl se t∞₧ko stßt standardem (aΦkoliv v∞tÜina ostatnφch vynßlez∙ tΘto spoleΦnosti je souΦßstφ ka₧dΘ nov∞ aktualizovanΘ verze HTML jazyka). Proto byl nßzev LiveScript nahrazen v²bojn∞jÜφm JavaScript, kter² se nynφ bok po boku svΘho mocn∞jÜφho kolegy -- jazyka Java -- postupn∞ stßvß v∞cφ hojn∞ vyu₧φvanou.
SpuÜt∞nφ aplikacφ JavaScriptu
Hlavnφ p°ednostφ JavaScriptu je jeho rychlost zcela nezßvislß na propustnosti linky. U₧ivatel nemusφ Φekat na mnohdy dlouhΘ spouÜt∞nφ CGI-skript∙ na serveru. JavaScript se sice hodφ jen pro mΘn∞ nßroΦnΘ aplikace, ale v mnoha p°φpadech dokß₧e strßnky o₧ivit a pot°ebnΘ aplikace urychlit. Velmi snadno se zde nap°. vytvß°ejφ programy, kterΘ putujφ po vßmi prohlφ₧en²ch dokumentech (tedy slou₧φ v roli jakΘhosi pr∙vodce Webem).
Pou₧itφ JavaScriptu nenφ navφc omezeno pouze na stranu klientskou, nebo¥ stejn∞ dob°e se m∙₧e pou₧φt i pro programovßnφ aplikacφ serverov∞ orientovan²ch (obdobn∞ jako samotnß Java).
Vlastnosti jazyka JavaScript
JavaScript je objektov∞ orientovan² jazyk. Je velmi jednoduch², tedy problΘmy vßm nebudou Φinit ani prom∞nnΘ, kterΘ jsou nynφ vytvß°eny bez typu (pouze nßzvem); typ (Φφslo, text, pole) se m∞nφ podle toho, jakß data do n∞j p°i°adφte. K≤d m∙₧ete vklßdat bu∩ p°φmo do zdrojovΘho textu HTML, nebo se odkazovat na soubor umφst∞n² na vaÜem serveru. Tφm odpadß jedinß myslitelnß nev²hoda, nutnost op∞tovnΘho p°episovßnφ aplikace na vÜechny dalÜφ strßnky. Dφky tomu lze nahradit velkou Φßst funkcφ CGI-skriptu a ulehΦit tak zatφ₧enφ serveru. Navφc tφm, ₧e JavaScript podporujφ oba nejrozÜφ°en∞jÜφ webovskΘ prohlφ₧eΦe (a i mnoho dalÜφch), je zde pouze jeden faktor, kter² rozhoduje o vyu₧itelnosti JavaScriptu na vaÜich strßnkßch -- novΘ funkce. Ty jsou toti₧ p°idßvßny velmi rychle, a tak je starÜφ verze prohlφ₧eΦ∙ podporovat nemusφ. Pokud ale vÜe vyzkouÜφte, podobn²ch komplikacφ se nejspφÜ vyvarujete.
I kdy₧ se vßm m∙₧e zdßt, ₧e JavaScript je pro vaÜe ·Φely mßlo pou₧iteln², zamyslete se nad tφm, o kolik se urychlφ odezva WWW serveru, pokud v∞tÜina mΘn∞ nßroΦn²ch aplikacφ bude provßd∞na na stran∞ klienta. Jako typick² p°φklad m∙₧eme uvΘst napojenφ na CGI-skripty: jestli₧e ve vaÜem dotaznφku u₧ivatel n∞co vyplnφ Üpatn∞, data p°esto putujφ na vytφ₧en² server, ten je vyhodnotφ jako Üpatnß a odeÜle tou samou -- a pomalou -- cestou zp∞t informaci o tom, ₧e zaslanΘ informace jsou chybnΘ. V praxi pak vÜe vypadß tak, ₧e u₧ivatel vyplnφ dotaznφk a pak n∞kolik vte°in Φekß na to, aby se dozv∞d∞l, ₧e zapomn∞l uvΘst adresu.
Pokud si v tΘto situaci pom∙₧ete JavaScriptem, u₧ivatel vyplnφ dotaznφk, kter² mu p°ekontroluje JavaScript vestav∞n² ve strßnce. Pokud informace uvede Üpatn∞, je okam₧it∞ upozorn∞n na chybu -- a jsou-li data sprßvnß, pak jsou odeslßna na server, kde je zpracuje CGI-skript.
Jestli₧e si umis¥ujete svΘ strßnky na server poskytovatele Internetu, pravd∞podobn∞ jste se ji₧ dozv∞d∞li, ₧e nemßte mo₧nost pou₧φt CGI-skript∙, respektive ₧e za jejich umφst∞nφ platφte velkΘ Φßstky. Jde toti₧ o to, ₧e zejmΘna p°elo₧enΘ skripty (tj. ty v neΦitelnΘ form∞) by mohly ohrozit bezpeΦnost serveru, a proto je jejich instalace omezovßna. Pokud vÜak namφsto nich pou₧ijete klientsky orientovan² JavaScript, nem∙₧e b²t bezpeΦnost nijak naruÜena, a sprßvce vßm tedy nebude nijak brßnit v umφst∞nφ takovΘ strßnky. Musφte vÜak poΦφtat s jist²m omezenφm, nap°. problematick²m uklßdßnφm dat na disk serveru.
BezpeΦnost
Vzhledem k ·Φelu, pro jak² byl JavaScript vytvo°en, (a jedin∞ tak se na n∞j v tuto chvφli dφvßme), si programßtor nemusφ d∞lat ₧ßdnΘ starosti s bezpeΦnostφ. V tomto jazyce prost∞ nelze vytvo°it aplikaci, kterß by se n∞jak dot²kala st°e₧en²ch hranic poΦφtaΦovΘho systΘmu. Pokud JavaScript spolupracuje s jin²m jazykem, kter² tyto mo₧nosti mß, zßle₧itosti bezpeΦnosti le₧φ na n∞m.
Pracovnφ plocha JavaScriptu
V JavaScriptu budete nejΦast∞ji vytvß°et aplikace, kterΘ majφ bu∩ viditeln² v²stup do okna prohlφ₧eΦe, eventußln∞ nemajφ v²stup v∙bec ₧ßdn². JavaScript neumo₧≥uje si se strßnkou n∞jak "hrßt", a tak budete design vytvß°et bu∩ v HTML (formulß° na strßnce s JavaScriptem), nebo budete mφt HTML v²stup z appletu.
JavaScript je vÜak p°edevÜφm urΦen k ·loze "ÜedΘ eminence", stojφcφ v pozadφ dokonalΘ interaktivnφ strßnky, je₧ je vytvo°ena z mo₧nostφ jazyka HTML.
P°φstup k aplikacφm v JavaScriptu
P°φstup k aplikacφm psan²m v JavaScriptu obvykle v∙bec ne°eÜφte. Nechßte je reagovat na udßlosti (stlaΦenφ tlaΦφtka,...), nebo jako vstup pou₧ijete b∞₧n² formulß°. Tato komunikace se odehrßvß v²hradn∞ na stran∞ klienta.
Jak ji₧ bylo naznaΦeno, aplikace mohou b²t ulo₧enΘ i v samostatn²ch souborech na serveru, obdobn∞ jako CGI-skripty, ale i tak se spouÜtφ u klienta, kter² si je ze serveru spolu s HTML strßnkou vyzvedne.
V²znam JavaScriptu pro Intranet
Intranet je stejn∞ jako Internet centralizovan² klient/serverov² systΘm, kde je primßrnφ d∙raz kladen na v²kon serveru a propustnost sφt∞. Zatφmco u b∞₧nΘ LAN, slo₧enΘ ze souborovΘho serveru a klientsk²ch pΘcΘΦek, si u₧ivatelΘ obvykle sahajφ na server jen pro sdφlenß data a centrßlnφ aplikace (poÜta, groupware...), u centralizovan²ch systΘm∙ je situace odliÜnß. Klienti z °ad bezdiskov²ch stanic, sφ¥ov²ch poΦφtaΦ∙ (a i slab²ch PC pracovnφch stanic), se serverem neustßle komunikujφ, ₧ßdajφ o data, soubory, aplikace i poÜtu a p°es server p°istupujφ i na Internet. ┌lohy je sice mo₧nΘ rozd∞lit mezi vφce server∙ (a to pro u₧ivatele zcela transparentn∞), ale i tak je ka₧d² p°φchozφ u₧ivatel znßt.
Pokud p°emφstφte Φßst aplikacφ na klientskΘ stanice (co₧ je mo₧nΘ, dokonce i v p°φpad∞, ₧e nemajφ pevnΘ disky), m∙₧ete tφm snφ₧it a₧ o desφtky procent vytφ₧enφ serveru -- co₧ znamenß vyÜÜφ v²kon pro klienty, o pßr procesor∙ mΘn∞ pro server a o pßr korun vφce, kterΘ m∙₧ete p°idat k platu vaÜeho administrßtora za to, ₧e to takhle dob°e vymyslel. On si za n∞ nejspφÜe koupφ nov² d∙m, auto a dovolenou u mo°e, a pokud jste velkß firma, tak m∙₧e dßt i v²pov∞∩, nebo¥ bude mφt do d∙chodu vystarßno.
Pokud se ptßte, kudy vede cesta, odpov∞∩ je jednoduchß: v JavaScriptu vytvo°φte tak velkou souΦßst vaÜeho Intranetu, jak jen to bude mo₧nΘ. Jeho prost°ednictvφm peΦliv∞ zkontrolujete ka₧d² formulß°, p°idßte p°φkazovou °ßdku pro rychl² p°φstup k b∞₧n²m aplikacφm (mΘn∞ stahovan²ch strßnek takΘ sni₧uje zatφ₧enφ, ani ne kv∙li jejich velikosti, ale spφÜe dφky nutnosti serveru odpovφdat na zavolßnφ klienta), obslou₧φte vφce menÜφch CGI-skript∙, namφsto jednoho velkΘho vÜeum∞jφcφho... a v neposlednφ °ad∞ vytvo°φte i celΘ aplikace, jako nap°. kalkulaΦku. M∙₧eme tedy napsat jednoduchou rovnici:
Intranet + Java + JavaScript = °eÜenφ.
Programovßnφ v JavaScriptu
NejlΘpe se o jednoduchosti jazyka p°esv∞dΦφte, kdy₧ uvidφte zp∙sob, jak²m se v n∞m tvo°φ aplikace. Podφvejme se tedy nynφ blφ₧e na tuto zßle₧itost.
Applety se do HTML strßnky vklßdajφ obvykle do mφsta oznaΦovanΘho jako hlaviΦka (<head>), mezi pßrovan² p°φkaz SCRIPT (<SCRIPT LANGUAGE="JavaScript" >...</SCRIPT>). Nemusφ sice v hlaviΦce b²t, ale je to tak p°inejmenÜφm p°ehledn∞jÜφ. Pokud chcete pou₧φt soubor z disku svΘho serveru, pak napφÜete jednoduÜe namφsto toho nßsledujφcφ klauzuli:
<SCRIPT LANGUAGE="JavaScript" SRC="URL souboru.js">
Pro programovßnφ je celΘ okolφ JavaScriptu (webovsk² prohlφ₧eΦ, strßnka...) rozd∞leno na n∞kolik mßlo objekt∙, kterΘ majφ definovanΘ vlastnosti a metody. Tedy, pokud chcete nap°. na strßnku n∞co napsat, pou₧ijete metodu piÜ (write) objektu strßnka (document) a jako parametr jφ p°edßte text pro vypsßnφ:
document.write("Toto napsal JavaScript, to koukßte, co?!");
Vlastnostφ se rozumφ p°edem definovanΘ parametry, kterΘ jsou znßmy prohlφ₧eΦi, tedy pokud z∙staneme u nahranΘ strßnky, m∙₧e to b²t nap°. jejφ nßzev (title) nebo URL (location). P°φstup k t∞mto informacφm mßme, jak jinak, objektov²:
// vypφÜeme nßzev strßnky
document.write(document.title);
// vypφÜeme URL adresu p°evedenou na text
document.write(location.toString());
DalÜφ zajφmavou zßle₧itostφ jsou prom∞nnΘ. JavaScript je slab∞ typovan² jazyk, co₧ mß svΘ v²hody v jednoduchosti. Prom∞nnou (i pole prom∞nn²ch) prost∞ kdekoliv vytvo°φte (jako poΦßteΦnφ hodnotu jφ lze p°i°adit i v²sledek funkce) a pak jφ m∙₧ete p°i°azovat hodnoty dle vlastnφ volby -- tedy ΦφselnΘ, °et∞zcovΘ i dalÜφ.
// vytvo°φme °et∞zcovou prom∞nnou...
var jmeno="BMW";
// a pak jφ p°i°adφme Φφselnou hodnotu, jakoby se nechumelilo:
jmeno=30;
Je t°eba upozornit, ₧e potΘ, co prom∞nnΘ p°i°adφme hodnotu nap°. °et∞zcovou, nenφ mo₧nΘ s nφ samoz°ejm∞ pracovat jako s prom∞nnou Φφselnou -- vyvolß to chybu za b∞hu programu. N∞kterΘ matematickΘ operace je vÜak mo₧nΘ provßd∞t i s °et∞zcov²mi prom∞nn²mi (nap°φklad sΦφtßnφ).
JavaScript umφ reagovat na v∞tÜinu udßlostφ -- a jinak vlastn∞ ani nenφ mo₧nΘ jeho funkce zavolat. JavaScript se toti₧ obvykle pφÜe tak, aby se spustil a₧ potΘ, co u₧ivatel stlaΦφ n∞jakΘ tlaΦφtko nebo provede jinou operaci, ne tedy automaticky ihned po nahrßnφ strßnky, jako t°eba Java (i kdy₧ i to je mo₧nΘ). Pokud si tedy vytvo°φte n∞jakou funkci, pak ji₧ jen nastavφte, kdy se mß spustit: nap°. po odeslßnφ formulß°e, zm∞n∞ obsahu vstupnφho pole atd. Uvedeme si p°φklad, kdy funkce "kontroluj" je spuÜt∞na potΘ, co u₧ivatel odeÜle formulß° (udßlost onSubmit). NutnΘ je upozornit na provßzanost s k≤dem HTML, kterß umo₧≥uje definovat odkazy na skript i uvnit° HTML souboru (a naopak je tam i p°edßvat) mimo mφsto vyhrazenΘ pro napsßnφ aplikace:
<form method="POST" ACTION="noindex.htm" onSubmit="return kontroluj(this)">
Parametr "this" pak uvßdφ, jak² objekt (formulß°) je obsluhovßn.
JavaScript pochopiteln∞ obsahuje takΘ funkce pro matematickΘ operßtory a porovnßvacφ v²razy, jejich₧ pou₧itφ je obdobnΘ jako u Javy (tomu se budeme v∞novat v dalÜφch kapitolßch).
Pro v²voj nßroΦn∞jÜφch program∙ jsou nezbytnΘ funkce °φzenφ b∞hu programu, to znamenß podmφn∞nΘ spuÜt∞nφ (jestli₧e, pak, jinak -- if, else) a cykly (pro a dokud -- for a while). Zde jsou jejich kostrukce:
IF:
if (podmφnka){
// vykonej pokud je pravda
}else {
// jinak vykonej toto
}
FOR:
for (inicializace, interval, p°φr∙stek){
// d∞lej pro prom∞nnou v intervalu
}
WHILE:
while (podmφnka) {
// d∞lej pokud platφ podmφnka
}
Vytvo°enφ strßnek
P°i tvorb∞ strßnek nezapomφnejte, ₧e aplikace v JavaScriptu nemusφ b²t pro u₧ivatele v₧dy viditelnß. Proto je vhodnΘ n∞kam na strßnku umφstit poznßmku, ₧e obsahuje JavaScript (nap°. obvykl²m: "Powered by JavaScript"). D∙vod je prost²: jde o to, aby u₧ivatel pochopil, co se na strßnce d∞je, a pokud nemß nßhodou kompatibilnφ prohlφ₧eΦ, aby nebyl zbyteΦn∞ zmaten².
-
Java
Java p°edstavuje pr∙lom v programovßnφ aplikacφ pou₧iteln²ch na Internetu. V∞tÜina firem si je tohoto faktu v∞doma, co₧ se takΘ stalo p°φΦinou jejφho rychlΘho rozÜφ°enφ. Kdy₧ vidφte zdrojov² k≤d javovskΘho appletu, zdß se vßm velmi jednoduch², ale pokud v Jav∞ zaΦnete programovat, uvidφte, ₧e budete nachßzet jednu funkci za druhou -- a p°itom vÜechny jsou vytvo°enΘ tak, abyste je pou₧φvali, nejsou toti₧, na rozdφl od b∞₧n²ch jazyk∙, optimalizovanΘ pro provoz jak²chkoliv aplikacφ, ale prßv∞ t∞ch, kterΘ budete vytvß°et.
Vznik Javy
P∙vod Javy se odvφjφ od jazyka OAK, kter² vytvß°ela spoleΦnost Sun Microsystems. Tento jazyk byl urΦen pro p°enosnΘ osobnφ asistenty PDA. Na jazyku OAK byla velmi zajφmavß prßv∞ jeho pou₧itelnost, kterß dßvala nad∞ji, ₧e by mohl b²t souΦßstφ ka₧dΘho elektronickΘho za°φzenφ, vΦetn∞ spot°ebnφ elektroniky.
PotΘ, co zaΦal nßstup Internetu, dostal v²vojov² t²m jazyku OAK za ·kol p°epracovat v²konn² jazyk OAK do novΘho prost°edφ. PotΘ byl zm∞n∞n i jeho nßzev, a od tΘ doby jej znßme pod jmΘnem Java.
Java tedy nebyl jen jazyk vylepÜen², ale p°φmo jazyk urΦen² pro provoz v multiplatformnφm prost°edφ, a¥ ji₧ se jednß o kßvovar, nebo grafickou stanici od Silicon Graphics. A proto₧e Internet je rozdφlnostφ vyznßnφ sv²ch ·Φastnφk∙ tomuto p°irovnßnφ velmi blφzk² (a na rozdφl od interaktivnφch videorekordΘr∙ ji₧ delÜφ dobu ·sp∞Ün∞ funguje), je pou₧itφ Javy velmi v²hodnΘ.
Jeden z prvnφch z WWW prohlφ₧eΦ∙, kterΘ byly schopnΘ jazyk Java podporovat, byl Navigator 2.0 firmy Netscape -- a tφmto okam₧ikem se jazyk dostal k nadpoloviΦnφ v∞tÜin∞ u₧ivatel∙ Internetu. PotΘ, co Javu jako progresivnφ nßstroj zaΦalo vyu₧φvat stßle v∞tÜφ mno₧stvφ velk²ch firem, ale i drobn²ch majitel∙ strßnek, stala se standardem.
V²voj jazyka, jeho mo₧nosti a hlavn∞ pou₧itelnost se vÜak dosud nezastavily, jak si za chvφli ukß₧eme.
SpouÜt∞nφ aplikacφ Java
PotΘ, co je program v Jav∞ dopsan², je p°elo₧en do k≤du nezßvislΘho na architektu°e. To je velmi d∙le₧itΘ pro "nßzorov∞" tak bohatou oblast, jakou je Internet. Na rozdφl od prakticky vÜech Φist²ch programovacφch jazyk∙ (sem nepat°φ skripty) je pln∞ p°enositeln² mezi platformami, a to nejen zdrojov² k≤d (m∙₧ete psßt v jakΘmkoliv systΘmu), ale i p°elo₧enß aplikace (m∙₧ete spustit v jakΘmkoliv systΘmu). Z tohoto hlediska mß Java jen jeden po₧adavek -- aby systΘm, na n∞m₧ budete aplikaci spouÜt∞t, obsahoval Java Runtime interpreter. To vÜak nenφ problΘm, nebo¥ tento interpreter je samoz°ejmou souΦßstφ nap°φklad Netscape Navigatoru od verze 2.0 a mnoha dalÜφch prohlφ₧eΦ∙. Java Runtime vÜak nenφ jen souΦßstφ webovsk²ch prohlφ₧eΦ∙, ale je nap°. zabudovßn i v n∞kter²ch operaΦnφch systΘmech, jako jsou mutace UNIXu (nap°. IRIX od Silicon Graphics) nebo OS/2 4.0. Dφky tomu je mo₧nΘ tyto aplikace podstatn∞ rychleji spouÜt∞t p°φmo ze systΘmovΘ pracovnφ plochy (jako b∞₧nΘ aplikace).
V Jav∞ tedy m∙₧ete psßt nejen aplikace klientskΘ, ale takΘ serverov∞ orientovanΘ. Ve svΘ podstat∞ Java v∙bec nepot°ebuje webovsk² prohlφ₧eΦ, jak to dokazuje mnoho ji₧ existujφcφch aplikacφ (nap°. webovsk² prohlφ₧eΦ HotJava); pokud vÜak systΘm, pro kter² je aplikace urΦena, nepodporuje spouÜt∞nφ Javy z pracovnφ plochy, musφ b²t aplikace v Jav∞ p°elo₧ena do b∞₧nΘho spustitelnΘho souboru -- kter² vÜak ji₧ nenφ p°enositeln².
Vlastnosti Javy jako programovacφho jazyka
Java je vyÜÜφ programovacφ jazyk, obdobn∞, jako nap°. jazyky C a Pascal. Sv²m zpracovßnφm je podobn² cΘΦku, ale prakticky ve vÜech p°φstupech k programovßnφ je lepÜφ.
Java-applet (program) m∙₧e b∞₧et na jakΘmkoliv operaΦnφm systΘmu, kter² jej podporuje, je vÜak optimalizovßn pro multithreadovΘ systΘmy (UNIX, Windows NT, OS/2), kterΘ dokß₧φ zpracovßvat vφce ·loh v rßmci jednΘ aplikace. Oproti vÜem ostatnφm jazyk∙m je vÜak Java multithreadnφ direktivn∞ (budi₧ multithreadnφ) a v²razn∞ robustn∞jÜφ p°i zpracovßnφ (a v∙bec mo₧nostech) vφce·lohov²ch aplikacφ. Tento fakt je prakticky vynucen, nebo¥ jinak by nebylo mo₧nΘ kup°φkladu p°ehrßvat animaci a u nφ zvuk na vÜech platformßch stejn∞.
DalÜφ v²hodou je, ₧e Java pou₧φvß standardizovanΘ datovΘ typy. Nap°. pod Windows 95 je znak reprezentovan² jednφm bytem (osm bit∙), Φφm₧ je znaΦn∞ omezena p°enositelnost mezi r∙zn²mi jazykov²mi mutacemi a datov²mi typy. DalÜφ systΘm firmy Microsoft -- Windows NT -- ji₧ pou₧φvß dvoubytovΘho (16 bit∙) k≤dovßnφ. A to jsme jen u rozdφl∙ mezi operaΦnφmi systΘmy jednΘ firmy -- co teprve u zcela jin²ch hardwarov²ch platforem. Tφm, ₧e Java podporuje (jako nap°φklad OS/2 nebo n∞kterΘ mutace UNIXu) standard IEEE (Institute of Electrical and Electronic Engeneers), neexistujφ problΘmy spojenΘ s p°enositelnostφ datov²ch typ∙ mezi platformami, ani mezi typy samotn²mi. Na rozdφl od jazyka C++ nejsou °et∞zce v Jav∞ pole znak∙, ale datovΘ typy, se kter²mi m∙₧ete pracovat obdobn∞ jako u jazyka Basic. Rovn∞₧ se nemusφte starat o sprßvu pam∞ti (nebo snad omezenΘ systΘmovΘ prost°edky, konvenΦnφ pam∞¥, atd.), nebo¥ i ·klid pam∞ti (Garbage collection) je provßd∞n samotn²m programem automaticky v dob∞ Φekßnφ na vstup od u₧ivatele (pro zv²Üenφ v²konu).
BezpeΦnost
Java je jazyk modernφ, a proto jsou do n∞j zabudovßny samoz°ejm∞ nejen bezpeΦnostnφ funkce t²kajφcφ se nepovolenΘho p°φstupu na disk poΦφtaΦe, kde je applet spouÜt∞n, a serveru, odkud je stahovßn. Jsou zde zahrnuty takΘ funkce zvyÜujφcφ bezpeΦnost a stabilitu samotnΘho programu, a¥ ji₧ po strßnce virovΘ nßkazy, nebo chyb v aplikacφch. ZabezpeΦenφ sm∞°ujφcφ proti poΦφtaΦov²m vir∙m je dßno tφm, ₧e neumo₧≥uje p°φstup k pam∞ti takov²m zp∙sobem, jako t°eba jazyk C++, Pascal nebo Assembler (v tomto p°φpad∞ to prost∞ nenφ pot°eba). Z toho plyne pravidlo, ₧e pokud nenφ vir souΦßstφ aplikace jeÜt∞ p°ed p°elo₧enφm, mß mizivou Üanci na to, aby b∞₧el v aplikaci finßlnφ (i kdy₧ to v zßsad∞ nenφ vylouΦenΘ).
DalÜφ prvky bezpeΦnosti sestßvajφ z n∞kolika vrstev:
Verifikace bajtovΘho k≤du -- zajiÜ¥uje soulad obsahu appletu s jazykem Java. Tφm prakticky znemo₧≥uje, aby byl program jakkoliv zm∞n∞n potΘ, co je p°elo₧en.
Omezenφ p°φstupu k soubor∙m -- je d∙le₧itß ·rove≥ ochrany, kterß se p°i pokusu p°istoupit k nepovolenΘmu souboru "majitele" prßv (u₧ivatel nebo serverov² program) zeptß, zda se tak d∞je sprßvn∞.
RuntimovΘ verifikace t°φd -- tato funkce kontroluje p°φstupy a nßzvy funkcφ uvnit° appletu b∞hem jeho spuÜt∞nφ.
Je vÜak nutnΘ si uv∞domit, ₧e v²vojovΘ nßstroje Javy p°φmo umo₧≥ujφ zp∞tnΘ rozlo₧enφ p°elo₧en²ch aplikacφ do zdrojovΘho textu. Pokud tedy u₧ivatel dostane mo₧nost si vaÜi aplikaci spustit, m∙₧e si ji takΘ podle svΘho p°epsat a ulo₧it na sv∙j disk.
Java se od ostatnφch programovacφch jazyk∙ liÜφ zejmΘna svojφ schopnostφ odhalovat chyby; dφky tomu vznikajφ mimo°ßdn∞ robustnφ a stabilnφ aplikace, bez vadnΘho k≤du vedoucφho k systΘmov²m chybßm. Java nap°. takΘ umo₧≥uje jen jedinou d∞diΦnost t°φdy, kterß znemo₧nφ programßtor∙m definovat chovßnφ jednΘ t°φdy pomocφ n∞kolika dalÜφch a tφm zbyteΦn∞ komplikovat program.
Na druhou stranu je sφla tohoto jazyka takΘ pom∞rn∞ snadno zneu₧itelnß v podob∞ rozliΦn²ch hackersk²ch nßstroj∙. NaÜt∞stφ se jim m∙₧eme snadno brßnit (nap°. tak, ₧e vypneme p°ehrßvßnφ javovsk²ch aplikacφ p°i p°φstupu na neznßmΘ nebo pochybnΘ servery).
Pracovnφ plocha javovskΘ aplikace
V∞tÜina javovsk²ch program∙, kterΘ budete tvo°it (v²jimku tvo°φ pouze ty s textov²m v²stupem), si vytvo°φ vlastnφ pracovnφ plochu aplikace (obdobn∞, jako t°eba novΘ okno b∞₧nΘho programu). Tato plocha je (podle interpreteru) umφst∞na nap°. ve webovskΘm prohlφ₧eΦi. Velikost pracovnφ plochy si m∙₧ete nastavit bu∩ p°φmo parametrem, nebo ji takΘ dynamicky m∞nit uvnit° programu. Uspo°ßdßnφ pracovnφ plochy se m∙₧e nebo nemusφ °φdit n∞kolika nabφzen²mi p°edpisy, kterΘ jsou r∙zn∞ slo₧itΘ a majφ r∙znΘ mo₧nosti (co₧ je u₧iteΦnΘ zejmΘna p°i umis¥ovßnφ objekt∙ grafickΘho rozhranφ).
P°φstup k aplikacφm Java
Jak jsme si ji₧ °ekli v Φßsti o aplikacφch psan²ch v CGI-skriptech, musφme v p°φpad∞ pot°eby n∞jak²m zp∙sobem dostat do naÜeho programu vstupnφ data. T∞mi m∙₧eme chßpat nap°. jmΘno p°i vypl≥ovßnφ dotaznφku, nebo text, kter² se bude posunovat v okΘnku.
U CGI-skript∙ jsme data p°edßvali pomocφ URL adresy serveru, jen₧ je poslΘze vyhodnotil pro skript. U Javy je to obvykle jinΘ (i kdy₧ nenφ vylouΦen stejn² postup). Data, nebo-li parametry, se javovskΘmu appletu p°edßvajφ nezak≤dovanß, a to prost°ednictvφm HTML strßnky, ve kte jen jednoduÜe upravφte jeden °ßdek na webovskΘ strßnce. Dφky tomu programujete a p°eklßdßte aplikace pouze jednou.
Aby vaÜe strßnka mohla obsahovat Java-applet, musφte na n∞j umφstit odkaz, to se provßdφ pomocφ rozÜφ°enφ HTML -- p°φkazu Applet. Zde je v²pis strßnky, kterß obsahuje odkaz na applet psan² v Jav∞:
<HTML>
<HEAD>
<title>Skrolujφcφ text</title>
</HEAD>
<BODY>
<APPLET CODE="skrolujicitext.class" WIDTH="320" HEIGHT="20" ALIGN="center">
<PARAM NAME="text" VALUE="Pokusn² text">
<META HTTP-EQUIV="Refresh" CONTENT="0; url=bezjavy.html">
</applet>
</BODY>
</HTML>
Ihned za p°φkazem Applet nßsleduje popis jmΘna p°elo₧enΘho souboru (skrolujicitext.class), velikost pracovnφ plochy appletu (Üφ°ka 320 bod∙ a v²Üka 20 bod∙) a zarovnßnφ na st°ed (center). Dßle p°edßvßme aplikaci parametr jmΘnem "text", kter² mß hodnotu "Pokusn² text" (ten se bude posunovat). Pokud ji₧ tuto aplikaci jednou mßme na disku serveru, tak je snadnΘ ji pou₧φt i na vφce strßnkßch a s jin²mi parametry.
V²vojß°skΘ nßstroje pro Javu
Je zcela p°irozenΘ, ₧e nßstroj∙ pro programovßnφ v Jav∞ bude stßle vφce a vφce. Trend souΦasnΘ doby je p°ipravit export do javovskΘho k≤du z b∞₧nΘho vizußlnφho prost°edφ programovacφch balφk∙, jak²m je kup°φkladu Delphi. V souΦasnΘ dob∞ jich ji₧ n∞kolik existuje. P°φkladem m∙₧e b²t u₧ivateli p°φzniv∞ hodnocen² nßstroj firmy Symantec nazvan² CafΘ. DalÜφm z kvalitnφch nßstroj∙ je i Microsoft Visual J++.
Pro profesionßla, nebo, lΘpe °eΦeno, pro nßroΦnΘho programßtora, vÜak bude nejlepÜφ volbou prvnφ programovacφ nßstroj firmy Sun, nazvan² Java Development Kit (JDK). Nejen₧e vßm umo₧≥uje se k programovßnφ uch²lit do stabiln∞jÜφho a Internetu p°φzniv∞jÜφho prost°edφ ne₧ Windows, ale takΘ je prakticky jedin² "prav²" p°ekladaΦ na Javu podle vÜech pravidel; zßrove≥ umo₧≥uje tu nejni₧Üφ ·rove≥ p°φstupu ke zdrojovΘmu k≤du. JDK je k dispozici pro v∞tÜinu operaΦnφch systΘm∙, pro kterΘ je k dispozici Java Runtime, a tak nßs nijak neomezuje. Navφc je JDK oproti vÜem ostatnφm nßstroj∙m zcela zdarma dostupnß na Internetu a obsahuje balφk p°edprogramovan²ch rutin a knihoven.
Vzhledem k tomu, ₧e prßv∞ JDK pochßzφ z dφlny tv∙rc∙ jazyka Java, podporuje tento nßstroj vÜechny implementace a funkce tohoto jazyka, a obsahuje takΘ nßstroje pro vÜe, co m∙₧ete s javov²m k≤dem d∞lat.
V balφku aplikacφ, jen₧ se dodßvß jako souΦßst OS/2 4.0, je navφc mnoho dalÜφch nßstroj∙, kterΘ vßm usnadnφ v²voj aplikacφ -- nap°. grafickΘ programßtorskΘ prost°edφ.
Aplikace se v JDK spouÜt∞jφ pomocφ p°φkazovΘ °ßdky. Dodßvka pro vÜechny systΘmy tedy zahrnuje minimßln∞:
-- Interpreter Javy. To je program, kter² spouÜtφ jednoduchΘ textovΘ javovskΘ applety. Disponuje n∞kter²mi funkcemi pro debuging a nastavenφ aplikace.
-- Kompilßtor (p°ekladaΦ) zdrojov²ch text∙ *.java do knihoven *.h a spustiteln²ch aplikacφ *.class.
-- Debuger, zßkladnφ prost°edek pro listovßnφ k≤dem p°elo₧enΘ aplikace.
-- Nßstroj pro generovßnφ kompletnφ programßtorskΘ dokumentace k Java k≤du.
-- Disassembler, slou₧φcφ pro zp∞tnΘ p°evedenφ p°elo₧enΘho k≤du do zdrojovΘho textu.
-- V²pis metod, jen₧ slou₧φ pro prohlΘdnutφ metod pou₧it²ch v appletech.
Jak majφ rßdi Javu
To, ₧e Java je multiplatformnφ, jeÜt∞ zdaleka neznamenß, ₧e pob∞₧φ na vÜech systΘmech stejn∞ rychle. Jen pro p°edstavu jsme podnikli test rychlosti interpreter∙ javovsk²ch aplikacφ v b∞₧n²ch operaΦnφch systΘmech. V²sledky z°ejm∞ nebudou p°φliÜ zajφmavΘ pro u₧ivatele, ale profesionßlnφm programßtor∙m mohou pomoci p°i v²b∞ru vhodnΘho operaΦnφho systΘmu pro vytvß°enφ aplikacφ. Rovn∞₧ mohou b²t u₧iteΦnΘ administrßtor∙m sφtφ, Φi managementu, kter² vybφrß vhodn² operaΦnφ systΘm pro intranetovΘ °eÜenφ zalo₧enΘ na Jav∞.
Jak se testovalo
Jako testovacφ hardware byl pou₧it tak v²konn² a vybaven² poΦφtaΦ, aby se (pokud mo₧no) set°ely rozdφly mezi hardwarovou nßroΦnostφ jednotliv²ch systΘm∙. Jednalo se tedy o poΦφtaΦ se zßkladnφ deskou Intel a procesorem Intel Pentium 120 MHz, operaΦnφ pam∞¥ byla 64MB. JednotlivΘ systΘmy byly nainstalovßny na 500MB logick²ch discφch na velmi rychlΘm pevnΘm disku IBM Aquarius. Grafickß karta byla vybavena Φipsetem S3 868 s 2 MB DRAM a pod ka₧d²m systΘmem pou₧φvala originßlnφ optimalizovanΘ ovladaΦe. Testovalo se v rozliÜenφ 1 280 x 1024 x 256 barev a 1 024 x 768 x 65 barev.
Prov∞°eno bylo celkem deset javovsk²ch aplikacφ, kterΘ byly testovßny co se t²Φe v²konu v bitmapovΘ a ΦßrovΘ grafice, p°i v²poΦtu tabulek a dalÜφch testech. Aplikace pochßzely z demonstraΦnφch applet∙ firmy Sun a byly upraveny pro m∞°enφ Φasu.
Cφlem bylo zjistit, jak² z webovsk²ch prohlφ₧eΦ∙ a jak² ze systΘm∙ si dokß₧e nejlΘpe poradit se spuÜt∞nφm programu.
VÜechny applety byly ulo₧enΘ na lokßlnφm disku, formßtovanΘm na p°irozen² formßt systΘmu (Windows 95 -- FAT, OS/2 -- 32bit HPFS, Windows NT -- 32bit NTFS, Linux -- Linux Native). Ka₧dΘ makro bylo spuÜt∞no p∞tkrßt a za v²sledek byla pova₧ovßna pr∙m∞rnß hodnota.
Nφ₧e jsou uvedenΘ u₧ivatelskΘ zkuÜenosti s provozem Javy na jednotliv²ch operaΦnφch systΘmech a rozliΦn²ch interpreterech Javy.
Windows 95
Ze vÜech testovan²ch systΘm∙ m∞ly Windows 95 nejmenÜφ nßroky na hardware a nejlΘpe zpracovanΘ ovladaΦe. MΘn∞ v²konn² diskov² formßt byl sice znßt jak p°i spouÜt∞nφ program∙, tak i p°i nahrßvßnφ aplikacφ, ale kvalita grafickΘ Φßsti byla tak°ka dokonalß.
P°i b∞hu multithreadnφ javovskΘ aplikace bylo patrnΘ zpomalenφ. P°i b∞hu prohlφ₧eΦe s Java appletem na pozadφ byl b∞h zbytku systΘmu o poznßnφ pomalejÜφ.
Windows NT 4.0 Workstation
Velmi v²konn² diskov² formßt nahrßval aplikace v²razn∞ svi₧n∞ji, ne₧ tomu bylo u p°edchozφho systΘmu, rovn∞₧ rychlost grafickΘho v²stupu byla sluÜnß. Nejv²razn∞ji se vÜak projevil rozdφl p°i multithreadnφch appletech, kterΘ byly v²razn∞ (a₧ o 32 %) rychlejÜφ.
P°i b∞hu appletu na pozadφ dochßzelo ke znatelnΘmu zpomalenφ zbytku systΘmu.
OS/2 4.0 Warp
O n∞co slabÜφ grafickΘ ovladaΦe majφ za nßsledek celkovΘ zpomalenφ grafick²ch aplikacφ p°i 256barevnΘm zobrazenφ a nastavenΘ volb∞ Palete Aware, kterß optimalizuje barevnou paletu na vÜechny objekty systΘmu. Rychlost interpretace a nahrßvßnφ applet∙ vÜak byla velmi vysokß. Nejv²razn∞jÜφ rozdφl i oproti Windows NT se projevil v multithreadnφch aplikacφch, je₧ byly velmi rychlΘ.
P°i b∞hu appletu se nezpomaluje prßce se zbytkem systΘmu, pokud vÜak mßte nastavenou v²Üe uvedenou volbu pro 256barevn² re₧im, tak p°ekreslenφ okna s javovsk²m appletem (nap°. kdy₧ p°es n∞j p°ejedete jin²m oknem) trvalo a₧ jednu vte°inu. V jin²ch volbßch palety se systΘm choval zcela svi₧n∞ a p°irozen∞.
Linux
Z mnoha verzφ a mutacφ Linuxu (voln∞ Üi°iteln² unixov² systΘm na PC) jsme m∞li k dispozici jednu z poslednφch kompilacφ RedHat.
Typick²m problΘmem, na kter² u₧ivatel narazφ, jsou grafickΘ ovladaΦe neoptimalizovanΘ na konkrΘtnφ grafick² adaptΘr. Z tohoto d∙vodu je grafika o dost pomalejÜφ. Linux vÜak podßval velmi p°esv∞dΦivΘ v²kony, kterΘ jen potvrzujφ, ₧e UNIX jako takov² je na Internet ·pln∞ to nejlepÜφ. V²konov∞ se mu blφ₧ila prakticky jen OS/2.
Microsoft Internet Explorer 3.0 CZ a Netscape Navigator 3.0 Gold na Windows 95
Pod Windows 95 dßvaly oba prohlφ₧eΦe prakticky shodnΘ v²sledky. O n∞co rychlejÜφ byl ve dvou t°etinßch test∙ (v ostatnφch to bylo vφcemΘn∞ vyrovnanΘ) prohlφ₧eΦ od Microsoftu. Ten vÜak mnohdy chybn∞ nebo v∙bec neinterpretoval chybovΘ hlßÜky Javy.
Microsoft Internet Explorer 3.0 CZ na Windows NT
Na v²konn∞jÜφ platform∞ od Microsoftu se ji₧ v²razn∞ji projevil rozdφl ve zpracovßnφ applet∙ pod ob∞ma z testovan²ch prohlφ₧eΦ∙ ve prosp∞ch ΦeskΘho Exploreru. Applety b∞₧φ rychleji, ne₧ ve Windows 95, ale n∞kolikrßt se nßm stalo, ₧e se applet uprost°ed b∞hu zastavil a to i po opakovanΘm nahrßnφ. Rovn∞₧ se projevila urΦitß nekompatibilita s v²stupem javovsk²ch aplikacφ.
AnimovanΘ grafickΘ objekty na obrazovce blikajφ p°i ka₧dΘm p°ekreslenφ.
Netscape Navigator Gold 3.0 na Windows NT
O n∞co pomalejÜφ v²sledky podßval Navigator od Netscapu, kter² vÜak velmi v∞rn∞ hlßsil veÜkerΘ informace o stavu Φi chyb∞ v appletu. ChybovΘ hlßÜky byly zobrazovßny i v okn∞ prohlφ₧eΦe a nebylo tedy nutnΘ spuÜt∞t Java konzoli.
AnimovanΘ grafickΘ objekty na obrazovce blikajφ a navφc je mezi nimi jeÜt∞ delÜφ p°echod.
Netscape Navigator 2.02 na OS/2 4.0
Interpretace Navigatoru pod OS/2 je z velkΘ Φßsti p°ejata ze samotnΘho systΘmu, a tak se prohlφ₧eΦ starß prakticky pouze o grafickou Φßst. Rychlost je velmi vysokß, ale narazili jsme na problΘmy, kdy se v n∞kter²ch situacφch jednoduÜe nezobrazila animovanß bitmapa, i kdy₧ stavov² °ßdek hlßsil, ₧e applet b∞₧φ. Ve vÜech p°φpadech se vÜak tato nectnost zpravila potΘ, co jsme znovu nahrßli strßnku.
OS/2 z desktopu
NejlepÜφ v²sledky s prakticky dokonal²m grafick²m v²stupem a obrovskou rychlostφ i u velk²ch applet∙ ukßzaly testy u aplikacφ spouÜt∞n²ch p°φmo z plochy systΘmu OS/2. Na ploÜe se vßm otev°e okΘnko velkΘ tak, jak velkß je pracovnφ plocha appletu.
V testech byly v²sledky a₧ o 20 % (posunovßnφ bitmapov²ch lidsk²ch hlav a otßΦenφ drßt∞nΘho modelu) rychlejÜφ, ne₧ nejrychlejÜφ v²sledky v prohlφ₧eΦφch pod Windows NT.
Hlavnφ nev²hoda tkvφ v obtφ₧nΘ zm∞n∞ vstupnφch parametr∙ pro spouÜt∞nφ applet∙ (nap°. zda se mß ukazovat konzole). To se toti₧ provßdφ editacφ souboru config.sys a potΘ je nutnΘ restartovat poΦφtaΦ.
V klientsk²ch aplikacφch na Intranetu to vÜak nemusφ tolik vadit, nebo¥ ty se nastavφ jen jednou p°i instalaci systΘmu.
Pro labu₧nφky -- SGI O2
B∞hem naÜeho testu jsme m∞li mo₧nost vyzkouÜet b∞h javovsk²ch aplikacφ na poΦφtaΦi Silicon Graphics O2 s operaΦnφm systΘmem UNIX IRIX 6.3 pod prohlφ₧eΦem Netscape Navigator.
Optimalizace tohoto systΘmu mj. i pro b∞h javovsk²ch aplikacφ je rozhodn∞ znßt. P°i jejich spouÜt∞nφ prakticky nepoznßte, zda pochßzejφ z disku nebo z vyrovnßvacφ pam∞ti. Provoz i t∞ch nejnßroΦn∞jÜφch applet∙ byl dokonal², stejn∞ jako grafick² a animovan² v²stup. P°i otßΦenφ t°φrozm∞rn²ch drßt∞n²ch model∙ a stφnovan²ch model∙ molekul zde ke zhorÜenφ kvality nedoÜlo ani v p°φpad∞, ₧e nebyla vyu₧φvßna grafickß 3D akcelerace.
P°φklad b∞hu na tomto systΘmu jen napovφdß, kudy by se m∞ly ubφrat specializovanΘ sφ¥ovΘ poΦφtaΦe (NC) pro provoz javovsk²ch aplikacφ -- pokud nejsou vybaveny specializovan²m procesorem na Javu, tak by to m∞l b²t prßv∞ rychl² procesor RISCovΘ technologie, nebo¥ ani seberychlejÜφ Pentium ov∞ÜenΘ periferiemi nenφ schopnΘ s javovsk²mi aplikacemi (t°eba i pod systΘmem Windows NT) skuteΦn∞ efektivn∞ pracovat.
Hardware pro Javu
Z hlediska systΘmov²ch po₧adavk∙ nenφ Java p°φliÜ nßroΦnß. Vzhledem k tomu, ₧e jsou aplikace spouÜt∞ny p°es interpreter p°elo₧enΘho binßrnφho jazyka, budou v₧dy o n∞co pomalejÜφ, ne₧ aplikace nativnφ, zejmΘna v systΘmech, kde interpreter nenφ nedφlnou souΦßstφ systΘmu, ale je zde p°φtomen v podob∞ dalÜφ aplikace.
Vzhledem k univerzßlnosti v²stupnφho binßrnφho k≤du (pou₧itelnΘho i t°eba v ovladaΦi automatickΘ praΦky) je takΘ relativn∞ snadnΘ vybudovat akceleraΦnφ hardware, kter² bude Javu urychlovat tφm, ₧e bude vykonßvat n∞kterΘ nebo vÜechny funkce mimo hlavnφ procesor v odlad∞nΘm Φipu.
Platforma IBM PC
Na tΘto platform∞ pot°ebujete hardware odpovφdajφcφ alespo≥ minimßlnφ konfiguraci jednoho z podporovan²ch 32bitov²ch systΘm∙ (OS/2, UNIX, Windows 95, Windows NT). Na v²slednΘ rychlosti se nejv∞tÜφ mφrou podφlφ v²kon procesoru (ve vyÜÜφm pom∞ru ne₧ u b∞₧n²ch aplikacφ). Tedy i nepatrn²m zv²Üenφm v²konu docφlφte znatelnΘho rozdφlu. Na nejrychlejÜφch poΦφtaΦφch PC ji₧ b∞₧φ i slo₧itΘ Java-applety dost svi₧n∞.
Velk² vliv na v²kon mß takΘ grafickß karta, kterß by m∞la b²t dodßna s dobr²mi ovladaΦi podporujφcφmi jejφ akceleraΦnφ funkce.
Jako poslednφ bych uvedl velikost pam∞ti. JavovskΘ aplikace nejsou p°φliÜ nßroΦnΘ na tento systΘmov² prost°edek, ale pokud mßte spuÜt∞no mnoho aplikacφ najednou, tak p°φtomnost webovskΘho prohlφ₧eΦe v pam∞ti na rychlosti p°φliÜ nep°idß.
Minimßlnφ konfigurace
CPU: 486
RAM: 8 MB
Windows 95
DoporuΦenß konfigurace
CPU: Pentium 100 MHz
RAM: 16--32 MB
Network Computers
Sφ¥ovΘ poΦφtaΦe vyu₧φvajφcφ Javu nemajφ obvykle mnoho na v²b∞r. JedinΘ, co lze v°ele doporuΦit, jsou NC s v²konn²mi RISCov²mi procesory, nebo¥ v²robky n∞kter²ch firem, kterΘ obsahujφ nap°. slabΘ procesory 486, se na tyto aplikace vφcemΘn∞ nedajφ rozumn∞ pou₧φt. Pokud NC disponuje akceleraΦnφm Φipem, je to jen ku prosp∞chu. V tomto p°φpad∞ jsou aplikace mimo°ßdn∞ v²konnΘ.
DoporuΦenß konfigurace
CPU: RISC
RAM: 16 MB
Akcelerßtory Javy
P°esto₧e Java se jevφ jako v²konn² nßstroj, je dφky svΘ emulaci pomalejÜφ ne₧ nativnφ aplikace operaΦnφho systΘmu, kde je spouÜt∞na. Proto se objevujφ javovskΘ akcelerßtory, kterΘ majφ tento pom∞r zvrßtit.
Javovsk² akcelerßtor je mo₧nΘ si p°edstavit jako koprocesor, kter² pomocφ ovladaΦ∙ vykonßvß funkce Javy nebo funkce systΘmu, kterΘ Java vyu₧φvß. Dφky tomu, ₧e je vytvo°en pro provoz prßv∞ t∞chto procedur, vykonßvß je rychleji a nezat∞₧uje jimi vlastnφ procesor poΦφtaΦe.
Do b∞₧nΘho pΘcΘΦka Φi stanice s nφm ani moc nepoΦφtejte, alespo≥ ne v dneÜnφ dob∞. Pokud chcete provozovat applety Javy a zdajφ se vßm pomalΘ, upgradujte procesor nebo p°ejd∞te na jin² operaΦnφ systΘm. Akcelerßtory jsou dnes pot°eba p°edevÜφm tam, kde se rychlost program∙ psan²ch v Jav∞ jevφ jako kritickß. Tedy ne na poΦφtaΦi domßcφho u₧ivatele, kter² s Javou p°ijde do styku zatφm jen v podob∞ skßkajφcφho textu na Internetu, ale u rozsßhl²ch sφtφ vyu₧φvajφcφch javovskΘ aplikace primßrn∞, tedy i p°i pou₧itφ s pracovnφmi stanicemi nebo sφ¥ov²mi poΦφtaΦi (NC).
Network Computers a Java
Ji₧ jsme si °ekli, ₧e javovskΘ aplikace pot°ebujφ pro svΘ spuÜt∞nφ prakticky jen prohlφ₧eΦ a operaΦnφ pam∞¥ poΦφtaΦe. Toho se s v²hodou dß vyu₧φt v nov∞ nastupujφcφ technologii zvanΘ Network Computers (NC).
Co to je NC
V dobßch centralizovan²ch v²poΦetnφch systΘm∙, kter²m dominovaly obrovskΘ sßlovΘ mainframy IBM, byl klient napojen na server pomocφ textovΘho terminßlu. JednotlivΘ stanice byly nenßkladnΘ a zcela snadnß byla i ·dr₧ba a instalace programovΘho vybavenφ. V²kon byl nejvφce ovlivn∞n rychlostφ serveru prost°edk∙ (resource server), a tedy veÜkerΘ investice se toΦily jen okolo t∞chto stroj∙ -- nebo¥ veÜkerΘ aplikace, pou₧φvanΘ klienty, byly zpracovßvßny prßv∞ zde. Tento systΘm byl vhodn² pro instituce typu velk²ch firem Φi bank, kterΘ m∞ly tisφce zam∞stnanc∙ -- administrßtor nemusel nikde pobφhat, vÜe, vΦetn∞ instalace programovΘho vybavenφ, °φdil ze svΘho pracoviÜt∞. Pak se ale objevil po₧adavek na grafickΘ u₧ivatelskΘ rozhranφ a zaΦaly se budovat rozsßhlΘ sφt∞ klient/server. Ka₧dß klientskß stanice p°iÜla na zdaleka ne zanedbatelnou Φßstku, m∞la vlastnφ disk, obrovskou pam∞¥ a software byl instalovßn mnohonßsobn∞ -- na ka₧d² poΦφtaΦ jednou. ┌dr₧ba se stala peklem stejn∞ jako jak²koliv upgrade nebo zm∞na. Nov∞ p°φchozφ klient dostal nejprve plnohodnotn² poΦφtaΦ, na ten se musel nainstalovat operaΦnφ systΘm, potΘ veÜkerΘ aplikace a nßsledn∞ se musela nakonfigurovat sφ¥ -- jakßkoliv zm∞na byla p°itom noΦnφ m∙rou pro administrßtora, kter² i p°i banßlnφ chyb∞, kdy u₧ivateli t°eba nefunguje tiskßrna, musel dotyΦnΘho osobn∞ navÜtφvit a "pohrßt" si s jeho nastavenφm.
Novß doba si ₧ßdß novΘ prost°edky. Z tohoto d∙vodu se v²voj vracφ k centralizovan²m systΘm∙m, kterΘ po celΘ mezidobφ udr₧ovala ve svΘ nabφdce prakticky pouze IBM. Novß specifikace nazvanß, Network Computers, mß spojit v²hody obou °eÜenφ a odstranit nev²hody, kterΘ ka₧dΘ z nich mß. M∞l by to b²t jak²si grafick² terminßl, jeho₧ hlavnφ aplikacφ bude webovsk² prohlφ₧eΦ -- vÜe ostatnφ (p°φstup ke zdroj∙m a aplikacφm) by m∞l b²t shodn² se star²mi terminßly. Aplikace se vÜak mohou spouÜt∞t i u klienta.
Zam∞°enφ
V prvnφ zßkaznickΘ vln∞ pro °eÜenφ NC by m∞ly dominovat velkΘ podniky, kterΘ o₧ivφ sv∙j stßvajφcφ systΘm textov²ch terminßl∙, nebo vybudujφ zcela novou sφ¥. Tito zßkaznφci by m∞li prosazovat politiku nßkupu kvalitnφch stanic a vysoce v²konnΘho serveru (nemusφ b²t p°itom jen jeden).
Ve druhΘ vln∞ zφskßvßnφ zßkaznφk∙ by se m∞li p°ipojit i soukromφ u₧ivatelΘ, kte°φ by si zakoupili NC jako standardnφ domßcφ elektronick² spot°ebiΦ, kter² by jim umo₧≥oval vyu₧φvat vÜech v²hod Internetu a elektronickΘho publikovßnφ. Bootovacφ server a server prost°edk∙ by pak vlastnil poskytovatel p°ipojenφ na Internet. PoΦφtß se s digitßlnφmi sφt∞mi ISDN, i kdy₧ p°ipojenφ komutovanou telefonnφ linkou je v zßsad∞ takΘ mo₧nΘ.
NC °eÜenφ je vÜak takΘ velmi jednoduchΘ na obsluhu u₧ivatelem, pomocφ hypertextov²ch strßnek internetovΘho charakteru nenφ nutnΘ zvlßÜ¥ dlouhΘ Ükolenφ.
Hardware pro NC
Podle specifikace Network Computers je sφ¥ov² poΦφtaΦ bezdiskovß pracovnφ stanice pro sφ¥ TCP/IP. Jejφ hardwarovΘ vybavenφ se sklßdß z operaΦnφ pam∞ti, procesoru, grafickΘho subsystΘmu, °adiΦe port∙ a sφ¥ovΘ karty. Vn∞jÜφ periferie zahrnuje minimßln∞ monitor, klßvesnici a myÜ.
SystΘm ve svΘm firmwaru (software tvo°φcφ funkce poΦφtaΦe, napevno umφst∞n² do nesmazatelnΘ Φßsti pam∞ti) musφ obsahovat podporu sφt∞ TCP/IP a mo₧nost vzdßlenΘho zavedenφ operaΦnφho systΘmu (remote-boot).
KlientskΘ poΦφtaΦe jsou ji₧ dnes na trhu za velmi zajφmavΘ ceny. Prodßvß je nap°φklad IBM (jak jinak) a Sun, jeho₧ jmΘno JavaStation napovφdß, proΦ si o NC povφdßme v tomto tΘmatu.
Serverem je v podstat∞ b∞₧n² intranetov² server s p°idanou podporou t∞chto stanic. Dnes ji₧ mß celΘ °eÜenφ v nabφdce mnoho vedoucφch firem, p∙sobφcφch na trhu.
V praxi se obvykle °eÜφ samostatn∞ server prost°edk∙ (tiskßrny, disky, aplikace) a boot server, nebo¥ ob∞ funkce se vzßjemn∞ zpomalujφ, a je proto vhodnΘ je rozd∞lit.
Software pro NC
Network Computers pou₧φvajφ klientsky nebo serverov∞ orientovanΘ aplikace, kterΘ jsou ulo₧eny na discφch serveru, kde jsou uklßdßny takΘ v²sledky prßce klient∙ (nap°. dopisy nebo texty). Aplikace jsou specißln∞ programovanΘ v jazycφch podporujφcφ klient/serverovΘ rozhranφ (nap°. naÜe znßmß Java), ale pomocφ specißlnφho softwaru je mo₧nΘ vyu₧φvat i n∞kterΘ b∞₧nΘ aplikace, na kterΘ jste zvyklφ.
Vzhledem k tomu, ₧e NC byly stvo°eny pro sφt∞ Internetu Φi Intranetu, nabφzφ se okam₧it∞ mo₧nost vyu₧φvat webovsk² prohlφ₧eΦ namφsto pracovnφ plochy. VÜechny programy pou₧φvanΘ u₧ivateli stanic by mohly b²t vytvo°eny i v²hradn∞ v Jav∞.
V praxi by tedy vÜe vypadalo asi takto: u₧ivatel by spustil svou stanici (NC). Po krßtkΘm bootu by se p°ed nφm objevila ·vodnφ strßnka bootovacφho serveru ve webovskΘm prohlφ₧eΦi. Zde by se u₧ivatel p°ihlßsil k sφti. Po p°ihlßÜenφ by prohlφ₧eΦ byl sm∞rovßn na server zdroj∙, kde by ji₧ v pln∞ zabezpeΦenΘm prost°edφ dostal u₧ivatel na v²b∞r operace, kterΘ m∙₧e provßd∞t. Tato ·vodnφ strßnka by m∞la roli pracovnφ plochy, a tak byste t°eba mohli i povolit, aby si ka₧d² u₧ivatel vytvo°il svou vlastnφ. Odtud by se spouÜt∞ly r∙znΘ aplikace, psala poÜtu, atd. -- prost∞ by zde vÜe vφcemΘn∞ probφhalo tak, jak jsme si ji₧ staΦili zvyknout.
Pokud by navφc vÜechny aplikace byly vytvo°eny v Jav∞, nenastanou prakticky ₧ßdnΘ problΘmy -- tyto dv∞ technologie se p°φmo podporujφ, co₧ v praxi znamenß, ₧e nebudete muset tak°ka nic p°ed∞lßvat. P°ipojenφ bude pro vÜechny u₧ivatele stejnΘ -- jak pro ty, co jsou p°ipojeni p°es lokßlnφ sφ¥, tak i pro u₧ivatele p°ipojenΘ vzdßlen∞ p°es Internet, pro u₧ivatele vÜech platforem a nejen NC. Zprovozn∞nφ dalÜφch aplikacφ je u ka₧dΘ varianty jinΘ, ale v∞tÜinou vφce omezujφcφ.
Intranet a Java
V poslednφ dob∞ se technologie Intranet stala jednφm z dominantnφch zp∙sob∙ °eÜenφ podnikov²ch sφtφ, nebo alespo≥ jejich Φßstφ. V praxi p°edstavuje Intranet poskytnutφ tradiΦnφch internetovsk²ch slu₧eb (www, ftp, news...) u₧ivatel∙m lokßlnφ sφt∞, ale nemusφ p°itom rozhodn∞ z∙stat jen u toho.
Zßkladnφ Intranet
P°edstavte si, ₧e vaÜe firma mß sv∙j vlastnφ fyzick² internetov² server (tedy poΦφtaΦ u vßs ve firm∞, nikoliv jen strßnky na Internetu). Pokud jej p°ipojφte na vaÜi lokßlnφ sφ¥, zφskßte nejjednoduÜÜφ variantu Intranetu. Pracovnφci ve vaÜφ firm∞ nemusφ mφt na serveru jinΘ mo₧nosti, ne₧ b∞₧nφ u₧ivatelΘ p°istupujφcφ p°es Internet, ale nebudou muset pou₧φvat modemovΘ p°ipojenφ pro p°φstup na server a do celΘho Internetu.
RozÜφ°en² Intranet
Zcela b∞₧n∞ se vÜak firemnφ server, nebo jeho subdomΘna, konfiguruje a vybavφ takΘ pro provoz n∞kter²ch specißlnφch slu₧eb, urΦen²ch pro zam∞stnance, p°φpadn∞ takΘ zßkaznφky. Tyto slu₧by jsou ji₧ zabezpeΦenΘ proti neoprßvn∞nΘmu p°φstupu, ale nenφ pot°eba jeÜt∞ vypracovßvat p°ihlaÜovacφ p°edpisy. Obvykle se takto zve°ej≥ujφ r∙znΘ firemnφ informace (v²v∞sky), novinky, nabφdky vedenφ firmy, cenφky, firemnφ aplikace a nßstroje atd.
Autorizace p°φstupu se obvykle °eÜφ pomocφ IP adres. V²hodou je, ₧e m∙₧ete povolit autorizovanΘ p°ihlßÜenφ i u₧ivateli, kter² nenφ ·Φastnφkem lokßlnφ sφt∞, ani se nep°ipojuje modemem na server.
V tomto a p°edchozφm p°φpad∞ vßm Java pom∙₧e -- stejn∞, jako kdekoliv jinde na Internetu, m∙₧ete ji vÜak vyu₧φt takΘ pro funkce rozÜφ°enΘho Intranetu, nap°. pro vyhledßvßnφ informacφ, nebo vytvo°enφ pr∙vodce novinkami.
AplikaΦnφ Intranet
Intranetov² server vÜak je mo₧nΘ vyu₧φt takΘ jako jeden z hlavnφch, hlavnφ, Φi jedin² aplikaΦnφ a zdrojov² server. K tomu je vÜak nutnΘ zajistit, aby se neautorizovan² u₧ivatel podφval jen tam, kam m∙₧e. Proto je zapot°ebφ, aby se u₧ivatel p°ed vstupem na server p°ihlßsil u₧ivatelsk²m jmΘnem a heslem. P°es Intranet si pak mohou vaÜi zam∞stnanci nejen spouÜt∞t aplikace, ale takΘ zφskßvat veÜkerΘ informace a uklßdat a zφskßvat data stejn∞ jako z b∞₧nΘho LAN serveru.
Vzhledem k vysokΘ cen∞ dat umφst∞n²ch na takovΘmto serveru existuje obecnΘ doporuΦenφ, aby chrßn∞n² server byl subdomΘnou (local.firma.cz) vaÜeho firemnφho serveru (firma.cz). ZabezpeΦφte jej pak mnohem snadn∞ji a budete takΘ mnohem klidn∞ji spßt, pokud budete v∞d∞t, ₧e desetitisφce vn∞jÜφch u₧ivatel∙ brouzdajφ na jinΘm serveru (subdomΘnu m∙₧ete nap°. na noc vypφnat, abyste zabrßnili pr∙nik∙m). K aplikaΦnφmu Intranetu takΘ nejvφce vyu₧ijete Javu ve funkci primßrnφho nßstroje pro tvorbu sv²ch aplikacφ. Ka₧d² u₧ivatel bude moci mφt zcela jinou poΦφtaΦovou platformu a vy budete p°esto stßle pßnem nad v∞cφ. Budete moci vyu₧φvat prohlφ₧eΦe, kancelß°skΘ nßstroje a dalÜφ aplikace psanΘ p°φmo v Jav∞.
Zßv∞r
P°esto₧e se najde mnoho skeptik∙, kte°φ pova₧ujφ Internet a jeho stßle ne zcela ujasn∞nou lokßlnφ variantu, Intranet, za nevyvinutou do pot°ebn²ch rozm∞r∙, ji₧ dnes je mo₧nΘ pomocφ dostupn²ch prost°edk∙ vytvo°it i ty nejnßroΦn∞jÜφ aplikace. SpoleΦenstvφ u₧ivatel∙ i v²vojß°∙ kolem Internetu je spoleΦenstvφm velmi progresivnφm, a tak se jakΘkoliv novΘ standardy velmi rychle rozvφjejφ, vytvß°ejφ se novΘ a hlavn∞: vÜe se velmi rychle uplat≥uje v praxi. Internet je toti₧ p°esn∞ tφm p°φpadem, kter² je vysti₧en p°φslovφm, "Kdo chvφli stßl... ji₧ je mimo", a tak se velmi snadno m∙₧e stßt, ₧e zatφmco vaÜe konkurence bude Javu pou₧φvat pro animaci svΘho loga na titulnφ strßnce, vy ji₧ budete mφt kompletn∞ zpracovan² nabφdkov² list v²robk∙ vΦetn∞ p°φstupu do SQL databßze, verifikace u₧ivatelskΘho p°φstupu, a, v neposlednφ °ad∞, s vynikajφcφm u₧ivatelsk²m rozhranφm. VaÜe firemnφ sφ¥ ji₧ nebude obsahovat stovky pΘcΘΦek se stovkou instalacφ operaΦnφho systΘmu a stovkou instalacφ textovΘho editoru, ale bude se sklßdat z n∞kolika stovek sφ¥ov²ch poΦφtaΦ∙, kterΘ si p°es webovsk² prohlφ₧eΦ i tisknou na sφ¥ovΘ tiskßrn∞.
Interaktivnφ Web, jeho programovacφ jazyky, v²vojovΘ prost°edky, skripty a multimΘdia -- to jsou hnacφ motory, bez kter²ch by World Wide Web nikdy nebyl k niΦemu jinΘmu ne₧ k prohlφ₧enφ textov²ch a obrazov²ch informacφ, kde interakce zaΦφnß a konΦφ stisknutφm podtr₧enΘho textu.
Bez v²vojov²ch nßstroj∙ by Internet takΘ nemohl slou₧it ke komerΦnφm ·Φel∙m, a p°itom zde je to pravΘ mφsto pro vystav∞nφ svΘho obch∙dku -- denn∞ sem chodφ stamiliony lidφ, kterΘ mohou mφt o vaÜe zbo₧φ zßjem a kte°φ vßm tudy budou i platit, potΘ co se zavede bezpeΦn² standard pro elektronickΘ penφze. A pokud se vßm nelφbφ ani mo₧nost nechat si dovΘzt pravou chicagskou pizzu spediΦnφ slu₧bou z Chicaga a₧ k vßm dom∙ a celou jejφ cestu sledovat na Internetu, ani₧ byste sami vytßhli paty z domu, pak vßs dokß₧e snad pot∞Üit jen n∞jakß dobrß hra. Na Internetu. A programovanß v Jav∞. Ale pochopiteln∞ a₧ potΘ, co se dozvφte z p°ehlednΘho grafu, jak si stojφ vaÜe akcie na burze, ono je to vÜak naÜt∞stφ vÜe v jedinΘm okn∞ -- ve webovskΘm prohlφ₧eΦi.
Technologie Java
+ obrovskΘ mo₧nosti
+ v²vojov² nßstroj i pou₧itφ zdarma
+ parametrickΘ programovßnφ
+ rozÜφ°enß a multiplatformnφ
+ v²konnß i pro rozsßhlΘ aplikace
+ nevy₧aduje podporu serveru
+ dobrß bezpeΦnost
- snadnΘ "kradenφ" hotov²ch aplikacφ
- omezenΘ vstupn∞ v²stupnφ funkce kv∙li platformnφ nezßvislosti
V²robce: Sun Microsystems
Technologie JavaScript
+ dobrΘ mo₧nosti
+ snadn² v²voj aplikacφ
+ slab∞ typovan² jazyk zrychluje v²voj
+ nevy₧aduje podporu serveru
+ je podporovßn prohlφ₧eΦi
+ podporuje u₧ivatelskΘ funkce prohlφ₧eΦe
- dlouho jsem si lßmal hlavu nad tφm, jakΘ mß zßpory
V²robce: Netscape Communications
Technologie ActiveX
+ v²razn∞ rozÜi°uje mo₧nosti programovacφch postup∙ na Internetu
+ vhodn∞ navr₧en² pro dynamick² p°echod na Intranet
+ vysokΘ mo₧nosti
+ nevy₧aduje podporu serveru
- problematickß podpora vφce platforem a prohlφ₧eΦ∙
- dφky svΘ neodd∞lenosti od systΘmu komplikuje v²voj nativnφch aplikacφ
V²robce: Microsoft
Technologie CGI-Skript
(podle platforem)
+ platformnφ zßvislost umo₧≥uje v²voj nejslo₧it∞jÜφch v²konn²ch aplikacφ
+ p°φstup ke specißlnφm funkcφm systΘmu a mo₧nost komunikace s dalÜφmi aplikacemi na serveru
+ podporovßn prakticky vÜemi prohlφ₧eΦi
+ klientsky nezßvisl² na systΘmu
- snadn² odposlech posφlan²ch dat
- neumo₧≥uje zpracovat Φßst dat u klienta
SlovnφΦek pojm∙
CGI-Script - platformn∞ zßvislΘ binßrnφ nebo textovΘ skripty spouÜt∞nΘ na serveru na podn∞t klienta
Daemon - oznaΦenφ pro server slu₧by (z UNIXu) b∞₧φcφ na pozadφ
DNS - server nebo slu₧ba poskytujφcφ informace o domΘnov²ch jmΘnech a IP adresßch ostatnφm klient∙m a server∙m na TCP/IP sφti
DomΘna - Φßst sφt∞ okolo domΘnovΘho serveru
Frames(rßmce) - oznaΦenφ pro metodu, p°i kterΘ je v jednom okn∞ prohlφ₧eΦe zobrazeno najednou vφce HTML strßnek
GUI - grafickΘ u₧ivatelskΘ rozhranφ p°edstavuje nahrazenφ textov²ch dialog∙ grafick²mi objekty (tlaΦφtka, ikony, editovatelnß pole...), se kter²mi se Φlov∞ku pracuje p°irozen∞ji.
IP adresa - 32bitov² rozpoznßvacφ k≤d protokolu TCP/IP je slo₧en ze Φty° osmibitov²ch Φφsel odd∞len²ch teΦkami. Jednotlivß Φφsla majφ v²znam priority podsφtφ, domΘn a stanic.
NC - Network Computer -- myÜlenka terminßlov²ch bezdiskov²ch systΘm∙ p°evedena do grafickΘho u₧ivatelskΘho rozhranφ. Jednφm z hlavnφch kritΘriφ pro vyu₧itφ NC je prßv∞ podpora Javy.
Skript - univerzßlnφ oznaΦenφ pro p°edpis, podle kterΘho se vykonßvajφ p°edem definovanΘ instrukce. P°φkladem skriptu m∙₧e b²t nap°. i dßvkov² soubor v DOSu nebo v²pis programovacφho jazyka REXX pod OS/2.
TCP/IP - obousm∞rn² komunikaΦnφ protokol lokßlnφch a vzdßlen²ch sφtφ zalo₧en²ch na unikßtnφm 32bitovΘm rozpoznßvacφm k≤du -- IP adrese
URL - lokaΦnφ znaΦka zdroje na TCP/IP sφti. Je tvo°ena bu∩ celou adresou k objektu obsahujφcφ domΘnovΘ jmΘno, nebo IP adresu serveru a protokol (http://mujserver.com/obrazky/pokus.gif, ftp://96.13.1.62/multimedia/zvuky/wav/soubor.wav nebo relativnφ odkaz na objekt na stejnΘm serveru sestßvajφcφ se z adresß°ovΘ (nebo asociovanΘ) cesty (../obrazky/obr.jpg, dokumenty/mujtext.lwp, /index.htm).
Zdroje a odkazy na Internetu t²kajφcφ se jazyku Java a interaktivnφho WWW
http://www.javasoft.com - domovsk² server jazyku Java, zde naleznete novΘ verze, podporu, aplikace i rozvφjejφcφ se dokumentaci
http://www.sun.com - server firmy Sun, kterß je p∙vodcem Javy, naleznete zde mnoho informacφ a detaily o hardwarovΘ podpo°e
http://www.netscape.com - server firmy Netscape, kterß je zodpov∞dnß za nejrozÜφ°en∞jÜφ prohlφ₧eΦ Navigator a je p∙vodcem mnoha internetov²ch standard∙, vΦetn∞ jazyka JavaScript.
http://www.activex.com - domovskΘ sφdlo technologie ActiveX
Pou₧itelnost jednotliv²ch metod na webovskΘ aplikace
Nßzev °eÜenφ, p°φklad
CGI-skΦe. Majφ omezenΘ nebo ₧ßdnΘ mo₧nosti p°φstupu na disk serveru, nebo¥ se nem∙₧eme spolΘhat, ₧e aplikace (nap°φklad napsanß Φi p°epsanß u₧ivatelem) bude data pou₧φvat jen pro neÜkodnΘ brouzdßnφ.
Pokud mß b²t klientskß aplikace chrßn∞nß, musφ vy°eÜit problematiku p°φstupu na server pomocφ u₧ivatelskΘho jmΘna a hesla, co₧ je ov∞°ovßno serverem -- vlastnφ v²konnΘ jßdro je tedy op∞t na serveru.
P°φkladem u₧ivatelskΘ aplikace m∙₧e b²t nap°φklad program psan² v JavaScriptu a p°φklad chrßn∞nΘ aplikace m∙₧e b²t klient protokolu FTP.
Serverov∞ zalo₧enΘ programy jsou umφst∞nΘ na disku serveru a klient ₧ßdß server o jejich spuÜt∞nφ. U₧ivatel tedy nemß Üanci spat°it k≤d aplikace a v²sledky dostane generovanΘ obvykle do okna prohlφ₧eΦe. V²hoda spoΦφvß v tom, ₧e nßvÜt∞vnφk strßnek obvykle vφ jen to, jak se spouÜt∞nß aplikace jmenuje, ale nevφ, jak, kde a s Φφm pracuje. Touto metodou se °eÜφ vÜechny aplikace zalo₧enΘ na skriptech CGI a mnoho dalÜφch. Jejich hlavnφ v²hoda spoΦφvß v bezpeΦnosti, u kterΘ si m∙₧ete dovolit i to, aby neznßm² nßvÜt∞vnφk vaÜich strßnek prost°ednictvφm t∞chto aplikacφ zapsal svΘ ·daje na vßÜ server (nap°φklad u aplikace nßvÜt∞vnφ knihy, registrace produktu, atd.). Na druhou stranu nev²hoda CGI spoΦφvß v tom, ₧e jedinou komunikaΦnφ cestou je °ßdka URL, do kterΘ se vÜechny ·daje musφ zapsat. To je nebezpeΦnΘ zejmΘna pro u₧ivatele. Pokud zde nap°φklad uvßdφ Φφsla kreditnφch karet, nebo hesla pro p°ihlßÜenφ, je snadnΘ tato data z URL k≤dovßnφ dostat zp∞t (stejnou metodou, jako potΘ CGI-skript). O n∞co lΘpe jsou °eÜitelnΘ serverovΘ aplikace v Jav∞, kde je bezpeΦnost vysokß i pro u₧ivatele.
P°φklady vzhledu a tvorby nßstroj∙ interaktivnφho Webu:
Aplikace -- Java Script
Tato aplikace psanß v JavaScriptu vyu₧φvß formulß° obsahujφcφ vstupnφ textovΘ pole a tlaΦφtko. Pokud do vstupnφho pole vepφÜete text a stlaΦφte Enter nebo tlaΦφtko, JavaScript se podφvß do seznamu a najde webovskou strßnku odpovφdajφcφ zadanΘmu textu. Pokud text nenφ v seznamu nalezen, nebo je chybn², zobrazφ se chybovß hlßÜka a zv²raznφ se vstupnφ pole, aby u₧ivatel mohl text p°epsat.
Zde je kompletnφ v²pis HTML strßnky.
<html>
<head>
<title>Navigace.</title>
<SCRIPT LANGUAGE="JavaScript">
var well="";
var comm="";
function checkform(thisform){
comm=thisform.prompt.value;
// kontrola vepsanΘho textu
if(comm=="idg") well="http://www.idg.cz";
if(comm=="bmw") well="http://www.bmw.de";
if(comm=="webcrawler") wellhttp://www.webcrawler.com";
if(well==""){
alert("Prikaz je neplatny.");
thisform.prompt.focus();
thisform.prompt.select();
return false;
}else {
parent.location=well;
}
return false;
}</SCRIPT>
</head>
<body text="#FFFF80" bgcolor="#000000" link="#FFFF00" vlink="#0000FF" alink="#FF8000">
<form method="POST" ACTION="noindex.htm" onSubmit="return checkform(this)"></p>
<p>Zadejte p°φkaz <input type=text size=50 maxlength=256 name="prompt"><input type=submit name="poslat" value="Spustit"></p>
<p></form>
Powered by JavaScript<br>
</body>
</html>
Aplikace -- Java
Tato aplikace je psanß v Jav∞. Jednß se o upravenou verzi poskakujφcφho textu z balφku Java Developers Kit firmy Sun. Jako parametr se p°edßvß text, kter² mß poskakovat. Na k≤du je z°eteln∞ viditelnΘ pou₧itφ vφcetaskovΘ ·lohy.
V²pis HTML strßnky:
<html>
<head>
<title>Poskakujφcφ text.</title>
</head>
<hr>
<applet code="NervousText.class" width=200 height=50>
<!-- text, kter² bude poskakovat:>
<param name=text value="Computerworld">
</applet>
</html>
A zde je v²pis souboru "NervousText.java". P°ed pou₧itφm nutno p°elo₧it do souboru "NervousText.class" (jmΘno souboru musφ b²t shodnΘ, jinak by se musela p°epsat strßnka a zdrojov² text). V²sledn² applet je nutnΘ mφt ve stejnΘm adresß°i, jako strßnku, nebo zm∞nit ve strßnce odkaz.
import java.awt.Graphics;
import java.awt.Font;
public class NervousText extends java.applet.Applet implements Runnable {
char separated[];
String s = null;
Thread killme = null;
int i;
int x_coord = 0, y_coord = 0;
String num;
int speed=35;
int counter =0;
boolean threadSuspended = false; public void init() {
resize(150,50);
setFont(new Font("TimesRoman",Font.BOLD,36));
// zφskßnφ parametru z webovskΘ strßnky
s = getParameter("text");
if (s == null) {
s = "Computerworld";
}
separated = new char [s.length()];
s.getChars(0,s.length(),separated,0);
}
public void start() {
if(killme == null) {
killme = new Thread(this);
killme.start();
}
}
public void stop() {
killme = null;
}
public void run() {
while (killme != null) {
try {Thread.sleep(100);} catch (InterruptedException e){}
repaint();
}
killme = null;
}
public void paint(Graphics g) {
for(i=0;i<s.length();i++)
{
x_coord = (int) (Math.random()*10+15*i);
y_coord = (int) (Math.random()*10+36);
g.drawChars(separated, i,1,x_coord,y_coord);
}
}
public boolean mouseDown(java.awt.Event evt, int x, int y) {
if (threadSuspended) {
killme.resume();
}
else {
killme.suspend();
}
threadSuspended = !threadSuspended;
return true;
}
}
|