Viikon VALO #175

Node.js

Node.js on JavaScript-ohjelmointiympäristö monelle alustalle esimerkiksi palvelinkäyttöön.

 JavaScript-ohjelmointikielen merkitys on lisääntynyt viime vuosina runsaasti alustariippumattomien websovellusten yleistymisen myötä. Aiemmin JavaScript oli käytettävissä pääasiassa vain webselaimissa, mutta Node.js:n myötä se on yleistynyt myös palvelinkäytössä. Node.js käyttää JavaScript-ohjelmakoodin suorittamiseen Googlen Chrome-selainta varten tehtyä V8-JavaScript-moottoria. Node.js:llä on mahdollista toteuttaa sekä suurempia projekteja että pieniä nopeita prototyyppejä.

Node.js:n on tarkoitus olla tehokas ja skaalautuva. Node.js:n kantavana ajatuksena on, että se on vahvasti tapahtumapohjainen (event-driven) ja siinä esimerkiksi tiedostojen luku ja kirjoitus sekä verkkoliikenne on toteutettu asynkronisesti. Käytännössä tämä tarkoittaa, että mahdollisesti pitkien levy- tai verkko-operaatioiden ajaksi ohjelma ei pysähdy odottamaan niiden valmistumista vaan jatkaa muuta ohjelman suoritusta. Levy- tai verkko-operaation valmistuttua ohjelma havahtuu käsittelemään valmistumisesta syntyvän tapahtuman. Tekniikasta käytetään myös nimitystä "non-blocking I/O".

Node.js ei tyypillisesti tarvitse erillistä www-palvelinta välittämään sillä toteutettuja sivuja tai sovelluksia vaan se toimii itse palvelimena, joka kuuntelee verkosta tulevia pyyntöjä. Web-sivujen kanssa käytetyn http-protokollan lisäksi Node.js voi toimia yleisemminkin verkkopalvelimena ja sillä onkin melko helppoa toteuttaa mitä tahansa verkon yli tarjottavia palveluita, kuten chat-palveluita.

Node.js sisältää valmiina jonkin verran moduuleja, joilla siihen voidaan ladata lisää ominaisuuksia, kuten fs-olio tiedostojen käsittelyyn sekä http-olio http-yhteyksien luomiseen. Lisäksi siihen on asennettavissa lukuisa määrä erilaisia ja eri tahojen kehittämiä moduuleja. Moduulien asentamiseen käytetään npm-nimistä työkalua (Node Packaged Modules). Monet selainpäässä käytetyistä JavaScript-kirjastoista ovat käytettävissä myös Node.js:n kanssa. JavaScript-kielen käyttämisestä myös palvelinpuolella onkin muun muassa se etu, että asiakas- ja palvelinpään ohjelmistokehitykseen voidaan käyttää samaa kieltä sekä samoja kirjastoja ja tietorakenteita.

Koska JavaScript on tulkittu kieli, Node.js:ää voi käyttää myös interaktiivisena komentorivinä, johon syötetään JavaScript-kielen komentoja. Tämä mahdollistaa nopeita ja lyhyitä kokeiluja sekä pikaisien laskelmien suorittamisia. Node.js:ää voidaan käyttää myös JavaScriptillä tehtyjen skriptien suorittamiseen komentoriviltä aivan samoin, kuten muitakin skriptikieliä, kuten esimerkiksi Bash, Python, PHP tai Perl.

Eräs mielenkiintoinen käyttökohde Node.js:lle on NodeCopter. Node.js:lle on toteutettu moduuleja, joita käyttämällä sillä voidaan ohjata Parrot AR Drone 2.0 -nelikoptereita. Yhteisö järjestää NodeCopter.js-tapahtumia, joissa ohjelmoijaryhmät toteuttavat päivän aikana projekteja nelikoptereiden kanssa ja päivän päätteeksi esittelevät aikaansaannoksiaan.

Kotisivu
http://nodejs.org/
Lähdekoodit
https://github.com/joyent/node
Lisenssi
MIT (osalla käytetyistä kirjastoista muita lisenssejä)
Toimii seuraavilla alustoilla
Linux, Windows, Mac OS X, FreeBSD, OpenBSD, NetBSD, Solaris
Asennus
Ohjelman viimeisin versio on ladattavissa sen kotisivuilta. Node.js on asennettavissa Linux-järjestelmiin myös paketinhallinnan kautta. Paketinhallinnasta asennettu versio ei välttämättä ole viimeisin julkaistu versio.
Käyttöohjeet
Johdanto JavaScript sovellusten kehitykseen Node.js:llä (Jaakko Salonen)
JavaScript-puutarha
Teach Yourself Node.JS in 10 Steps
Felix's Node.js Beginners Guide
How To Node
The Node Beginner Book

Teksti: Pesasa
Kuvakaappaukset: Pesasa