2011-10-23

Web programavimo technologijos


                Web jau daugeliui nebe naujiena ir kiekvienas daug maž bent kažką yra girdėjęs apie stebuklingą žodį “internetas” arba tokių, kurie dar nieko apie tai negirdėjo – darosi mažuma(pvz. gentys Afrikoje). Interneto svetainės, portalai, blogai, soc.tinklai etc. kasdien pateikia daugybę informacijos, dar daugiau šiukšlių. Technologijų leidžiančių internete „suktis“ informaciniams ir kitokiems Web puslapiams yra daugybė. Nusprendžiau, jog laikas pakalbėti ir padaryti trumpą intro apie plačiausiai paplitusias, geriausiai žinomas priemones Web puslapiams kurti. Niekam ne paslaptis, jog dinaminis šiandienos puslapių turinys kaip tik ir generuojamas šiomis priemonėmis. Manau, kiekvienam, kartais besidominčiam Web programavimu (ypač dirbantiems toje srityje), būtų puiku išmanyti ar bent pačiupinėti daugelį šių technologijų, praplėsti akiratį ir pažiūrėti į tą patį dalyką iš skirtingos perspektyvos. Trumpai susipažinsime su alternatyviomis PHP, ASP .NET, Java JSP, Python technologijomis Web puslapių programavimui. Toliau tikiuosi, jog šio straipsnelio skaitytojas yra susipažinęs bent su HTML ir puslapių kūrimu. Jei ne, nebėda – pagrindų visada galima išmokti www.w3schools.com.



I. PHP Hypertext Preprocessor, prijaučiantiems C++

                 PHP (http://www.php.net/) buvo ir yra viena iš labiausiai paplitusių Web programavimo kalbų šiandien pasaulyje. Daugelis svetainių būtent parašytos šia kalba. Atviras kodas, lankstumas, palaikomumas, multiplatformiškumas kaip tik padarė šią kalbą ypač patrauklią. Pirmasis šuolis nuo statinio Web 1.0 HTML turinio rodymo iki dinaminio generavimo kaip tik ir prasidėjo su šia kalba. Ji daugeliu atvejų primena C++, kadangi naudojasi panašia sintakse, yra objektiškai orientuota(OOP). Taip pat iš dalies yra labai panaši į žemo lygio procedūrinę/struktūrinę kaip C – nėra jau paruoštų standartinių komponentų, formų validavimo ir kitokių svarbių niekučių, todėl dažnai tenka išradinėti dviratį, jeigu viską rašome patys ir nesinaudojame jokiomis bibliotekomis ar karkasais kaip Zend Framework, CodeIgniter ir pan. Iš pavadimo „preprocessing“ pabrėžiama, jog kalba yra interpretuojama. Vartotojui paprašius puslapio preprocesorius praskanuoja HTML puslapį su įterptomis PHP žymėmis(tagais <php>), įvykdo kodą generuojantį dinaminį HTML turinį. Dalis našumo dėl to nukenčia, tačiau dėl savo paprastumo kalba yra labai populiari. Viena PHP be priedų nėra labai greito ir kokybiško darbo pagalbininkė, todėl papildomai visada patariama naudotis kūrimo karkasais, šablonų bibliotekomis kaip Dwoo, Smarty, duomenų bazių abstrakcijos bibliotekomis ADOdb ir daugeliu kitų jau sukurtų įrankių – kam išradinėti savo dviratį?
                Medžiagos, kaip pradėti kurti svetaines, internete apstu, todėl tereikia tik noro ir laiko. Labiausiai paplitusi Web serverių aplinka – Apache, veikianti tiek Linux tiek Windows OS. Šiuo metu Web kūrimui populiaru naudoti LAMP (Linux+Apache+MySQL+PHP) arba WAMP (Windows+Apache+MySQL+PHP) „kompleksą“, pvz. EasyPHP, WAMP, XAMPP ir kt. Tai viskas iš programinės įrangos pusės, ko reikia, norint pradėti kurti Web puslapius su PHP. Kartu gaunate ir MySQL reliacinę duomenų bazę ir dar papildomų įrankių kaip – phpMyAdmin duomenų bazėms administruoti/tvarkyti ir pan. LAMP sistemos labai paplitusios dėl savo ekonomiškumo, nemokamų technologijų, todėl daug hostingo įmonių kaip tik ir suteikia panašaus pobūdžio komplektaciją ir resursus už tikrai pigią kainą. Vis gi – paklausa didelė.
                Dar porą žodžių apie PHP situaciją Lietuvoje - juokais galima būtų pasakyti, kad pas mus ja kalba vos ne kas antras Web programuotojas arba prie visų darbo reikalavimų „keiksmažodžių“ kaip CSS, jQuery ir etc. pretendentams visada yra parašyta – „PHP išmanymas“. Taigi situacija kaip ir aiški – bent kažką suprasti PHP padangėje šiandien yra „must have“.

 II. ASP .NET – mėgstantiems C#, komponentinį kūrimą ir daug XML’o

                ASP (Active Server Pages) Microsoft dar neseniai pakeista technologija, kurios kaip ir bandoma atsisakyti, bet vis dar kai kur naudojama legacy sistemose. Principas toks pats kaip ir PHP – HTML kode įterptos žymės, kurias interpretuoja preprocesorius ir vykdo tarp jų parašytą kodą. ASP technologija veikia išskirtinai Windows OS aplinkoje. Pati kalba senoje ASP versijoje – tiesiog JavaScript mikstūra. ASP trūkumus Microsoft pakeitė naujesne ir aktyviai plėtojama technologija ASP .NET (http://www.asp.net/), kuri įnešė naują gaivaus vėjo gūsį. Pereita prie visiškai objektinių C# ir Visual Basic kalbų, kurios žymiai lankstesnės, taip pat liko palaikoma ir atgaliniu būdu suderinama ASP JavaScript atmaina. Naujas „Code Behind“ pricipas iškelia HTML ASP kodą(dizainą) į vieną failą, o C# kodą į atskirą, todėl dizaineris ir programuotojas gali dirbti vienu metu - taip įvedama papildoma tvarka. Nuo PHP skirtumas čia toks, jog svetainės kodas gali būti ir sukompiliuotas į bibliotekas – DLL(dynamic link library) ir vykdomas tiesiogiai CPU komandų lygiu(native aplinkoje), kas teoriškai turėtų suteikti daugiau našumo, bet visada taip pat priklauso ir nuo realizacijos. Žinoma C# yra lanksti, gana šviežia ir atidirbta kalba, dabartiniu metu ypač populiari, todėl bent jau mano manymu, Microsoft šiuo atveju išlošė, panaudodama ją Web puslapių kūrimui. Taip pat yra realizuoti standartiniai komponentai, validavimas, kurie palengvina ir pagreitina kūrimo procesą.
                Komponentinis kūrimas - iškart pasijaučia analogija su standartinių Windows formų kūrimu, todėl tokie dalykai kaip login formos ir kita – jau realizuota out-of-the-box, telieka įdėti komponentą į Web puslapį. Norint kurti ASP. NET puslapius susidaro įspūdis, kad net nebūtina gerai žinoti HTML, kadangi daugelis HTML žymių tiesiog pakeičiamos standartine ASP žyme, kuri atitinka komponentą (pvz.: <asp:TextBox> žymė pakeičia HTML <input type=”text”> ir pan.). Serveris. apdorojęs puslapį, automatiškai pakeičia ASP žymes į atitinkamas HTML, kurias jau gali suprasti naršyklė. Kitas įdomus žingsnis, jog puslapį galima įsivaizduoti kaip vieną didelę HTML formą, kadangi dažniausiai visi komponentai yra sudedami vienoje HTML puslapio formoje. Toks sprendimas priimtas ne atsitiktinai - taip siekiama nuo visiškai būsenos neišsaugojančio(stateless) HTML pereiti prie būseną išsaugojančio, nuoseklaus „su atmintimi“ puslapio koncepcijos. ASP taip pat iškart palaiko šablonus(templates), kurie realizuoti per MasterPage/ChildPage puslapių struktūrą ir leidžia įtraukti vieną šabloną į kitą ir pan.
                Susidūrus su ASP .NET iškart pasimatys, jog XML taikomas labai plačiai – ypač aplikacijos ir serverio konfigūracijoje. Aišku XML‘as prideda lankstumo, kaip gali būti sukomfigūruota Web aplikacija, tačiau kartais gali pasirodyti ir jo pertekliškumas.
                Pradėti programuoti ASP .NET aplikacijas galima parsisiuntus Visual Studio įrankį. Express versija prieinama nemokamai (http://www.microsoft.com/visualstudio/en-us). Žinoma, pirmiausia reiktų išmokti C# programavimo kalbą siekiant toliau įžengti į ASP .NET teritoriją. Sukurtas aplikacijas(puslapius) dažniausiai naudoja verslo sektorius(enterprise), todėl ASP .NET hostingo paslaugų firmų Lietuvoje nėra tiek daug, o pačios talpinimo paslaugos yra pakankamai brangios vien dėl to, jog kainuoja Windows licenzijos. Užsienyje net nemokamų ir gerų hostingų taip pat sunku surasti. Pasikurti savo serverį taip pat galima, jeigu prieinamas Windows Server OS, kuri kartu jau integruoja ir IIS (Internet Information Services), reikalingą ASP .NET veikimui. Instaliavus belieka tik pasirinkti ir nustatyti, jog norite sukurti Web serverį. Pabaigai pridursiu, jog dirbančių su ASP .NET Lietuvoje yra pakankamai nemažai ir dažniausiai, kaip ir minėjau, ASP .NET labiau naudojamas didesnio verslo ar enterprise lygio svetainėms kurti, tačiau niekas nesako, jog negalima panaudoti ir mažesniems iššūkiams.

III. JavaEE JSP – write once, run [almost] everywhere fanatikams

                Nuo Web sprendimų neatsilieka ir Java plėtojanti JSP (Java Server Pages) platformą JavaEE pagrindu Web aplikacijoms kurti. Kūrimo principai panašus kaip ir prieš tai minėtų technologijų: aplikacija susideda iš HTML JSP puslapių, kuriuose <jsp> žymomis aprašytas Java kodas, klientui pareikalavus puslapio Java VM(virtuali mašina) apdoroja tai, kas parašyta ir sugeneruoja dinaminį turinį. Patys JSP puslapiai nėra atskirai talpinami serveryje, o supakuojami į taip vadinamą WAR (Web application archive) failą, kuris yra ne kas kita, o JAR failas su papildomais MANIFEST failais ir papildoma XML konfigūracija. JSP puslapių alternatyva – Java Servlet‘ai, klasės, kurios turi apibrėžtą API ir apdoroja ateinančias užklausas.
                Bendru atveju bet kokio Java kodo vykdymas leidžia serveryje išnaudoti visas Java galimybes: panaudoti EJB(Enterprise Java Beans) komponentus, multiplatformiškumą, prisijungti legacy sistemas ir kt., kas išties yra puiku. Java aplikacijos ypač paplito Enterprise verslo lygyje ir taikomos gan rimtoms užduotims spręsti. Taip pat JavaEE nė kiek nenusileidžia spartos atžvilgiu nuo kitų technologijų ir yra naudojamos realaus laiko situacijoms apdoroti, valdyti. Taip pat plėtojamas Java Server Faces karkasas grafinei sąsajai kurti ir t.t.
             Pradėti kurti JavaEE aplikacijas nėra labai sudėtinga, tereikia susiinstaliuoti JavaEE palaikantį serverį, kurių šiuo metu yra nemažai, todėl yra iš ko pasirinkti. Labiausiai paplitę ir naudojami Apache Tomcat, JBoss, GlassFish, Spring bei IBM WebSphere aplikacijų serveriai. Jie realizuoja aplikacijos konteinerį, kuriame ir veikia sukurta sistema. Taip pat serveriai turi valdymo bei monitoringo priemones, konsoles. Mano bandymu metu labiausiai draugiškas naujam vartotojui buvo Apache Tomcat, kuris pasileidžia ypač greitai - per 2-3 sekundes bei pateikia neperkrautą ir patogų valdymo meniu, daug pavyzdžių. Masyvesnis variantas – JBoss, kuris parašytas Apache Tomcat pagrindu, skirtas ypač rimtiems enterprise projektams realizuoti.
                Web hostingo paslaugos paremtos JavaEE technologija kainuoja nemažai ir nėra jų labai daug(ypač Lietuvoje sunku surasti), kadangi nėra tiek paplitusios kaip, pavyzdžiui, PHP ir dažnai neįtraukiamos į paslaugų kompleksą. Vis dėlto, jei sprendimas reikalauja tokių technologijų, galima pasinaudoti dedikuotų serverių paslaugomis ar pan.

IV. Python/Ruby – besivaikant naujovių arba ieškantiems nestandartinių sprendimų

                Dar reikėtų pakalbėti apie nestandartines, bet gan įdomias ir patrauklias kalbas Web sprendimams realizuoti – Python ir Ruby. Šios kalbos pilnai objektinės OOP, labai „šviežios“, greitai įgavo populiarumą dėl savo lankstumo, paprastumo. Joms yra nemažai karkasų, kurie leidžia realizuoti norimas Web aplikacijas. Python kalbai - Django, Pylons, Grok, Zope, o Ruby - Ruby on Rails, Ramaze, Merb, Halcyon, Wuby ir t.t. išties nemažai. Kiek teko susidurti su Python Web kūrimu, tai paėmus tą patį Django, kurį, beje, naudoja ir Google AppEngine, iškart gauname šablonų sistemą, standartines formas, MVC ir duomenų bazę out-of-the-box, belieka tik teisingai sukonfigūruoti. Pats puslapių apdorojimas skaidomas pagal MVC principus į Controller klases – pirmiausia sukuriama norimo puslapio klasė paveldinti bazinę klasę ir index() metode apdorojama užklausa, generuojamas dinaminis turinys. Taip sukurti puslapiai yra suregistruojami Django sistemos sukūrimo metu, nurodant, kokiu keliu norime puslapį pasiekti. Principai nesudėtingi, be to gauname ir visas Python funkcijas ir kalbos įmantrybes – Web kūrimas tampa dar įdomesnis.
                Pradėti kurti tokioms sistemos išties nesudėtinga – tereikia įsirašyti Python ar Ruby ir parsisiųsti pateikiamą serverio sistemą. Pats HTTP serveris yra realizuojamas atitinkamos kalbos konstrukcijomis sukuriant specializuotą HTTP serverį. Be abejo, su šiomis sistemomis dirbančių žmonių skaičius tikrai nėra didelis, o problema tame, kad sudėtinga rasti tam tikslui ir specializuotą hostingą, todėl tokias paslaugas siūlančių – vienetai. Na išeitis visada yra – dedikuoti serveriai arba pasinaudoti paieškos giganto Google siūloma AppEngine paslauga. Rekomenduoju išbandyti AppEngine vien dėl smalsumo, pasižiūrėti, kaip veikia paskirstyta Google serverių sistema.

V. Apibendrinimas

                Mokėti kažkurią kalbą – tik pradžia Web kūrime, išmanyti kaip tai panaudoti – jau technologiniai dalykai. Web kūrimas savaime įdomi ir labai labai plati sritis, nuolat tobulėjanti. Tai, ko anksčiau nebuvo, pasirodžius pirmiesiems HTML puslapiams – jQuery, JavaScript, CSS, AJAX, Flash, Silverlight ir kt. technologijos, šiandien jau laikomos kaip ir de-facto reikalavimas dinaminiams, įspūdingiems, konkurencingiems bei pilnaverčiams puslapiams kurti. Be šių „saldainiukų“ Web dabartiniu metu jau nebeįsivaizduojamas. Todėl pradėjus gilintis į Web programavimą vienoje vietoje niekada neteks ilgai užsistovėti. Visada siūlau pasidomėti aprašytomis technologijomis ir net jas išbandyti, nes tikėtis, kad visko išmokys mokykloje ar universitete, juo labiau profesionaliu lygiu – tiesiog per daug naivu. Iki kito susitikimo – sėkmės Web platybėse.

Komentarų nėra:

Rašyti komentarą