JSP, ASP, PHP -- udělejte si pořádek ve zkratkách!

Statický Web je mrtev. Stránky se stále častěji přeměňují na aplikace počínaje obchodním domem a konče podnikový...


Statický Web je mrtev. Stránky se stále častěji přeměňují na aplikace počínaje
obchodním domem a konče podnikovým informačním systémem. Vývojář těchto
aplikací má přitom k dispozici mnoho technologií, které může použít: CGI,
ISAPI, FastCGI, ASP, PHP, servlety, JSP, ColdFusion... Stále větší oblibě se
přitom těší jazyky, které se zapisují přímo do HTML kódu stránky (HTML embeded).
Společným rysem všech výše uvedených technologií je dynamické generování HTML
stránek na základě požadavku klienta. Uživatel si pomocí prohlížeče vyžádá
stránku. Požadavek je předán serveru, ten spustí požadovaný skript (program) a
vygenerovaný HTML kód pošle zpět prohlížeči k zobrazení. Skripty na straně
serveru mají tu velkou výhodu, že nepotřebují podporu speciálních technologií v
prohlížeči. Stačí, když prohlížeč umí zobrazit HTML stránku.
Psaní skriptů v klasických jazycích (jako je C nebo C++) je poměrně zdlouhavé a
nepohodlné. Proto se stále častěji používají jednoduché skriptové jazyky, které
se kombinují s HTML kódem. Technologie jsou dnes již tak vyspělé, že na
převážnou většinu aplikací toto řešení svým výkonem stačí. V dnešním článku se
proto podíváme na tato moderní prostředí, která umožňují dynamické generování
webových stránek.
ASP
ASP (Active Server Pages) jsou asi nejznámější technologií používanou pro
tvorbu webových aplikací (http://msdn.microsoft.
com/library/tools/aspdoc/iiwawelc.htm). Autorem ASP je Microsoft, a proto
podporu ASP naleznete ve webových serverech IIS (Internet Information Server) a
PWS (Personal Web Server). V praxi to znamená, že stačí nainstalovat Windows
98, Windows NT Server nebo Windows 2000 a můžete začít psát skripty. Do
ostatních verzí Windows (95 a NT Workstation) lze webový server s podporu ASP
doinstalovat. Připočteme-li k tomu, že ASP skripty lze psát v jazyce VBScript,
který je velice podobný Visual Basicu, jsou ASP logickou volbou pro všechny
vývojáře, kteří si oblíbili produkty Microsoftu. Marketing v tomto případě také
udělal své, a mnoho lidí dnes zkratku ASP chápe jako ekvivalent pro všechny
technologie používané pro dynamické generování stránek.
Na rozdíl od většiny ostatních produktů nejsou ASP svázány s žádným konkrétním
programovacím jazykem. ASP využívají rozhraní ActiveX Scripting a díky němu lze
pro psaní ASP použít libovolný jazyk, který toto rozhraní podporuje. Microsoft
standardně nabízí VBScript a JScript (obdoba JavaScriptu). Oba jazyky jsou však
velice jednoduché, a na psaní složitějších webových aplikací se proto moc
nehodí. Naštěstí lze použít i jiné jazyky.
Firma ActiveState (http://www. activestate.com) nabízí port Perlu pro Windows.
Ten obsahuje i PerlScript, což je implementace Perlu s rozhraním ActiveX
Scripting. Spojením Perlu s ASP získáme už opravdu mocný nástroj. Microsoft
nedávno poskytl firmě ActiveState finanční podporu na zlepšení funkčnosti Perlu
ve Windows. Možná, že v další verzi Windows bude interpret Perlu jejich
standardní součástí. Fajnšmekři si do ASP mohou přidat podporu moderního
objektového jazyka Python. Příznivci IBM mohou použít svůj oblíbený REXX, který
podporovaly jak sálové počítače, tak i OS/2.
Omezené možnosti standardně dodávaných jazyků VBScript a JScript se snaží ASP
vyvážit možností využívání COM objektů. Standardně ASP obsahují objekty, které
umožňují čtení dat z formulářů, zasílání odpovědi a nastavování HTTP hlaviček,
práci se session proměnnými a komunikaci s databázemi pomocí ODBC. I přesto
postrádají ASP mnoho funkcí, které nabízejí ostatní prostředí. Při psaní
profesionálních aplikací se proto neobejdete bez dalších komponent, které si
většinou musíte buď koupit, nebo sami naprogramovat. Pomocí ASP pak komponenty
poskládáte ve funkční aplikaci.
Portace ASP mimo platformy Microsoftu
Velkou nevýhodou ASP bylo jejich úzké svázání s technologiemi Microsoftu. ASP
běží jen v prostředí webových serverů Microsoftu, které zase existují pouze ve
verzích pro Windows. O přenositelnosti na komerční verze UNIXu, které nabízejí
vyšší bezpečnost a výkon než NT, si bylo možno nechat jen zdát. V poslední době
se však objevují různé projekty, které se snaží přenést funkčnost ASP na další
platformy.
Pro unixové platformy existuje Chilli!ASP, třebaže stabilita ani výkon tohoto
systému není nikterak oslňující. Na platformu Apache a UNIXu se snaží
technologii ASP a ActiveX Scripting přenést i jeden Open Source projekt, jehož
první výsledky jsou již k dispozici (http://www.activescripting.org).
PHP
Mnozí vizionáři tvrdí, že v 21. století nastane konec komerčního softwaru a
úspěšné budou především Open Source projekty. Osobně jejich názor zcela
nesdílím, nicméně na poli skriptových jazyků pro tvorbu webových aplikací již
komerčním systémům možná opravdu zvoní hrana.
Skriptový jazyk PHP (http:// www.php.net) si nenese žádné břímě z minulosti.
Vznikl speciálně pro tvorbu webových aplikací. Jeho syntaxe proto přebrala to
nejlepší z jazyků jako C, Java a Perl a doplnila to obrovskou knihovnou funkcí,
které jsou při psaní skriptů potřeba.
To, co si pro ASP musíme obstarávat ve formě komponent, máme v PHP přímo k
dispozici upload souborů, generování obrázků, XML parser, výkonné řetězcové
funkce apod. Kromě databázového rozhraní ODBC podporuje PHP přímo i nativní
rozhraní většiny databázových serverů. Standardně je k dispozici i podpora
většiny síťových protokolů LDAP, IMAP, POP3, FTP, SNMP, SMTP a další. PHP
zvládne i generování PDF dokumentů. Protože PHP je Open Source projekt, je do
něj neustále přidávána podpora nových, zajímavých a hlavně užitečných knihoven
funkcí.
PHP verze 4
Výhodou PHP je jeho dostupnost pro několik platforem. PHP existuje ve verzích
pro UNIX a Windows. Existují i verze pro Macintosh a OS/2. Přenesení na další
platformy není nikterak obtížné. Volnost máte i při výběru webového serveru:
PHP se rozeběhne na libovolném serveru, který podporuje rozhraní CGI. Pro
dosažení optimálního výkonu je dobré provozovat jej jako modul serveru Apache
nebo jako ISAPI modul pod windowsovými servery.
V současné době je aktuální verze PHP4, která je zatím ve stadiu beta-testů.
Vývojáři doufají, že ještě během prvního čtvrtletí roku 2000 bude k dispozici
ostrá verze systému. Oproti předchozí verzi přináší PHP4 především řádové
zvýšení výkonu. Mezi další novinky patří podpora session proměnných, možnost
přímého využívání COM/DCOM objektů a javových tříd. Na přání mnoha uživatelů
bude verze 4 obsahovat i abstraktní databázové rozhraní, které umožní vývoj
aplikací nezávislých na použitém databázovém serveru.
Zejména během posledního roku obliba PHP nezadržitelně roste. Koncem roku 1999
se PHP používalo na více než milionu webových serverů po celém světě. K oblibě
PHP určitě přispělo i to, že je dnes standardní součástí mnoha distribucí stále
oblíbenějšího operačního systému Linux.
ColdFusion
Společnost Allaire, producent známého HTML editoru HomeSite, nabízí systém pro
dynamické generování stránek ColdFusion
(http://www2.allaire.com/Products/ColdFusion/). Na rozdíl od ostatních
prostředí není ColdFusion klasickým programovacím jazykem.
Pokud používáte ColdFusion, můžete do HTML dokumentů zapisovat několik dalších
tagů, kterými lze vytvářet jednoduché podmínky, cykly a připojení k databázi.
Oproti ostatním prostředím má ColdFusion omezené vyjadřovací schopnosti, na
druhou stranu je jeho použití velice jednoduché. Systém je poměrně oblíbený
zejména ve Spojených státech.
LiveWire
LiveWire pochází z dílny firmy Netscape
(http://developer.netscape.com/tech/javascript/ssjs/ssjs.html). Dnes se pro
tuto technologii používá název SSJS (Server-Side JavaScript), který přesně
vystihuje podstatu systému. SSJS umožňuje zápis skriptů v JavaScriptu, které
jsou interpretovány ještě na serveru. Technologie je úzce svázaná se servery
firmy Netscape, které rozhodně nejsou špatné, ale zejména v poslední době podíl
na trhu rychle ztrácejí.
JSP
Zatímco o PHP a ASP jsme na stránkách Computerworldu již mnohokrát psali,
javově generované stránky mají dnes víceméně premiéru, a proto se na ně
podíváme trochu podrobněji.
JSP (Java Server Pages) jsou ze všech zmíněných technologií nejnovější. Název
až nápadně připomíná ASP, a při podrobnějším pohledu zjistíte, že oba dva
systémy jsou si opravdu v mnohém podobné. JSP však nestaví na COM objektech,
ale na JavaBeans a javových třídách.
Jak už z názvu vyplývá, vše je postaveno na Javě. Důsledkem toho je naprostá
nezávislost na platformě všude, kde máte k dispozici Javu, můžete provozovat i
JSP. I když Java nemá moc dobrou pověst co se týče výkonu, je to spíše již jen
reziduum minulosti. JVM (Java Virtual Machine), které odpovídají za
interpretaci javového bajtového kódu, jsou stále výkonnější a navíc často
obsahují JIT (Just-In-Time) kompilátor, který program rychle převede do
nativního strojového kódu.
Zacíleno na výkon
JSP jsou výkonnější než ASP nebo PHP díky poněkud odlišné filozofii. Příkazy v
ASP nebo PHP skriptu jsou interpretovány při každém požadavku na skript. U JSP
je to však jinak. O běh JSP skriptů se stará speciální servlet. Pokud obdrží
požadavek na nějakou JSP stránku, podívá se, zda ji má k dispozici ve
zkompilované podobě bajtového kódu (soubor .class). Pokud ano, spustí tento
binární kód, který je ve srovnání s interpretací mnohem rychlejší. Pokud nemá
požadovanou stránku k dispozici zkompilovanou, nejprve ji přeloží a poté spustí.
První požadavek na stránku je tudíž pomalejší, protože je potřeba ji
zkompilovat, všechny další požadavky jsou však již bleskově rychlé. Výhodou je
to, že vývojář nemusí kompilovat nic ručně, o překlad se zcela transparentně
stará speciální servlet. Tím je dosažen optimální kompromis mezi pohodlným
vývojem aplikací a jejich rychlým během.
Výhodou JSP je také fakt, že můžete na stránkách využívat libovolné javové
třídy a komponenty JavaBeans. Pokud máte pomocí JavaBeans naimplementovány
všechny důležité procesy v podnikovém informačním systému, můžete velice
jednoduše s použitím těchto komponent dopsat webové rozhraní k IS. Pro volání
komponent přitom nemusíte do HTML psát javový kód, ale můžete využívat i
zjednodušenou syntaxi, kdy se používají pro vyvolávání metod komponenty
speciální tagy.
Pro psaní JSP není nezbytně nutné používat jazyk Java. Lze použít libovolný
jazyk, který umožňuje volání javových tříd a obsluhu výjimek. Jako jazyk pro
psaní JSP půjde kromě Javy využít tedy i PHP4.
JSP z ASP přebraly (kromě názvu a nezávislosti na konkrétním jazyce) i další
zajímavé možnosti. V každé aplikaci můžete používat session a aplikační
proměnné. Díky tomu, že se využívá Java, máte k dispozici rozhraní JDBC, pomocí
kterého se můžete připojit k libovolné databázi.
V Javě je dnes implementována podpora pro všechny možné síťové protokoly a
datové formáty a to vše lze v JSP používat.
Knihovny tagů
JSP nabízejí oproti předchozím technologiím jednu zajímavou možnost, která se
uplatní především při vývoji větších systémů. V JSP lze využívat tzv. knihovny
tagů (tag libraries). Pokud v JSP řeknete, že chcete používat nějakou knihovnu
tagů, máte k dispozici další tagy nad rámec HTML. Použitím tagu na JSP stránce
vyvoláte určitou funkci a můžete ji předat parametry pomocí atributů tagu.
Stránky v JSP jsou pak velice jednoduché, nepoužívají žádnou složitou syntaxi
skriptového jazyka (vše je velice podobné například systému ColdFusion).
Kód, který se vykoná při použití tagů, může vytvořit nějaký zkušený
programátor. Samotné JSP stránky s tagy pak mohou vytvářet méně zdatní
vývojáři. Systém tak dovoluje vývoj aplikace rozdělit mezi více lidí a navíc
umožňuje poměrně efektivně oddělit kód od uživatelského rozhraní.
Velice jednoduše lze v JSP ošetřovat chyby. Pro každou JSP stránku můžete určit
jinou JSP, která se provede v případě výskytu chyby. Můžete tak ošetření všech
chyb soustředit na jedno místo.
Za vznikem JSP stojí samozřejmě firma Sun (http://java. sun.com/products/jsp).
Existuje ale několik implementací JSP. Kromě té sunovské je k dispozici i
implementace šířená pod GNU licencí GNUJSP (http://www. klomp.org/gnujsp/). JSP
lze provozovat na libovolném serveru, který podporuje servlety.
Co má budoucnost?
Pokud stojíte před problémem, který ze skriptových jazyků vkládaných do HTML
kódu se naučit, asi byste se rádi dozvěděli nějakou radu. Můj osobní názor je
následující: Technologie ASP má již své nejlepší časy za sebou a je poměrně
úzce svázána s jednou platformou. Pokud se tedy nechcete omezit na MS svět,
nejsou pro vás ASP příliš vhodné.
To samozřejmě neznamená, že by tato hojně využívaná technologie měla přes noc
zmizet ze světa.
Pokud potřebujete začít hned a rychle vyvíjet webové aplikace, asi se pro vás
bude hodit PHP. Tento jazyk se lze velice rychle naučit a nabídne vám vše, co
potřebujete. Vývoj PHP neustále pokračuje, takže se nemusíte bát, že byste
vsadili na nesprávnou kartu. Navíc lze jazyk PHP používat i pro psaní JSP.
Z dlouhodobějšího hlediska mají největší perspektivu JSP. Ze všech popsaných
technologií jsou nejflexibilnější a mají mnoho jedinečných vlastností. Pro
stejně složité aplikace však zatím budete potřebovat mnohem výkonnější servery
než při použití PHP.
Další možnosti
Nezapomeňte však na to, že jazyky vkládané do HTML kódu jsou jen jednou z
možností, jak vytvářet webové aplikace. Pro kritické aplikace pořád poskytují
nedostižný výkon ISAPI a FastCGI. Mnoho věcí lze s menší námahou vyřešit pomocí
různých aplikačních serverů. A že je zde z čeho vybírat: K dispozici jsou
komerční řešení jako Oracle WebDB i volně šiřitelné systémy jako objektově
orientovaný aplikační server Zope.
Pokud potřebujete prezentovat velké množství informací, nemusejí být skripty
ani aplikační servery to pravé. Lze nasadit systémy, které umožňují velice
efektivně generovat celé webové servery z XML dokumentů pomocí XSL stylů.
Zajímavý je v této oblasti například projekt Apache Cocoon (http://xml.apache.
org/cocoon/).
Php a asp prakticky
Podobnosti a rozdíly mezi PHP a ASP si ukážeme na příkladu zpracování
jednoduchého formuláře. Uživatel zadá své jméno a věk a v závislosti na
odpovědi se mu zobrazí nová stránka s určitou větou. Formulář vždy zpracováváme
příslušným programem (obsluha.asp, eventuálně obsluha. phtml), jehož kód je
vepsán přímo do HTML dokumentu. Vyjma jména volané funkce je vytvoření
formuláře v obou případech samozřejmě identické.
Na obrázku vidíte výsledek zpracování formuláře. Jak asi tušíte, uživatel
vyplnil své jméno jako Karel Karafiát a věk zadal jako 37 (respektive jakékoliv
číslo mezi 20 a 60) let.
ASP
Vytvoření formuláře
<FORM ACTION=obsluha.asp METHOD=GET>
Jméno: <INPUT TYPE=TEXT NAME=jmeno><BR>
Věk: <INPUT TYPE=TEXT NAME=vek><BR>
<INPUT TYPE=SUBMIT VALUE="Odeslání formuláře">
</FORM>
Obsluha formuláře
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Obsluha formuláře</TITLE>
</HEAD>
<BODY>
<H1>Výsledek obsluhy formuláře</H1>
<%= Request.QueryString("jmeno") %> je
<% vek = Request.QueryString("vek")
If vek < 10 Then
Response.Write "pěknej mlíčnák"
ElseIf vek < 20 Then
Response.Write "teenager"
ElseIf vek < 60 Then
Response.Write "v nejlepších letech"
ElseIf vek < 100 Then
Response.Write "je pravděpodobně prarodič"
Else
Response.Write "je někde mezi stovkou a smrtí"
End If %>.
</BODY>
</HTML>
PHP
Vytvoření formuláře
<FORM ACTION=obsluha.phtml METHOD=GET>
Jméno: <INPUT TYPE=TEXT NAME=jmeno><BR>
Věk: <INPUT TYPE=TEXT NAME=vek><BR>
<INPUT TYPE=SUBMIT VALUE="Odeslání formuláře">
</FORM>
Obsluha formuláře
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Obsluha formuláře</TITLE>
</HEAD>
<BODY>
<H1>Výsledek obsluhy formuláře</H1>
<? echo $jmeno ?> je
<? if ($vek < 10):
echo "pěknej mlíčnák";
elseif ($vek < 20):
echo "teenager";
elseif ($vek < 60):
echo "v nejlepších letech";
elseif ($vek < 100):
echo "je pravděpodobně prarodič";
else: echo
"je někde mezi stovkou a smrtí";
endif
?>.
</BODY>
</HTML>
Zdroje informací na webu:
http://msdn.microsoft.com/library/tools/aspdoc/iiwawelc.htm
základní informace o ASP
http://www.activestate.com
port programovacího jazyka Perl pro Windows
http://www.activescripting.org
portace ASP do prostředí UNIXů
http://www.php.net
domácí stránka technologie PHP
http://developer.netscape.com/tech/javascript/ssjs/ssjs.html
LiveWire od Netscapu
http://www2.allaire.com/Products/ColdFusion/
skriptovací jazyk ColdFusion
http://java.sun.com/products/jsp
základní informace o JSP
http://www.klomp.org/gnujsp/
GNU implementace JSP
Příklad použití jsp podle vzoru na serveru javaboutique
Následující funkce se pokusí z cookies vzít jméno uživatele a vypsat ho na
obrazovku
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD> <TITLE>
Naše pokusná stránka pro využití JSP
</TITLE> </HEAD>
<BODY>
<H1> Vítejte na našich stránkách, </H1>
<SMALL>pane
<%
out.println(getUserNameFromCookie(request));
%
</BODY>
</HTML>
http://java.sun.com/products/jsp
základní informace o JSP
http://www.klomp.org/gnujsp/
GNU implementace JSP
0 0137 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.