Javascript som en server-side kode for Apache

Utvikling av en enkel web-applikasjon krever vanligvis to eller flere forskjellige programmeringsspråk. For eksempel kan en typisk web-applikasjon kjøre PHP-skript på en Apache webserver og Javascript på brukerens PC. Dette gjør programvareutvikling og debugging prosessene mer kompleks og utsatt for feil. Mens flere selskaper har i det siste utviklet versjoner av Javascript for å kjøre på en webserver, det var utgivelsen av Googles "V8" Javascript-motor som har fornyet interesse i en server-side versjon av Javascript. Node.js inneholder "V8" og gir ikke bare en vanlig klient- og server-side språk, men leverer også betydelige forbedringer i hastighet enn dagens klient-side språk som kjører på Apache.

Client-side scripting

Javascript er hovedsakelig en klient-side skriptspråk fordi den utfører sin kode på klienten eller brukeren, datamaskin. Hele manuset er lastet eller lagret i minnet på klient-PC og tolkes av nettleseren, som inneholder en Javascript-motor. Fordi det er bosatt i minnet, kan klientsiden Java kjapt å finne verdier på et skjema og kan manipulere innholdet i en skjerm "on-the-fly", uten å måtte rute resultatene tilbake til en Apache webserver. Imidlertid kan klientsiden kode leses og selv endret av en bruker på klient-PC.

Server-side scripting

En server-side skriptspråk utfører sin kode på en webserver. For eksempel, er PHP et populært skriptspråk som oftest gjennomført på en Apache webserver. Mens server side språk ikke kan endre innholdet i skjermer uten å sende data tilbake til webserveren, kan de kommunisere med ressurser på webserveren, for eksempel en database, for å generere dynamiske sider basert på skriptkode. Server-side kode er også beskyttet av webserveren, som bare vil kjøre den. Når den er riktig konfigurert, vil en Apache-server aldri sende rå PHP-koden til en klientmaskin.

Ulempen med forskjellige språk

Programvare utvikling ville være lettere om det var en felles språk for klientsiden og serversiden oppgaver. I dag forskjellige skriptspråk gi forskjellige resultater for det som ser ut til å være identiske funksjoner. For eksempel, når du spør gjeldende tid i forhold til 1 januar 1970 i PHP, returnerer funksjonen antall sekunder. Det samme søket i Javascript returnerer antall millisekunder. En programmerer trenger å vite dette og justere enten Javascript eller PHP resultat når du prøver å sammenligne verdier på tvers av språk. Programmerere som jobber på lag trenger å bli enige om en standard for å konvertere verdier mellom språkene. Det er mange eksempler på slike selvmotsigelser som gjør skaper og debugging programmer som bruker både klient-side og server-side kode mye mer vanskelig og tidkrevende.

Javascript "V8"

Flere selskaper har utviklet serversiden versjoner av Javascript i et forsøk på å tillate programmerere å bruke et enkelt språk ved utvikling av applikasjoner. Aptana utviklet Jaxster basert på Mozilla Gecko-motoren som driver FireFox. Microsoft innlemmet Javascript i sin ASP språk. Men når Google lansert sin Chrome nettleser, det avduket en Javascript-motor som heter "V8" som er ekstremt rask og relativt lett å innlemme i andre programmer. Dette har ført til utviklingen av server-side Javascript som ikke bare gir en konsekvent språk på tvers av klient og server, men gir også betydelig bedre ytelse enn dagens serversiden språk. For eksempel, Node.js fra Joyent er en hendelsesdrevet server-side Javascript for Apache som er stadig i popularitet.