Rozhodl jsem se sepsat pár poznatků, které jsem při studiu Javy zatím získal. Jelikož z mého postoje je jasné, že PHP se pro mě stalo spíše zlem, hledal jsem jiný směr programování a oblíbil si právě zmiňovanou Javu. Důvody proč, jsem psal minule, dnes se spíše zaměřím na samotnou Javu a PHP nechám již pomalu odumírat :)

Vezmu to od začátku, jak se PHPčkář může postupně dostat k pochopení platformy jako je Java, aniž by trávil měsíce bádáním či vyhazoval tisíce za různá školení.

Prvním předpokladem k úspěšnému začátku je znalost OOP programování. Není zrovna snadná věc, přejít z procedurálního vývoje na objektový a přitom změnit jak logiku myšlení, tak pozměnit způsob programování. Zde osobně doporučuji podívat se právě na Javu či jiné čisté OOP jazyky jako C++ či C#. Jistě se Vám lépe bude učit na něčem, co je v oblasti OOP vývoje osvědčené. Všechny získané znalosti jdou víceméně použít i v PHP, takže se vývojář nemusí obávat, že bude muset ukončit vývoj v PHP. Já osobně volil knížku od Rudolfa Pecinovského: myslíme objektově v jazyku Java 5.0. Musím přiznat, že jsem zejména pochytil dobré návyky při návrhu tříd a pochopil oč v oblasti OOP vůbec jde. Tyto znalosti jdou pak aplikovat ve větší míře i na PHP (samozřejmě, že např. polymorfismu si v PHP moc neužijeme :)).

Druhým krokem je praxe v OOP a tvorba tříd podle design patterns „návrhové vzory“, což jsou doporučení, které by měl programátor znát a pokud je to jen možné, držet se jich. Díky design patterns jsem mohl skutečně efektivně aplikovat OOP do praxe.

Tyto dva kroky mi zabrali 1 rok. Někomu se může zdát taková doba přehnaně dlouhá, avšak, pracující člověk, od kterého se očekávají výsledky, si nemůže dovolit jen tak trávit celé dny učením. Navíc ta praxe je zde dost důležitá a osobně si myslím, že během jednoho či dvou měsíců, by si dobré návyky v oblasti OOP vývoje, mohl osvojit jen génius.

Pak jsem přešel k něčemu složitějšímu a to byla knížka Java programujeme profesionálně od Bretta Spella. Kniha má přibližně 1000 stran a je to publikace určená vývojářům swingových aplikací. Samozřejmě, se swingem v Javě si hrál každý a tak i já jsem si hrál se základními komponenty jako jTable, jTree, apod. Samotné nasazení je pro mě však nemyslitelné, protože umět programovat front-end aplikace, ještě neznačí úspěch.

Přesměroval jsem se tedy zpět na web development. Zde je situace dost drsná, názvy frameworků, různá řešení, apod. jsou jen dobrým základem, jak si v této oblasti udělat v hlavě guláš :)

Po vyzkoušení různých tutoriálů na netbeans.org (vytvoření CRUD aplikace a základní tutoriály na JPA či JSF) jsem hledal něco obsáhlejšího. Naštěstí se na internetu dá nalézt spoustu knih ve formátu PDF, které stojí za to, si přečíst. Zde bych jen upozornil na skutečnost, že v češtině si toho moc nepřečtete.

Takže jsem začal s PDFkama…

Takže první věc, kterou je dobré vědět, je, že web development má několik částí. Nejsou to jen JSP stránky, ale také servlety či další objekty, které mají tu či onu vlastnost. Než začít psát čisté JSP-servlety, všude jsem se dočetl o doporučení, použít nějaký ten framework, používající MVC pattern. O tom, co je MVC jsem už něco věděl, ale co se týče výčtu frameworků (Struts, JSF, Seam, Spring, Struts 2, Tapestry, atd. atd.), nevěděl jsem po čem sáhnout. Nakonec jsem si vybral JSF, opět na doporučení. Jedná se komponentově orientovaný framework a na rozdíl od Tapestry je vyvíjen přímo Sunem, což mu dodává určitou standardizaci.

JSF má vlastní tagy, pomocí kterých lze definovat JSP stránku. Tyto tagy mají spoustu vlastností a je možné libovolně vytvářet nové a nové. Hodnoty či atributy těchto tagů se definují backend beany. Jsou to třídy, které mají definované atributy třídy a k nim setry a getry. Kromě těchto základních atributů existuje ještě možnost definovat metody s parametry ActionEvent, které pracují na základě uživatelských akcí. Celá problematika je samozřejmě mnohem rozsáhlejší. Existuje zde vlastnost jako je navigation, která určuje navigaci stránek podle aktuálního stavu modelu, apod. celá tato problematika je krásně popsaná v knize JSF in Action, u které jsem vlastně nyní i já (cca. 150 stránka z 1076 :)).

Uvidíme, kam se moje znalosti dostanou, zatím kromě pár tutoriálů a vlastních zkoušek s JPA či JSF, jsem získal nadhled nad základním rozdělením webového vývoje v Javě.

Tímto článkem jsem chtěl jen ukázat to, že zkoušení nových věci by se neměl bát nikdo, kdo to s programováním myslí vážně. Tento obor je dost progresivní a tak se musíme chovat i my vývojáři. Spoustu lidí dělá chyby, ale tou nejzásadnější je, zkoprnět a přestat se snažit získávat nové znalosti.

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?


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