av ak » lør 07.08.2010 1:07
Jeg vil vel ikke referere til det som "persistent lagring", men i Java (, Ruby og Python, dersom de ikke kjøres som CGI) så forblir programmet i minnet. Du programmerer på en helt annen måte, og må ta høyde for om objektene dine er "thread safe" (kan deles av flere forespørsler) eller ikke. Dersom de ikke kan det må du opprette nye hele tiden (uten at det er noe problem, det dreier seg jo bare om en liten del av applikasjonen).
Programmer som er skrevet i Java har en tendens til å bruke mer minne, ihvertfall på papiret. Årsaken til det er større gjenbruk av kode, dvs. at man bruker generiske biblioteker fremfor å skrive alt fra scratch for hvert program. Man bruker kanskje to-tre rammeverk i en typisk PHP applikasjon, i Java er det ikke uvanlig å dra inn 10 ganger så mange. Det høres kanskje negativt ut, men kvaliteten på mange av disse tingene er mye bedre enn det man kan snekre selv. Samtidig, fordi du ikke trenger å laste hele applikasjonen hele tiden, trenger du mindre ressurser per forespørsel.
Eksempelvis kjører disse nettsidene som regel med 128 Mb RAM per tråd og opptil 80 CGI prosesser. Dvs. vi kan bruke mellom 128 Mb og ca 10Gb RAM til PHP. Hadde dette kjørt i Java hadde vi antageligvis trengt å sette av minimum 512 Mb, men ikke behøvd mer enn 1 Gb total for å håndtere det samme som 80 CGI prosesser. Belastningen ville sannsynligvis også vært mye mindre, ikke minst mot databaseserveren.
Forklaringen ovenfor er ganske tynn, det finnes mange flere aspekter som man må ta hensyn til. Som sagt synes jeg at PHP er helt greit, jeg bruker ihvertfall ikke Java for å lage enkle nettsider. Bare for å ha nevnt et alternativ synes jeg at Pylons er et eksempel på et rammeverk (i Python) som gjør mye riktig.