
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;
}
}
|