webalkalmazások fejlesztése php És java nelven

Upload: schiman-daniel

Post on 02-Jun-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    1/27

    Webalkalmazsok fejlesztsePHP s Java nyelven

    Ivnfi Zoltn

    2003

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    2/27

    2

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    3/27

    Tartalomjegyzk

    1. A PHP s a Java sszehasonltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1. A PHP kialakulsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. A Java kialakulsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3. Technikai jellemzok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.4. Elonyk s htrnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Alkalmazsi terletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2. Egy webalkalmazs implementlsa PHP s Java nyelven . . . . . . . . . . . . 112.1. A webalkalmazs specifikcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2. Az adatbzis megtervezse s ltrehozsa . . . . . . . . . . . . . . . . . . . . . . . 122.3. A knyvtrszerkezet s a fejlesztsi folyamat . . . . . . . . . . . . . . . . . . . . . 132.4. Az implementcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5. Teljestmnyvizsglat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.6. Tapasztalatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    Irodalomjegyzk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    A fggelk: Rvidtsek jegyzke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    B fggelk: Az adatbzis-tblk ltrehozsra szolgl SQL utastsok . . . . 23

    C fggelk: A Java fejlesztsi folyamatot automatizl Ant feladatok . . . . . . 25

    Trgymutat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    3

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    4/27

    4

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    5/27

    1. fejezet

    A PHP s a Java sszehasonltsa

    Akrcsak a hagyomnyos programok fejlesztsekor, webalkalmazsok implemen-

    tlshoz is tbb programozsi nyelv kzl vlaszthatunk. Ez a tanulmny kt olyannyelvet vizsgl meg s hasonlt ssze, mely alkalmas webalkalmazsok ksztsre.Ebben a fejezetben kialakulsuk trtnett s fobb tulajdonsgaikat ismerhetjk meg.

    1.1. A PHP kialakulsa

    Rasmus Lerdorf 1995-ben alkotta meg a PHP/FI1 nyelvet web-oldala forgalmnakszmllsra. A nyelv clja ksobb dinamikus weboldalak ltrehozsa lett. A PHP/FI1997-ben elkszlt 2.0 verzija gyorsan npszeruv vlt. Az 1998-ban elkszlt 3.0

    verzi PHP2 nven jelent meg. A fejlesztok a rvidts megvltoztatsval szerettkvolna jelezni, hogy a nyelv felhasznlsa mr nem korltozdott szemlyes clokra.1998-ban jelent meg a PHP 4, ami rendkvli npszerusgre tett szert.

    1.2. A Java kialakulsa

    A Sun 1991-ben indtott projektet a szmtstechnika kvetkezo hullmnak azo-nostsra. A Green Projectcsapata az interaktv televzizsban ltta a jvot. Afejlesztoknek egy binris platformfggetlensget nyjt nyelvre volt szksgk a pro-

    totpus megalkotshoz. gy szletett meg mintegy a projekt mellktermkeknt az Oak nyelv. A projekt azonban nem keltette fel a kbeltelevzi-szolgltatk rdek-lodst, gy a csapat az Internet fel fordult.

    Az j jvokp az interaktv Internet lett. A fejlesztok a Mosaic bngszoprogramtalaktsval ltvnyosan mutattk be az j platform lehetosgeit.

    A nyelvet 1995. mjus 23-n jelentettk be hivatalosan Java nven. A futtatkr-nyezet hamarosan bekerlt a Netscape Navigator bngszoprogramba s forradalma-stotta az Internetet.

    1.Personal Home Page / Forms Interpreter2.PHP: Hypertext Preprocessor

    5

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    6/27

    6 1. A PHP s a Java sszehasonltsa

    A Java mra szmos alkalmazsi terleten nyert teret. A kliens-oldali programo-zs (J2SE3) mellett betrt a mobil kszlkek (J2ME4), s az elosztott rendszerek(J2EE5) piacra is.

    1.3. Technikai jellemzok

    A PHP programok vgrehajtsa rtelmezovel trtnik, vagyis a forrskd vgre-hajtskor kerl feldolgozsra. Ez gyors fejlesztsi folyamatot tesz lehetov (nincsszksg fordtsra), viszont a hibk csak az rintett programrszek lefutsakor sz-lelhetok.

    A PHP nyelv vltozi rtkadssal jnnek ltre, nem szksges deklarlnioket.Tpusukat a hozzjuk rendelt rtk hatrozza meg, jabb rtkadssal azonban ezbrmikor megvltoztathat. Emiatt a PHP n. gyengn tpusos nyelv. Ez az egy-

    szerusg azonban cskkenti a programok ttekinthetosgt s karbantarthatsgt,tovbb hibk forrsa lehet.

    A gyengn tpusos, rtelmezett vgrehajts nyelveket parancsnyelveknek vagyszkript-nyelveknek nevezzk. A PHP teht parancsnyelv.

    A Java ezzel szemben erosen tpusos nyelv, azaz a vltozkat hasznlat elott dek-larlni kell, s tpusuk ezt kvetoen nem vltozhat. A Java forrskd fordtskorkerl feldolgozsra. Ez all kivtelt kpeznek a megjelentsrt felelos JSP6 oldalak,melyek az elso futtats alkalmval fordulnak le.

    A PHP API7 fggvnyeket tartalmaz, mg a Java API osztlyokat.A PHP nyelv kifejezetten dinamikus weboldalak ltrehozsra szolgl. A Java

    ezzel szemben ltalnos cl programnyelv, mely felhasznlhat webalkalmazsokksztsre is.

    A szerver-oldali alkalmazsok felptse alapvetoen eltro a kt nyelv esetn. EgyPHP alap honlap fggetlen szkriptekbol pl fel. Az oldalak nincsenek alkalmaz-sokba szervezve, klnll programrszek, melyek sszedolgozhatnak. Ez a megk-zelts alkalmass teszi a PHP-t olyan weboldalak ltrehozsra, melyek nem adatokmegjelentsre s vltoztatsra szolglnak, hanem tnyleges tartalmat hordoznaks maguk is vltozhatnak. Ilyen feladat pldul egy honlap oldalai kzti navig-ci biztostsa vagy az oldalak vlaszthat stlus megjelentse. Az ilyen tartalomvaljban statikus, hiszen nem vltoz adatok megjelentsre szolgl. A honlap

    maga termszetesen vltozhat, ami szksgess teszi a navigci megvltoztatstaz sszes tbbi oldalon, illetve minden oldal elksztst az sszes vlaszthat stlusszerint. Ennek automatizlsra szolgl a PHP alkalmazsa, a tartalom azonban ktilyen mdosts kztt nem vltozik.

    A PHP-vel ellenttben a Java nyelvu programozs az alkalmazs fogalma krpl. Az elozo bekezdsben emltett feladat megvalstsra a Java nem optimlis

    3.Java 2 Platform, Standard Edition4.Java 2 Platform, Mobile Edition5.Java 2 Platform, Enterprise Edition6.JavaServer Pages7.Application Programming Interface

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    7/27

    1.4. Elonyk s htrnyok 7

    vlaszts. A Java erossge a webalkalmazsok ksztse. Ezek maguk ritkn vltoz-nak, a dinamizmus az ltaluk megjelentett s mdostott adatokban jelentkezik.

    Eltro az alkalmazsok adminisztrcija is. A PHP alkalmazsok konfigurlsa aprogramban trtnik, az alkalmazst kell illeszteni a krnyezethez. Ez feladat alkal-mazsonknt eltro, ezrt programozi segtsget vagy kpessgeket ignyel. A Javaalkalmazsok konfigurlsa egysges, kzponti adminisztrcin keresztl trtnik:az adminisztrtor testre szabott krnyezetet biztost az alkalmazsnak.

    Az alkalmazsok prhuzamos futtatsa teszi lehetov egy idoben tbb krs ki-szolglst. Ez PHP alkalmazsoknl folyamatokkal, mg a Java esetben szlakkalvalsul meg. A folyamatokkal trtno prhuzamosts tbb szempontbl is htr-nyos [7]. A folyamatok eroforrsignyesek, mivel fggetlenek egymstl. Mindenkiszolgl folyamat sajt memriaterlettel s perzisztens adatbzis-kapcsolatokkalrendelkezik. A HTTP8 szabvny 1.1 verzija radsul lehetov teszi a kapcsolatokletben tartst kt krs kztt, ami miatt a prhuzamosan kiszolgland krsek

    szmnl jval tbb folyamatra van szksg.Szlak alkalmazsa esetn a fenti htrnyok nem jelentkeznek. Mivel a szlak

    kzs eroforrsokat hasznlhatnak, nincs tbbszrs memria-hasznlat, nincsenekmegnyitott, de nem hasznlhat adatbzis-kapcsolatok, sem krsekre vrakoz sz-lak. Megszunik azonban a fggetlen folyamatok ltal nyjtott biztonsg is, egy szllellsa az egsz folyamatot magval rnthatja.

    A fent ismertetett klnbsgek sszefoglalsa az 1.1. tblzatban tallhat.

    Jellemzo PHP Java

    Nyelv tpusa parancsnyelv programnyelv Vgrehajts rtelmezovel fordtst kvetoenTpusossg gyenge erosAPI jellege fggvnyknyvtr osztlyknyvtrAlkalmazsi terlet weboldalak ltrehozsa ltalnos cl

    Tartalom szervezse klnll szkriptek alkalmazsokAdminisztrci alkalmazs-fggo egysgesPrhuzamossg biztostsa folyamatokkal szlakkal

    1.1. tblzat. A PHP s a Java ltalnos s szerver-oldali jellemzoi

    1.4. Elonyk s htrnyok

    Mindkt nyelv rendelkezik kedvezo tulajdonsgokkal. A PHP legfobb elonye egy-szerusge, knnyu elsajtthatsga. A Java nyelv megtanulsa sokkal nehezebb fel-adat s ennek megfeleloen tbb idot is vesz ignybe.

    A PHP s a Java is hordozhat, br aprbb inkompatibilitsokkal mindkt oldalontallkozhatunk.

    8.Hypertext Transfer Protocol

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    8/27

    8 1. A PHP s a Java sszehasonltsa

    Mindkt nyelv alkalmazhat szerver oldalon. A Java kliens oldali programozs-hoz is elterjedt eszkz, a PHP ilyen cl felhasznlsa lehetsges ugyan, de nemjellemzo.

    Mindkt nyelven lehet ugyan objektum-orientltan programozni, a PHP ezen a te-rleten azonban mg nem elg kiforrott. Az objektum-orientltsg nyelvi tmogatsaa PHP-ban meglehetosen szegnyes: hinyzik az egysgbe zrs, nincsenek kivtelek,az API sem objektum-orientlt.

    A PHP API msik hibja az inkonzisztencia. A fggvnyek elnevezse nem egy-sges, pl. a tmbkkel kapcsolatos fggvnyek egy rsze array_ kezdetu, ms r-sze nem. Egysges adatbziskezels helyett minden adatbziskezelo elrshez msfggvnyeket kell hasznlnunk.

    A Java API tbbnyire konzisztens, jl tgondolt. Megalkotsa tervezsi mintkfelhasznlsval trtnt, s a programozt is ezek alkalmazsra sztnzi. Tmogatstnyjt a tbbnyelvu alkalmazsok ksztshez is.

    A Java nyelvu fejleszts megknnytsre szmos IDE9 kzl vlaszthatunk, a PHPnyelvu programozshoz nem ll rendelkezsre kiforrott fejlesztoi krnyezet.

    Szerver-oldali alkalmazsok ksztsekor a Java elonys tulajdonsga az enter-prise szolgltatsok (perzisztencia, elosztott tranzakcik, biztonsg stb.) elrheto-sge (J2EE). Kiforrottabb s ltalnosabb fejlesztoi knyvtrak rhetok el, mint PHPalatt.

    PHP alkalmazsokhoz knnyen tallhat hostingszolgltats, azaz sok cg biz-tost lehetosget szervern PHP alkalmazsok futtatsra. Java alkalmazsok tele-ptsre nem sok helyen van lehetosg, s specilis programszervezs szksges akzponti adminisztrci megkerlshez. Java webalkalmazsaik futtatshoz gy a

    cgeknek ltalban sajt szervert kell zemeltetnik.A PHP rtelmezo ingyenes program. A Java alkalmazs-szerverek kzt tallhatingyenes s kereskedelmi szoftver is.

    Az elonyk sszefoglalsa az 1.2. tblzatban tallhat.

    1.5. Alkalmazsi terletek

    A kt platform lehetosgeit s korltait jl mutatjk a nyelvek jellegzetessgei sa rendelkezsre ll API-k s klso knyvtrak. Java-ban tetszoleges webalkalma-zst megvalsthatunk az egszen egyszeruektol a komplex, elosztott rendszerekig.PHP-ban ezzel szemben klnll szkriptekrol beszlhetnk, melyek kisebb alkalma-zsknt sszedolgozhatnak. A kt platform alkalmazsi terletei az 1.3. tblzatbanlthatk.

    Java fejlesztseknl az alkalmazs fogalmt nlklzo dinamikussg, a kis, fg-getlen web-oldalak kezelse okoz nehzsget, mg PHP-ban nagyobb webalkalmaz-sok valsthatk meg nehezen. Ilyen rendszerek esetn knnyedn kivlaszthatjuk afeladatra alkalmasabb platformot.

    9.Interactive Development Environment

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    9/27

    1.5. Alkalmazsi terletek 9

    Tulajdonsg PHP Java

    Gyors elsajtthatsg Hordozhatsg Szerver oldali alkalmazhatsg Kliens oldali alkalmazhatsg * Objektum-orientltsg * Egyszeru hibakezels API konzisztencia Tervezsi mintk az API-ban

    Tbbnyelvusg tmogatsa IDE

    Enterpriseszolgltatsok Ksz komponensek *

    Hosting *Ingyenessg *

    igen nem * rszben

    1.2. tblzat. A PHP s a Java kedvezo tulajdonsgai ltalban s a szerver-oldalon

    Alkalmazsi terlet PHP Java

    Fggetlen weboldalak Egyszeru alkalmazsok sszetett alkalmazsok

    igen nem

    1.3. tblzat. A kt platform lehetosgei

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    10/27

    10

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    11/27

    2. fejezet

    Egy webalkalmazs implementlsaPHP s Java nyelven

    Kisebb webalkalmazsok fejlesztsre mindkt technolgia alkalmazhat, gy fel-merl a krds, hogy melyik alkalmasabb a feladatra. Az ltalnos vlemny szerintilyen alkalmazsokhoz a PHP a jobb vlaszts, mivel a fejleszts gyorsabb, s merta Java implementcik jval lassabbak. Egyes forrsok szerint a Java alkalmazsokvlaszideje 520-szorosa a PHP vltozatoknak [2].

    A fejezet tmja egy egyszeru webalkalmazs elksztse s vizsglata a kt plat-formon, mely alapjn megksrelhetnk vlasztani kzlk, illetve megbizonyosod-hatunk az ltalnosan elterjedt vlemny helyessgrol, vagy megcfolhatjuk azt.

    2.1. A webalkalmazs specifikcija

    A megvalstand alkalmazs feladata webes kzvlemnykutats vgzse. A we-balkalmazs kt oldalbl ll. Az sszefoglal oldalon (2.1. bra) tblzatos formbantekinthetok meg a kzvlemnykutatsban rszt vevo krdsek s a leadott szavaza-tok szma.

    2.1. bra. A krdsek listja

    11

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    12/27

    12 2. Egy webalkalmazs implementlsa PHP s Java nyelven

    Az ttekinto oldal minden krdshez tartozik egy rszletes oldal (2.2. bra),mely a krdsre adhat vlaszokat tartalmazza a szavazs aktulis llsnak szm-szeru s grafikonos feltntetse mellett. Ugyancsak ezen az oldalon lehet leadni aszavazatokat az egyes vlaszokra.

    2.2. bra. Egy krds s a r adhat vlaszok

    A szavazatok leadst kvetoen a rszletes oldal frisstett vltozata jelenik meg.A szavaz ltal hasznlt szmtgp IP1 cmt rgzti a rendszer, hogy megakad-lyozza a tbbszri szavazst. Az sszes szavaz IP cmnek eltrolsa hosszabb tvonnagyon eroforrsignyes lenne, mikzben a mdszer egybknt is csak rvid tvonmegbzhat. Ennek oka az, hogy tbb, fggetlen szavaznak is lehet azonos IP cme.

    Ehhez elegendo, ha tbben ugyanazt a szmtgpet hasznljk, de kln szm-tgpek esetn is elofordulhat bizonyos technolgik alkalmazsakor (pl. dinamikuscmkioszts, NAT2). Ezrt a kizrsok egy ido elteltvel rvnyket vesztik, a rgztettIP cmek trlsre kerlnek a rendszerbol. A kizrsok termszetesen az egyes krd-sekhez ktttek, msik krdsre szavazhat a kizrt szemly. Amennyiben a rendszertbbszrs szavazst szlel, egyszeruen figyelmen kvl hagyja a szavazatot.

    Az alkalmazs implementcijval szemben tmasztott kvetelmnyek az tte-kinthetosg, a bovthetosg s az adatbziskezelo-fggetlensg.

    2.2. Az adatbzis megtervezse s ltrehozsaAz adatbzis hrom tblbl ll (2.3. bra). A krdsek (questions) tbla tar-

    talmazza a krdsek azonostjt (id) s szvegt (body). A vlasztsi lehetosgek(choices) tbla tartalmaz egy idegen kulcsot (question_id), ami a krdseket kapcsoljassze a hozzjuk tartoz vlaszokkal, tovbb a vlaszok felsorolsban elfoglalt he-lyt (place), a vlasz szvegt (body) s a szavazatok szmt (votes).

    A kizrsok (exclusions) tblban nyilvntartott adatok a szavaz (voter), a krdsazonostja (question_id) s a kizrs megszunsnek ideje (expiration).

    1.Internet Protocol2.Network Address Translation

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    13/27

    2.3. A knyvtrszerkezet s a fejlesztsi folyamat 13

    choices

    PK, FK1 question_idPK place

    bodyvotes

    questions

    PK id

    body

    exclusions

    PK voterPK, FK1 question_id

    I1 expiration

    2.3. bra. Az adatbzis smja

    A tblk ltrehozsra szolgl SQL3 utastsok megtallhatk a B fggelkben.

    2.3. A knyvtrszerkezet s a fejlesztsi folyamat

    PHP fejleszts esetn a klnbzo feladatokat vgzo programrszek elklnt-sre nincs kvetelmny, sem ajnlott md vagy bevett szoks. Az MVC4 architektraalkalmazsa azonban jelentosen nveli a program ttekinthetosgt s karbantart-hatsgt, a kszlo alkalmazst ezrt a a 2.4. brn lthat knyvtrszerkezetbeszerveztem.

    phpimportinclude

    2.4. bra. A PHP alkalmazs knyvtrszerkezete

    Az alkalmazs knyvtra a statikus elemeket a programszervezstol fggetlen, te-matikus szervezsben tartalmazza, pldul HTML5 file-okat a gykrben, kpeket azimages knyvtrban, CSS6 file-okat a style knyvtrban. Ugyancsak az alkalmazsgykerben kapnak helyet a kvlrol elrheto PHP oldalak. Ezek vezrlik a felhasz-nli krsek vgrehajtst, vagyis az MVC minta szerint controllertpus elemek.

    Az importknyvtr tartalmazza a alkalmazs modelljt reprezentl programr-szeket, vagyis az MVC minta model tpus elemeit. A knyvtrban tallhat PHPoldalak a nevkkel megegyezo vltozkat vagy osztlyokat definilnak, kimenetknincs. Ezeket az oldalakat jellemzoen az include_once(vagy require_once) utas-

    tssal rjk el.Az includeknyvtrban tallhatk a tnyleges megjelentst vgzo oldalak. Ezekkimenete a korbban definilt vltozk fggvnyben vltozhat. Az MVC mintaviewelemeit valstjk meg. Ezeket az oldalakat jellemzoen az include(vagy require)utastssal rjk el.

    Az imports az includeknyvtrak tartalma kzvetlenl nem rheto el a webenkeresztl.

    3.Structured Query Language4.ModelViewController5.Hypertext Markup Language6.Cascading Style Sheets

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    14/27

    14 2. Egy webalkalmazs implementlsa PHP s Java nyelven

    A PHP fejleszts nem ignyel fordtst vagy teleptst, a PHP oldalak webes fe-llete azonnal elrheto egy bngszoprogram segtsgvel. A fordtsi s a futsihibkrl is az adott oldal elrsekor rteslnk.

    Egy Java web-alkalmazs elksztse jval bonyolultabb knyvtrszerkezetet sfejlesztsi folyamatot ignyel. A Java vltozat knyvtrszerkezete a 2.5. brn lthata PHP vltozatval sszevetve.

    javasrc

    classesweb

    WEB-INFinclude

    thirdparty

    libtldbuild

    classesweb

    WEB-INFclasseslibtld

    includewar

    phpimportinclude

    2.5. bra. A Java alkalmazs knyvtrszerkezete a PHP vltozatval sszevetve

    Az src knyvtr tartalmazza az alkalmazs forrskdjt. A Java megkveteli afordtst ignylo osztlyok s a kzvetlenl felhasznlhat tartalom elklntst. Az

    src/classesknyvtrba kerlnek az osztlyok csomagokba szervezve. Kln csomag-ban kapnak helyet az MVC minta szerinticontrollers modelosztlyok.

    Azsrc/webknyvtr tartalmazza a statikus elemeket a PHP vltozatnl ismertetettszervezsben. Azsrc/web/includeknyvtrban tallhatk az MVC mintaviewelemeitmegvalst, megjelentsrt felelos JSP oldalak. Az src/web/WEB-INFknyvtrban

    konfigurcis file-ok tallhatk.Athirdpartyknyvtr klso kiegsztseket tartalmaz.Az alkalmazs felptse a buildknyvtrban trtnik. Ennek elso lpseknt az

    src/classesknyvtrban tallhat osztlyokat lefordtjuk a build/classesknyvtrba.Abuild/webknyvtrban lltjuk ssze a webalkalmazs rszeit. Ez a knyvtr az

    src/webknyvtr msolata, melynek WEB-INFalknyvtrhoz hozzadjuk a build/classesknyvtrat s athirdpartyknyvtr tartalmt. A futtathat vltozatot egyet-len file-ba csomagolhatjuk a build/warknyvtrba, vagy kzvetlenl telepthetjk aszerverre, amennyiben az tmogatja ezt.

    Mint lthat, a Java webalkalmazs fejlesztsi folyamata jval bonyolultabb. Alpsek termszetesen automatizlhatk, ennek legclszerubb mdja az Apache Ant

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    15/27

    2.4. Az implementcik 15

    program hasznlata. A fenti lpseket megvalst Ant feladatokat a C fggelk tar-talmazza.

    2.4. Az implementcik

    Az alkalmazs klnbzo vltozatainak elksztse sorn megmrtem az imple-mentlshoz szksges idorfordtst. Mivel a megjelentendo oldalak megegyeznekmindkt platformon, azok statikus vltozatait elozoleg elksztettem, gy a rfordtottido ezt a lpst nem tartalmazza. A szksges SQL parancsokat is elore kidolgoztam.

    A PHP vltozat elksztse 4 rt vett ignybe. A PHP API eltro fggvnyekettartalmaz a klnbzo adatbziskezelok elrshez; nem teszi lehetov az adatbzis-kezelo-fggetlen programozst. Ezt a problmt az ingyenes ADOdb7 osztlyknyv-tr hasznlatval oldottam meg, ami lehetov teszi a klnbzo adatbziskezelok

    egysges kezelst.Sajnos az alkalmazs ksobbi vizsglatakor kiderlt, hogy az elg rossz teljest-mnyt nyjt. A PHP alkalmazst ezrt elksztettem mg egy vltozatban, sajt adat-bziskezelssel. Ehhez MySQL s PostgreSQL meghajtkat ksztettem; termszete-sen tovbbi meghajtk is kszthetok. A bovts fl rt vett ignybe, s megoldottaa teljestmny-problmt.

    A Java vltozat mrete ktszerese a PHP vltozatnak s elksztse 5 rig tar-tott. A JDBC8 ltal biztostott absztrakci elegendonek bizonyult az alkalmazs adat-bziskezelo-fggetlen elksztshez. A hrom implementci adatai megtallhatka 2.1. tblzatban.

    Implementci Mret (byte) Sorok szma Idorfordts (perc)

    PHP ADOdb-vel 7 034 196 240PHP ADOdb nlkl 8 872 275 270Java 15 768 556 300

    2.1. tblzat. A klnbzo implementcik sszehasonltsa

    2.5. TeljestmnyvizsglatAz elkszlt implementcik teljestmnynek vizsglathoz az Apache JMeter

    programot hasznltam.A teszt tbb szlon fut, minden szl egy felhasznlt jelkpez. A vizsglathoz fel-

    tteleztem, hogy a felhasznlk tlagosan 20 krdst tekintenek meg, melyek kzl5-re szavaznak is. A tesztben ennek megfeleloen 4 megtekintst 1 szavazs kvet,amit minden szl 5-szr ismtel meg. A megtekintett krdsek s a leadott szavaza-tok vletlenszeruek. Minden krst fl msodperces vrakozs kvet.

    7.Active Data Objects Data Base8.Java Database Connectivity

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    16/27

    16 2. Egy webalkalmazs implementlsa PHP s Java nyelven

    Mivel a tesztels sorn az egyes felhasznlkat megszemlyesto szlaknak nincssajt IP cmk, a webalkalmazsok kizrsi mechanizmust cookie-alapra vltoztat-tam. Acookie-k kliens oldalon mdosthatk, de a tesztels folyamn ez nem okozgondot.

    A PHP vltozat maximlis teljestmnynek elrshez az APC9 technolgit hasz-nltam. Ez a PHP oldalakat a JSP oldalakhoz hasonlan elso elrskor lefordtja,majd a tovbbiakban a lefordtott vltozatot hasznlja. Ezzel kikszblheto az r-telmezett vgrehajtsbl add lassuls.

    A tesztelst a kvetkezo eszkzkkel vgeztem:

    AMD Duron 1 GHz processzor 512 MB memria Debian GNU/Linux 3.0 (opercis rendszer) Linux kernel 2.4.18 (opercis rendszer mag)

    Apache 1.3.26 (HTTP szerver) PHP 4.1.2 (PHP rtelmezo) APC 1.1.0 (PHP gyorst) ADOdb 3.80 (adatbziskezelo osztlyknyvtr PHP-hoz) Blackdown Java 1.3.1-02b-FCS (Java futtatkrnyezet) Apache Tomcat 4.1 (servlet/JSP trol) MySQL 3.23.49 (adatbziskezelo) Apache JMeter 1.8.1 (teljestmny-elemzo)

    A terhelsi tesztet mindhrom implementcin tizenegy vltozatban vgeztem el,

    klnbzo terhelsi szintek mellett. Az eredmnyeket grafikonon brzoltam (2.6. s2.7. bra).

    0 2 4 6 8 10 12 14 16 18 20

    0

    100

    200

    300

    400

    500

    szlak szma

    kiszolglt krsekszma percenknt

    PHP ADOdb-velPHP ADOdb nlklJava

    2.6. bra. A kiszolglt krsek szma percenknt

    9.Alternative PHP Cache

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    17/27

    2.6. Tapasztalatok 17

    0 2 4 6 8 10 12 14 16 18 20

    0

    100

    200

    300

    400

    500

    600

    700

    800

    szlak szma

    vlaszido(ezredmsodperc)

    PHP ADOdb-vel

    PHP ADOdb nlklJava

    2.7. bra. Vlaszidok

    2.6. Tapasztalatok

    Az zleti logika elksztsre a Java alkalmasabbnak bizonyult, a webes felletmegalkotsa viszont PHP-ban volt knnyebb. A Java API-bl hinyzik nhny alap-veto szolgltats, amire webes fejlesztseknl szksg lehet, pl. a HTML-ben vagy azURL10-ekben specilis jelentssel br karakterek kezelse, szvegek kitltse adottkarakterrel adott hosszig stb. A PHP API rendelkezik ilyen fggvnyekkel.

    A PHP taln legzavarbb szolgltatsa az idzojelek automatikus talaktsa. En-nek hasznlata a PHP konfigurcis llomnyban llthat be, ami lehetetlenn teszivltoztats nlkl hordozhat programok ksztst. Inkompatibilts forrsa lehet arelatv tvonalak vltozatonknt eltro kezelse is a beillesztett oldalak aktulisknyvtra bizonyos rendszereken sajt knyvtruk, mshol a rjuk hivatkoz oldal

    knyvtra.Az alkalmazs implementlsa PHP nyelven kevesebb idot vett ignybe, de ke-

    vsb ttekintheto s bovtheto kdot eredmnyezett. Az ADOdb hasznlata jelen-tosen hordozhatbb, m alacsonyabb teljestmnyu alkalmazst eredmnyezett. AzADOdb-t nem hasznl PHP vltozat s Java alkalmazs teljestmnye megkzel-toleg megegyezett a Java alkalmazsok vlaszideje teht az ltalnosan elterjedtvlemnytol eltroen nem tbbszrse a PHP vltozatoknak.

    10.Uniform Resource Locator

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    18/27

    18

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    19/27

    Irodalomjegyzk

    [1] Stig Sther Bakken Alexander Aulbach Egon Schmid Jim Winstead LarsTorben Wilson Rasmus Lerdorf Andrei Zmievski Jouni Ahto:

    PHP Manualhttp://www.php.net/manual/en/

    The PHP Documentation Group, 2003.

    [2] Al Dev (Alavoor Vasudevan):PHP HOW-TO2002.

    [3] The Java Tutorialhttp://java.sun.com/docs/books/tutorial/

    Sun Microsystems, Inc., 2003.

    [4] Eric Armstrong Jennifer Ball Stephanie Bodoff Debbie Carson Ian Evans Maydene Fisher Dale Green Kim Haase Eric Jendrock:The J2EE 1.4 Tutorialhttp://java.sun.com/j2ee/1.4/docs/tutorial/doc/

    Sun Microsystems, Inc., 2003.

    [5] Jon Byous:Java Technology: The Early Yearshttp://java.sun.com/features/1998/05/birthday.html

    Sun Microsystems, Inc., 1998.

    [6] PHP vs. Java - which is better?http://raibledesigns.com/comments/rd/sunsets/php_vs_java_which_is

    Raible Designs, 2003.

    [7] Brian Neal:Building a Better Webserver in the 21st Centuryhttp://www.aceshardware.com/read.jsp?id=45000240

    Aces Hardware, 2001.

    [8] Free On-line Dictionary of Computinghttp://www.foldoc.org/

    2003.

    19

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    20/27

    20

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    21/27

    A fggelk

    Rvidtsek jegyzke

    ADOdb Active Data Objects Data Base. Adatbziskezelo-fggetlensget biztostosztlyknyvtr PHP-hoz.

    APC Alternative PHP Cache. A PHP alkalmazsok teljestmnyt nvelo techno-lgia. A PHP oldalakat a JSP oldalakhoz hasonlan elso elrskor lefor-dtja, majd a tovbbiakban a lefordtott vltozatot hasznlja. Ezzel kik-szblheto az rtelmezett vgrehajtsbl add lassuls.

    API Application Programming Interface, alkalmazs programozi fellet. Az APIbizonyos feladatok vgrehajtsra s alsbb szintu szolgltatsok elrsrebiztost lehetosget az alkalmazs szmra, mikzben elfedi a tnylegesimplementci rszleteit.

    CSS Cascading Style Sheetskaszkdolhat stlus-lapok. HTML oldalak megjele-nst (stlus, sznek, betutpusok, mretek) szablyoz ler nyelv.

    IDE Interactive Development Environment, interaktv fejlesztoi krnyezet. A pro-gramrs folyamatnak tmogatsra szolgl rendszer.

    J2EE Java 2 Platform, Enterprise Edition. A Java platform elosztott rendszerekpiacra sznt kiadsa.

    J2ME Java 2 Platform, Mobile Edition. A Java platform mobil-kszlkek piacrasznt kiadsa.

    J2SE Java 2 Platform, Standard Edition. A Java platform ltalnos kiadsa.

    JDBC Java Database Connectivity, Java adatbzis-elrs. Egysges adatbziske-zelst nyjt Java API.

    JSP JavaServer Pages. A Java platform HTML-be gyazott technolgija dina-mikus weboldalak ltrehozsra. A hagyomnyos osztlyoktl eltroen aJSP oldalak az elso futtats alkalmval fordulnak le.

    HTML Hypertext Markup Language, hipertext jello nyelv. Dokumentumok kzttinaviglst lehetov tevo ler nyelv.

    21

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    22/27

    22 A fggelk: Rvidtsek jegyzke

    HTTP Hypertext Transfer Protocol, hipertext tviteli protokoll. HTML oldalak t-vitelre szolgl protokoll.

    IP Internet Protocol, internet protokoll. Az Interneten hasznlt hlzati rteg

    protokoll.

    MVC ModelViewController, modellmegjelentsvezrls. Az alkalmazsokttekinthetosgt s karbantarthatsgt nvelo tervezsi minta.

    NAT Network Address Translation, hlzati cm fordts. Hlzati technolgia,mely tbb gp Internetre csatlakozst teszi lehetov azonos IP-cmmel.

    PHP PHP: Hypertext Preprocessor, PHP: hipertext elofeldolgoz. HTML-be gya-zott szerver-oldali parancsnyelv dinamikus web-oldalak ltrehozsra.

    PHP/FI Personal Home Page / Forms Interpreter, szemlyes honlap /urlap-rtelme-zo. A PHP nyelv elodje.

    SQL Structured Query Language, strukturlt lekrdezo nyelv. Relcis adatbzi-sok lekrdezst s mdostsra szolgl szabvnyos nyelv.

    URL Uniform Resource Locator. Egysges cmzs, melyen keresztl egy, az Inter-neten tallhat eroforrs elrheto.

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    23/27

    B fggelk

    Az adatbzis-tblk ltrehozsraszolgl SQL utastsok

    polling.sql1 create table questions(id integer not null,

    2 body text not null,

    3 primary key (id));

    4

    5 create table choices(question_id integer not null,

    6 place integer not null,

    7 body text not null,

    8 votes integer not null,

    9 primary key (question_id, place),

    10 foreign key (question_id) references questions);

    11

    12 create table exclusions(voter char(15) not null,

    13 question_id integer not null,

    14 expiration timestamp not null,

    15 primary key (voter, question_id),

    16 foreign key (question_id) references questions);

    17

    18 create index exclusions_expiration on exclusions(expiration);

    23

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    24/27

    24

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    25/27

    C fggelk

    A Java fejlesztsi folyamatotautomatizl Ant feladatok

    build.xml8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29 ...

    25

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    26/27

    26

  • 8/11/2019 Webalkalmazsok Fejlesztse PHP s JAVA Nelven

    27/27

    Trgymutat

    adatbziskapcsolat, 7-kezelo, 8, 15, 16

    -fggetlensg, 8, 12, 15, 21sma, 13tbla, 12, 13, 23

    adminisztrci, 7, 8ADOdb, 1517, 21Ant,lsdApache AntApache, 16Apache Ant, 14, 25Apache JMeter, 15, 16Apache Tomcat, 16APC, 16, 21API, 69, 15, 17, 21

    bovthetosg,lsdkarbantarthatsg

    CSS, 13, 21

    fggvny, 68, 15, 17fejlesztsi folyamat, 6, 14, 25folyamat, 7fordts, 6, 7, 14, 16, 21

    HTML, 13, 17, 21, 22

    HTTP, 7, 16, 22IDE, 8, 9, 21IP, 12, 16, 22

    J2EE, 6, 8, 21J2ME, 6, 21J2SE, 6, 21JDBC, 15, 21JMeter, lsdApache JMeterJSP, 6, 14, 16, 21

    knyvtrfejlesztoi, 7, 8, 15, 16, 21file-rendszerben, 13, 14, 17

    karbantarthatsg, 6, 13, 17, 22

    MVC, 13, 14, 22

    NAT, 12, 22

    objektum-orientltsg, 8, 9osztly, 6, 7, 1315

    parancsnyelv, 6, 7, 22PHP/FI, 5, 22

    SQL, 13, 15, 22, 23

    szl, 7, 16, 17

    tpusossg, 6, 7teljestmny, 1517, 21tervezsi mintk, 8, 9Tomcat,lsdApache Tomcat

    URL, 17, 22

    vlaszido, 11, 17

    27