Krátké zamyšlení nad platformami pro vývoj webových aplikací (PHP, Java, Asp.NET)

24. June 2007

Se zájmem čtu zamyšlení ostatních bloggerů na téma platformy pro vývoj programovacích jazyků, které jsou často provázeny srovnáním – například Javy a PHP (viz Znáte PHP?, K čemu je PHP?, Lze PHP porovnávat s Javou nebo s .NETem?).

Chtěl bych také přispět krátkým článem na toto téma. Pro srovnání je určitě důležité, abych prozradil, že se více než 7 let zabývám programováním v PHP, více než 2 roky se zabývám Javou. Mám za sebou také nějaké zkušenosti s Asp.Net (jeden zatím nedokončený projekt).

Pracoval jsem většinou v týmech, který tvořil analytik, já (programátor) a grafik (a CSS + HTML coder a také PHP programátor v jedné osobě). Občas se náš tým rozrostl o jednoho až dva externí programátory.

PHP

Každý programátor někde začíná. Moje začátky se váží k PHP. Svůj první počítač jsem dostal až ve svých 21 letech (představte si o co jsem pozadu proti těm z vás, co mají počítač od svých 9 let, ovšem zase mám před sebou ještě velký potenciál pro zlepšování :)). Asi za půl roku potom (stihnul jsem se naučit základní ovládání počítače) jsem chtěl začít dělat webové stránky. A samozřejmě jsem hned chtěl dělat dynamické stránky (ve smyslu obsah generovaný dynamicky na serveru). Ani mě v tu chvíli nenapadlo nejdříve nastudoval základy HTML a CSS. HTML je jednoduché, to přece umím – řekl jsem si tehdy. A CSS – to je zbytečné zdržování. Pojďme rovnou na tvorbu dynamických stránek.

A tohle je podle mého veledůžitý moment…člověk, který nemá žádné znalosti s HTML a CSS a už vůbec nějakého programovacího jazyka chce rovnou dělat dynamické stránky. A PHP je volba, která vám to umožní. Spousta z vás si řekne, že právě to je to špatné – člověk, který nemá žádné znalosti a začně takhle snadno v PHP tvořit vytvoří vždy jedině šunt.

Ono je to podobně jako jizda na tříkolce – jde to mnohem snadněji než na kole. Ale když jste malý musíte nejdříve ovládnout tříkolku a až potom přesedlat na kolo. Řekl jsem podobně – protože PHP rozhodně není jazyk, ze kterého byste nutně museli přesedlávat. Myslím, že právě ta snadnost používání jazyka PHP byla jednou z priorit jejích tvůrců.

Ale pojďme dál – po půl roce (!) tvrdé práce na PHP jsem zjistil, že jej umím obstojně (no vlastně jsem si myslel, že jsem tak dobrej, že napíšu úplně cokoliv) a vrhnul jsem na trh poptávku po práci na vedlejší úvazek. Stal jsem se placeným PHP programátorem.

Postupně jsem zlepšoval svoje programátorské schopnosti. Ve firmě jsme například rok a půl pracovali na velmi složitém systému pro švýcarského zákazníka (přes který tečou stovky tisíc Eur měsíčně). Tento projekt má asi 100 000 řádků kódu a pracuje nad 100 tabulkami v databázi. Budete možná překvapeni, ale tento projekt funguje od svého releasu naprosto bez problémů. A klient jej dokonce rozšiřuje. Kód je samozřejmě hrouda bahna, ve které se já dokonale vyznám. V projektu nejdou odděleny vrstvy (alespoň view), v počátku nebyly používány transakce, nepoužívá žádný ORM nástroj.

Když se zamyslím nad výše uvedeným projektem po několika letech napadnou mě dvě věci:

  • můj zaměstnavatel hodně riskoval, když nechal takto složitý projekt dělat nezkušeného PHP programátora
  • kdyby se tento projekt měl dělat tak jak by se slušelo vzhledem k jeho rozsahu a povaze (např použít Javu, Spring Framework, Hibernate…Spring Web Flow) byla by jeho cena několikanásobně vyšší (já dokonce myslím, že 10×)

I v PHP existují stovky frameworku na všechno (Zend Framework, Code Igniter, knihovna PEAR, Creole, Smarty), ale když jste průměrný PHP programátor nemáte o jejich existenci ani ponětí. Jednoduše vás ani nenapadne, že něco takého může existovat. A když vám o tom někdo řekne, tak si to přece naprogramuje sám a líp. S tímhle přístupem se setkávám kolem sebe pořád – každý rádoby programátor si vše naprogramuje sám a líp. Aby však někdo naprogramoval něco líp musí být splněno následující:

  • nejdříve musí poznat co už v dané oblasti naprogramováno bylo – aby zachytil hlavní myšlenky a pronikl do dané problamatiky
  • musí mít mimořádný programátorský talent (aby napsal něco lépe než nějaké OS komunita osvědčenými postupy vyvinula za několik let
  • musí být mimořádně pracovitý a trpělivý
  • musí mít stovky (tisíce) hodin volného času

Výše uvedené řádky platí pro znovuvynalézání kola. Je jasné, že pokud potřebujete napsat něco zcela originálního, tak to jednoduše někdo napsat musí.

Pro zajímavost – žadatel o místo PHP programátora u nás ve firmě musí, jako součást příjímacího pohovoru, absolvovat PHP test. Test jsem sestavoval já, a tak jsem si dovolil vložit tam, mimo jiné, tyto dva úkoly:

  • Co znamená zkratka MVC?
  • Napiště libovolnou třídu v jazyce PHP

Tak…a teď si tipněte – kolik ze 4 uchazečů o místo věděl co znamená zkratka MVC. Odpověď je 0. Třídu v PHP dovedl napsat jeden člověk.

Mezi další velkou výhodu PHP patří levný hosting. Existují firmy, které nechtějí za výrobu svých osobních stránek dát více než několik tisíc (desítek) korun a za jejich provoz více než 2000 ročně.

Java

Když už jsem si zavzpomínal v odstavci o PHP učiním tak i nyní. Onehdá zadal jeden klient naší firmě request na vytvoření imagebanky v jazyce Java. V té době ovšem u nás ve firmě nikdo se znalostmi javy nebyl. Začal jsem tedy studovat.

V té době se mě (PHP programátorovi) začal obracet svět nohama. Začal jsem zjišťovat, že existují takové věco jako oddělení business logiky od view vrstvy, transakce, ORM, AOP a další věci. Ukázalo se, že jsem až do této chvíle spoustu věcí chápal špatně – většinou díky neznalosti kontextu a nedostatku informací.

Myslím, že v Javě není tak snadné dělat webové aplikace vyloženě špatně. Stačí totiž do googlu zadat frázi java framework a na prvním místě to najde Spring Framework. A když začnete dělat webovou aplikaci ve SF nedá se toho, podle mého moc zkazit. Už jenom suma informací, kterou potřebujete znát, abyste s tím mohli pracovat je tak velká, že eliminuje vznik určité skupiny chyb. A když začnete studovat všechny featury SF dostanete se na slušnou množinu věcí z Javy a J2EE.

Mě osobně Java nutí nad věcmi přemýšlet a uvědomovat si souvislosti.

Hodně věcí z Javy jsem přenesl do PHP – už zmíněné zavednení MVC frameworků, důsledné oddělení vrstev aplikace, použití ORM. Naprogramoval jsem si vlastni ORM nástroj pro PHP na základě práce s Hibernatem. Říkáme mu eVent a mapovací metadata má uložené v komentářích (ke kterým mám PHP od verze 5.0.3 přístup při runtimu).

Asp.NET

Asp.NET je podle mého převlečená Java. Nikdy jsem k této technologii moc nepřilnul. Vypadá to, že Microsoft kouknul na Javu, uvědomil si její nedostatky a snažil se je odstranit. Hodně věcí se v Asp.NET dělá snadnější než v případě Javy. Například sada view komponent je opravdu rozsáhlá. Vadí mi přenášení _VIEWSTATE a další POSTovací praktiky. Podívejte se na článek Jsem zděšen z ASP.NET. Vzpomínám si jaké šílenosti jsem Asp.NET musel podniknout abych mohl modifikovat položky mapy stránek při runtimu.

Zdá se mi, že Asp.NET skrývá programátorovi část progrmatiky, která by měla naopak zůstat odkryta (znám jednoho Asp.NET programátora, který má naprosto pokroucenou představu o fungování a principech tvorby webových stránek).

Závěr

Nevím, jestli to bylo z článku patrné, ale říct o některé platformě jaké té nejlepší je samozřejmě nesmysl. Platí klišovité – je nutné zjistit požadavky a poté vybrat vhodné řešení.

I PHP se dají tvořit skvělé aplikace. Doporučil bych ho pro jednoduché projekty, které mohou tvořit i začínající programátoři. I pro středně složité projekty je možné jej použít. Tam bych to podmiňoval přítomností zkušeného programátora v týmu, který by plnil funkci softwarového akchitekta a kontroloval práci ostatních členů v týmu.

Pro větší projekty (rozsahem, rozpočtem) bych zvolil Javu s použitím osvědčených frameworků.

Důležitým faktorem je, že Java programátor je (až několikanásobně) dražší ne PHP programátor. To je často rozhodující fakt při výběru platformy.

Článek patří do kategorie: WWW stránky obecně

13 Komentářů Přidat komentář

  • 1. Jakub Podhorský  |  24. June 2007 v 21.20

    Pěknej článek jen jeden detail co si představujete pod pojmem velký a nebo střední projekt?

  • 2. Vlasta  |  24. June 2007 v 21.42

    [2]Rozeznat malý, střední a velký projekt je práce analytika. Jak jsem již napsal v článku i rozsahem velký projekt se nechá dělat v PHP. Naproti tomu například malou aplikaci, která by sloužila pro práci s bankovními účty klientů (třeba pouhé zjišťování zůstatku) bych dělal raději v Javě.

    Ono lze dělat jakýkoliv typ projektu pomocí jakékoliv z vyjmenovaných technogií. Nejdůležitejší je (podle mého názoru) spokojenost zákazníka a hned potom spokojenost z dobře odvedené práce.

  • 3. Wu  |  25. June 2007 v 14.10

    Horší je po nějaké době v Javě udělat jednoduchou webovou aplikaci jednoduše, aniž by se člověk ve frameworcích utopil ;)

  • 4. S  |  27. June 2007 v 8.32

    Diky, velmi pekny clanok,… trosku mi pripomenul seba :-)

    Wu: pravda, ako sa raz dostanes na istu uroven, uz nie je cesty spat.

  • 5. Borek  |  27. June 2007 v 13.52

    Docela mě překvapilo, že „PHP vám umožní dělat dynamické stránky rychle a bez znalostí HTML/CSS“. Podle mé zkušenosti by se toto dalo prohlásit třeba o ASP.NET, které před začátečníky základní webové technologie snad až moc maskuje; naopak u PHP jsem měl vždycky pocit, že každý odeslaný bajt si musím vygenerovat sám. Jinak se dá s mnoha věcmi souhlasit.

    P.S. Pokud nevyhovují Web Forms, hodně dobrou alternativou je MonoRail, MVC framework, kde se dají využívat všechny krásné věci (ASP).NET.

  • 6. Vlasta  |  27. June 2007 v 14.06

    [5] Docela mě překvapilo, že „PHP vám umožní dělat dynamické stránky rychle a bez znalostí HTML/CSS“.

    Moje první pokusy takové skutečně byly. Například: nadpis jsem dělal <p style=„font-size: 20px; font-weight: bold“>Nadpis</p>.

    Měl jsem tedy na myslí spíše sémantiku.

    Přinám se, že jsem zázračné generátory kódu neměl rád nikdy (ať už je řeč o wysiwyg editory typu Microsoft FrontPage nebo o Asp.Net komponentách)

  • 7. T  |  28. June 2007 v 1.18

    Tie vyhrady napr. voci ASP.NET sa mi zdaju take banalne a tak povrchne…

    ViewState mam vypnuty uplne, ziadnu magiu tam netreba, len trochu grifu a dobre porozumenie mechanizmom. Ano, v ASP.NET s vypnutym viewState drag&drop vo velkej miere konci. To je ten problem?

    <a>SiteMapa – tu je jeden scenar, ziadna magia to rozhdone opat nie je

    Clanok „Jsem zděšen z ASP.NET“ je v rovnakom duchu, detinsky banalne vyhrady, na ktore existuju velmi jednoduche recepty(Calen­dar,Grid a Paging) a chybne predpoklady/o­myly(ViewState­). Nepaci sa Ti calendar control? Kodni si svoj, alebo stiahni nejaky open source, ktorych je dost.

    Nie som MS bigot – presiel som dlhou cestou ASPckami, presiel som dlhou cestou PHPckom, nieco som pokodoval v JSP…

    „Asp.NET je podle mého převlečená Java“

    Nie, .NET framework je…„vylepšená java“, ktorá ale žiaľ nieje prenositeľná(mono sem, mono tam). Dôvody, pre ktoré prístupil MS ku jeho vytvoreniu sú všeobecne známe.(ak treba objasnit mozem)
    ASP .NET je súbor komponentov, čiže framework, ktoré v tej či onej miere, na tej, či onej úrovni môže a nemusí ktokoľvek použiť. Ak má niekto chuť, môže od piky počnúc hoci nejakým základným Page HttpHandlerom vytvoriť vlastný framework, vlastné komponenty. Ano, mnohé z tých, čo sú súčasťou ASP .NET sú bugové, v mnohých scenároch nepoužiteľné…dajú sa ľahko nahradiť.

    Nevidím velky zmysel v takto ponatych clankoch…ak chce niekto urobit relevatne porovnanie, nech najprv stanovi kriteria, ohranici to, co porovonava(a to je slusna vyzva), kedze napr. ASP .NET ma ambicu ponukat AJ nejaky webovy framework „vyssej urovne“, co „hole“ PHP ambiciu nema. Takze co porovnavame?

    Jednoducho taketo clanky nie su nicim inym, len zapalnou snurou pre nezmyselne flamewars bigotov bez dostatku skusenosti so vsetkymi technologiami a bez nadhladu -
    java,.net,php by mali byt nastrojomi, ktore v rukach dobreho remeselnika bez ohladu na to, ktory vyberie alebo vybrat musi znamenaju vzdy slusne obsluzenie poziadaviek zakaznika. A dobry remeslnik vie pomenovat vecne a presne, co mu na ktorom nastroji nevyhovuje, chyba atd. ale urcite nebude ako zenska jojkat a ohkat na takymito, pardon bulvar like clankami a sirit klebety :-)))))

  • 8. Vlasta  |  28. June 2007 v 6.45

    [7] „Tie vyhrady napr. voci ASP.NET sa mi zdaju take banalne a tak povrchne…“

    Tenhle článek je můj subjektivní názor. Mám dost zkušeností se všemi technologiemi na to, abych článek mohl s klidným svědomím napsat. Asp.NET mi jednoduše nesedí. Toť vše. Žádný flame netřeba.

    „Asp.NET je podle mého převlečená Java“. Nie, .NET framework je…„vylepšená java“.

    Vylepšená, převlečená…chtěl jsem říci, že MS z Javy hodně opsal…to je vše.

    „java,.net,php by mali byt nastrojomi, ktore v rukach dobreho remeselnika bez ohladu na to, ktory vyberie alebo vybrat musi znamenaju vzdy slusne obsluzenie poziadaviek zakaznika“

    Patrně jste to nepochopil, ale přesně tohle v článku říkám.

  • 9. T  |  28. June 2007 v 10.54

    "Tenhle článek je můj subjektivní názor. Mám dost zkušeností se všemi technologiemi na to, abych článek mohl s klidným svědomím napsat. "

    Ved nic v zlom, ale zjavne a zial s ASP .NET dost nie. Ked prave hento a linkovany clanok boli vyhrady na podporenie Vasho „subjektivneho nazoru“(objektivny nepoznam, potom este poznam „citenie“, to je vtedy, ked su argumenty a fakty irelevatne, to je ten pripad, ked manzelka jojka na bulvarom :-) – „Asp.NET mi jednoduše nesedí. Toť vše.“ – keby pritom ta sekcia o ASP .NET zacala aj skoncila, bolo by to v poriadku :-) = ziadne argumenty, len pocity :-)

    Pointa tam bola absolutne nerozlisovanie medzi .NET, ASP .NET vs. Java…ani nie to spojenie. Ano „opsal“ ved to nieje tajomstvo, ved MS vyvijal dlho vlastny java runtime…a dovod preco vnizkol .NET suvisi prave s nim.

    Nie nepochopil, je to v jednom Vasom prispevku pod clankom patrne, ale z clanku som mal naozaj zmiesane pocity, ale zacalo to celkom prijemne :-)

  • 10. Vlasta  |  29. June 2007 v 13.14

    [9] Zapomněl jsem zmínit jednu důležitou věc – s Asp.NET sice nemám letité zkušenosti, ale s vývojem desktopových aplikací na platformě .NET (a jazykem C#) ano. Proto jsem napsal „Nikdy jsem k této technologii moc nepřilnul“ a dále „Zdá se mi, že Asp.NET skrývá programátorovi část problematiky, která by měla naopak zůstat odkryta“.

  • 11. T  |  29. June 2007 v 17.36

    S tym, ze skryva, suhlasim – jednoducho je zaujmom programatora, aby pochopil vsetko, co sa deje na pozadi , ale je to obdobne ako ine „vyssie“ webove frameworky – co je prirodzene. To nemoze byt chapane ako seriozna vyhrada tiez.
    Od skusenosti s .NET ku ASP.NET v kontexte posudenia „web frameworku“ je kusisko cesty. Asi nema vyznam sa pytat na konkretne vyhrady voci .NET Frameworku ako takemu, hoci by to bolo urcite zaujimave.
    Pekny vikend

  • 12. finc  |  8. July 2007 v 8.10

    Stejne me tyhle hadky bavi :)
    Jak bylo napsane v clanku, a ja s tim souhlasim, kazda technologie by se mela pouzit na jine typy aplikaci.
    Osobne jsem take zacal na PHP, z cehoz jsem byl okouzlen, nyni jsem zase okouzlen z Javy.
    Asi vzdy clovek tyto pristupy porovnava.
    Na druhou stranu, az zase budu delat nejakou webovou prezentaci (coz v nejblizsi dobe budu), tak pouziji PHP.
    Duvod: rychlost, snadnost, bezproblemovy webhosting.

    A az zase budu v praci delat dalsi kus aplikace, tak ji samozrejme budu psat v Jave :)

  • 13. BlackSmith  |  17. July 2009 v 14.09

    Mám naprosto stejnou zkušenost. Začínal jsem na PHPku, snažil se vytvořit kolo (ORM, template,…), ale až po nastudování Javy jsem zjistil jak se věci doopravdy mají MVC, vícevrstvá architektura,… Teprve potom jsem začal v PHPku pracovat s frameworky.

    Řekl bych, že velikost projektu není dána počtem řádků, ale počtem lidí, kteří na tom pracují. V práci jsem byl svědkem opravdu velkého projektu (2–3 roky vývoje), kde bylo zapojeno cca 10 – 15 lidí a celé se to dělalo v čistém PHP (bez template, bez OOP), nebyl použit ani žádný verzovací systém, prostě se to natvrdo hrnulo na FTP. Často se stávalo, že někdo někomu něco přepsal a podobně. S odstupem pár let mi to teď připadá jako největší masochizmus, v Javě by takový projekt byl mnohem snáze udržovatelný a rozšiřitelný. Na druhou stranu musím pochválit vedoucího týmu, protože i když to byl opravdu hrozný moloch, tak to byl schopen ukočírovat a úspěšně projekt dokončit a předat.

    Jak již zde bylo řečeno, Java má proti PHP jednu výbornou vlastnost, má přesně danou standardizovanou strukturu, které když se držíte tak kdokoliv po vás přijde je schopen se v kódu zorientovat. Už ani nespočítám, kolik PHP projektů jsem upravoval, a jenom pochopit, jak asi pracují mi zabralo 98% času a námahy.

Přidat komentář

Povinné

Povinné, skryté

Security Image Povinné
Opište text z obrázku

Povolené HTML značky:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Odkazovat na tento článek  |  Přihlásit se k odběru těchto komentářů přes RSS Feed


Kalendář

October 2017
M T W T F S S
« Jan    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Poslední články

Locations of visitors to this page