Prosinec 21st, 2006PHP vs JSP

Vím, že po internetu existuje spoustu srovnání programovacích jazyků. Já se ani nechci tak moc pouštět do srovnání jako osvětlit některé věci, které mi lezou v poslední době dost krkem.

Zejména se jedná o lži, které hlásají pubertální mladící, kteří si přečetli jeden článek, naprogramovali 100 řádků kódu a provádějí srovnání různých řešení mezi sebou. Často házejí špínu na věci, které neznají ani koncepčně, natož z pohledu vývojáře.

Když jsem začal s programováním, začal jsem na PHP, které se mi zdálo jako nejlepší volba. PHP bylo populární, rychle se rozvíjející jazyk, perspektivní, jednoduchý a dalo se najít spoustu tutoriálů po internetu.

Na začátku jsem byl vlastnostmi tohoto jazyka naprosto uchvácen a směle jsem prohlašoval, že je to geniální dílo :)

Dnes jsem již o mnoho skeptičtější a směle prohlašuji: PHP je bordel, který jsem se raději neměl učit. Důvodů, proč si něco takového myslím je několik a já proberu jen ty nejpalčivější:
  • každá nová verze je často nekompatibilní se starými skripty
  • dodnes neexistuje namespaces a to co jsem viděl v připravované verzi PHP6 mě nijak nenadchlo
  • OOP model je na příšerné urovni a programátor musí dodržovat spousty pravidel, aby se nenechal unést nesmyslnostmi ja­zyka
  • neexistuje schopný framework pro data (ORM, DAO)
  • php už od základu míchá aplikační a prezentační logiku dohromady
  • funkce v php nedokáží vracet výjimky, jen ty, které si sám napíši
  • znovupoužitelnost vlastních tříd je dost problematické, už z důvodu konceptu celého PHP

Mohl bych takto pokračovat dál a dál, ale to není záměrem mého příspěvku. Spíše než to, chci říci, že PHP nemá cenu tlačit někam, kam nepatří. A nyní bych ho už netlačil asi ani na web.

Našel jsem na: www.jakpsatweb.cz diskuzi o jsp-servletech. Názory o tom, že Java je framework nebo, že jsp je lepší šablonovač mě vážně pobavili. Nejsem žádný expert na jsp-servlety, spíše s nimi začínám, ale tohle už je moc :(

Srovnávat skripovací jazyk PHP s platformou jako je Java, je asi jako srovnávat cukroví s plechem na pečení (přece jen jsou vánoce :)).

Existují mýty o tom, že v JSP nelze napsat, to co v PHP. Je to omyl. Ba co více, je to neznalost konceptu JSP a PHP. JSP už od samého začátku (nepočítaje první verzi) vyzchází z patternu MVC (model-view-controller), který zaručuje oddělení aplikační od prezentační logiky. Navíc řešení webové aplikace v jave umožňuje více možností, jak danou aplikaci programovat (např. JSF).

Nebudu zde zabíhat do detailů, protože nejsem na Javu žádný znalec a primárně v ní „zatím“ nevyvíjím, ale co vím jistě, je, že mi java umožňuje programovat nejen webové aplikace. Umožňuje mi použít JPA, umožňuje mi použít skutečně kvalitní IDE ve formě NetBeans či Eclipse. apod. apod.

Dalším mýtem bývá, že se Java nehodí na malé webové aplikace typu e-shop apod. Já v tomto stále nevidím problém. Ale vezmu to z druhé strany. Budu psát v PHP OOP kód. Budu se snažit využívat controllery a budu používat oddělení aplikační logiky od prezentační + použiji vlastní vrstvu na data ve formě jakéhosi paskvilu ORM s DAO. Než toto připravím, pokud nemám připravené vlastní skripty, zabere mi to spoustu času. PHP mi samozřejmě umožňuje danou aplikaci napsat procedurálním způsobem, který bude mixovat všechny vrstvy do sebe. Super, mám vše během chvilky, ale přestanu zvedat telefony ve chvíli, kdy po mě zákazník bude chtít další úpravy a další vylepšení. Raději tedy vše udělám podle MVC a budu dodržovat základní patterny, abych se vyhnul námaze při dalších úpravách. V podstatě to samé mohu udělat pomocí JSP-servletů aniž bych musel pracně dodělávat či mapovat „pofidérní“ frameworky na dané vrstvy aplikace. Jak dlouho mi daná aplikace bude trvat v JSP, pokud použiji stávající frameworky, které jsou pro to přímo určené? Jak dlouho mi bude trvat sestavit aplikaci z vlastních tříd, které jsem použil minule?

Jediný důvod, proč se JSP nehodí na malé webové aplikace je ten, že neexistuje tak masivní podpora hostingů jako u PHP. To je nejzásadnější důvod, proč vlastně je JSP hozené pod PHP v oblasti vývoje web. aplikací po internetu. Lidé, kteří tvrdí, že se něco na něco nehodí by měli předem znát daný jazyk, aby mohli toto tvrdit. Já tyto výkřiky slyším pouze od lidí, kteří neumí OOP či neumí JSP.

Ukončím to malým srovnáním: kolik znáte programátorů, kteří přešli z OOP zpět na procedurální programování? Kolik znáte lidí, kteří přešli z Javy na PHP?

Nakonec jen malá ukázka pro PHPčkáře. Za jak dlouho byste byli schopni udělat toto, co Roman Štrobl v NetBeans?

Prosinec 11th, 2006HTML Framework 3 - Textarea

Posledním formulářovým políčkem, kterým se chci zabývat je textarea.

Využití tohoto prvku je dobré při uložení delšího textového řetězce s omezenou či neomezenou délkou. Existují i tzv. textarea wysiwyg editory, což je upravená textarea pomocí javascriptu, umožňující psát HTML kód pomocí vizuálních prvků. Je to dost specifická oblast, kterou se ale zabývat nechci. Spíše mi šlo o to, vytvořit si vlastní textareu, která bude míti možnost kontrolu maximálního počtu znaků na klientovi.

Stejně jako v předchozích případech, jsem si vytvořil v adresáří /lib/HTML/Form soubor Textarea.php a soubor Textarea.js. Již podle názvu je jasné, co dané soubory budou obsahovat.

Nebudu zde uvádět ukázku třídy HTML_Form_Textarea, ale nabídnu je rovnou ke stažení: HTML_Form_Textarea (php, js)

Samotné použití je opět velice jednoduché:

$textarea = new HTML_Form_Tex­tarea(„textove_po­le“, $_POST[„texto­ve_pole“]);
echo $textarea->getTextArea();

Pokud bych nechtěl použít js kód, nebo změnit jinou vlastnost, není to samozřejmě problém:

// zmeni maximalni pocet znaku
$textarea->setMaxPocetZna­ku(500);
echo $textarea->getTextArea();

// vypne js omezeni
$textarea->setPosuvnik(fal­se);

Šťouralové by samozřejmě namítli, že chybí ošetření vloženého textu. Například pomocí htmlspecialchars. Já jsem toto omezení zde vynechal. Záleží totž na tom, jak textareu chci využít, zda povolím některé HTML tagy, či nikoli. A toto by měla míti na starost vlastní definice v Model vrstvě (MVC).

Nyní oblast formulářových prvků opustím a budu se více zabývat tabulkami a způsobu, jakým jsem definoval jejich použití, společně s dalšími vlastnostmi, jako je export do XLS souborů, apod.

Nejenom talent a zkušennosti jsou potřeba pro úspěšný vývoj aplikací. Další vlastností je vývojové prostředí IDE. V dnešní době je možné nalézt spoustu jednoduchých editorů, které jsou schopny zvýrazňování syntaxe popřípadě další zajímavé vlastnosti.

Nejprve udělám malé srovnání nejznámějších editorů a poté si vyberu svého favorita :)

JEdit
Jeden z dobrých editorů je jEdit. Po potřeby úprav jednoduchých skriptíků ideální řešení. Mezi jeho hlavní přednosti jistě patří to, že je multiplatformní. jEdit je napsán v Javě. I přesto je velice rychlý a obsahuje možnost doinstalovat spousty pluginů.

PSPad
Velice populární editor, od českého vývojáře. Mezi jeho hlavní přednosti patří rychlost a jednoduchost. Velkou nevýhodou je, že dokáže pracovat pouze pod Windows. Ano linux verze se nekoná. Je vhodný spíše pro začátečníky a drobné úpravy.

SciTE
Na počátku jednoduchý editor, který ale vyniká svou rychlostí a konfigurovatel­ností. Je možné ho používat i pod linuxem. Po dobré konfiguraci zvládne i složitější úkony. O dalších informacích se můžete dozvědět např. u Jakuba Vrány.

Vim
Legendární editor textů linuxových nadšenců. Mezi jeho nesporné výhody patří extrémní rychlost a konfigurovatelnost. Velkou nevýhodou ovšem je to, že koncept Vimu je naprosto odlišný od ostatních editorů. Po prvním setkání vězte, že budete dlouho hledat, jak editor vypnout. :)

ZEND Studio
Skutečné IDE pro vývoj webových aplikací. Pokud to s PHP myslí někdo skutečně vážně, jistě výběrem tohoto IDE neprohloupí. Mezi jeho nevýhody patří to, že není zdarma a také, že je primárně určen pouze pro PHP.

Eclipse PHP IDE
Další skutečné IDE pro vývoj aplikací. Mezi jeho přednosti patří to, že je multiplaformní, dokáže se po instalaci patřičných pluginů, chovat jako vývojové prostředí téměř pro cokoli. Mezi jeho nevýhody patří snad jen to, že má náročnější požadavky na hardware a na začátku složitější konfiguraci. Existuje i placená verze ve formě MyEclipse, která obsahuje již nakonfigurovanou sestavu s další podporou.

Existuje samozřejmě nepřeberné množství editorů a IDE pro tvorbu webových aplikací, které lze na internetu dohledat. Mým hlavním záměrem bylo sepsat (z mého pohledu) nejpoužívanější nástroje pro psaní aplikací.

Po několikaletém programování ve SciTE jsem začal hledat něco, co by mi umožnilo editor povýšit na komplexní IDE se spoustou možností. Po testech s jEditem apod. jsem nakonec skončil s Eclipse. Mohu říci, že jsem po několikadenním testování a zkoušení dostal do ruky špičkový nástroj, který je navíc zdarma.

Eclipse je primárně tvořen pro vývoj Java aplikací. Navíc samotné IDE je psané v Jave, což umožňuje jeho použití na více OS. Samotný projekt Eclipse je dotován firmami jako je IBM, Red Hat či SuSE. Obsahuje extrémní množství pluginů jak pro samotné programování, tak i modelování databáze či v UML. Počet podporovaných jazyků lze najít na oficiálních stránkach, společně s pluginy pro jejich spuštění.

Osobně využívám plugin od ZENDu PHP IDE společně se WEB Tools (i z důvodu závislostí), dále plugin QuantumDB pro prohlížení databáze (používám na Oracle a MySQL) a SQL editor. V Eclipse jako platformě se meze nekladou. Je možné nad Eclipse vytvořit jak vlastní projekt, tak použít nějaký již napsaný.

O tom, co všechno Eclipse obsahuje a je možné v něm použít by vydalo na nejednu knihu. Já se zaměřím na podporu PHP přímo od ZENDu, HTML, CSS, JS a MySQL. Na závěr jen malá ukázka toho, co si vlastně pod IDE představuji.

Příště se budu zabývat prvním spuštěním Eclipse (pod Windows i Linuxem) a instalací pluginů.

© 2007 finc weblog | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress