Palvelinpuolen JavaScriptin edut Javaan verrattuna
Olen uusi palvelinpuolen JavaScript-ohjelmoinnissa, ja yritän ymmärtää eroja tämän ja perinteisen palvelinpuolen Javan välillä. Mitkä ovat merkittävät erot ja miksi SSJS on tulossa suosituksi? Kuinka SSJS on parempi kuin Java? Maallikon näkökulmasta olettaisin, että JS on hitaampi kuin Java suorituskyvyn osalta, pääasiassa siksi, että se on tulkattava kieli.
Terveisin, Anand
Vastaus #1
Mielestäni Node.js:llä on ollut paljon tekemistä tämän ilmiön nousun kanssa:
http://nodejs.org/
Melko varma, että se on ollut monien CommonJS-kirjastojen kehityksen, jne., kannustin.
Näen kommentteja, joiden mukaan elämä helpottuu, kun asiakas- ja palvelinpuolen koodi on samassa kielessä. Node-projektissa, jossa työskentelin, aluksi oli vain kolme ohjelmoijaa kaikelle, ja meille annettiin enemmän tai vähemmän vapaat kädet käyttää mitä tahansa teknologiaa halusimme. Tämä johti jonkinlaiseen keskusteluun, sillä kaikilla oli erilainen tausta; mutta kun joku ehdotti nodejs:ää, yksi syy siihen, miksi se vaikutti hyvältä idealta, oli se, että javascript oli jotain, mikä meillä kaikilla oli yhteistä.
Kuitenkin en usko, että noden menestys johtuu pääasiassa siitä, että se käyttää js:ää; kyse on suunnittelusta. Pidin siitä paljon enemmän kuin useimmista muista serveripuolen teknologioista, joiden kanssa olen työskennellyt (Rails, PHP, cgi, mod_perl, mason), ja todennäköisesti olisin pitänyt siitä yhtä paljon riippumatta käytetystä rajapintakielestä. Mutta js:ää se on.
Joten tämä on minun pointtini: mielestäni sillä on vähemmän tekemistä javascriptin erityispiirteiden kanssa ja enemmän tekemistä joidenkin älykkäiden ajatusten ja kehitystyön kanssa, joka on tapahtunut "javascript-yhteisössä", yllätys, yllätys. Mieti PHP:tä: en usko, että PHP:n menestys johtui kovin paljon kielen suunnittelusta (tai suorituskykyominaisuuksista), mielestäni se johtui enemmän siitä, miten sitä käytettiin ja miten ihmiset käsittivät palvelinpuolen ohjelmoinnin 10-15 vuotta sitten, ja (tiiviisti liittyen) työkaluista, joiden päälle he saattoivat rakentaa.
Yksi ongelma siellä ("älykäs ajattelu" -osastolla) on väite (erittäin vakuuttava, jos sitä kokeilee), jonka nodea ja esimerkiksi nginxia kehittävät ihmiset esittävät, nimittäin että asynkroninen, tapahtumapohjainen malli sopii paremmin palvelinohjelmointiin kuin perinteinen rinnakkainen synkroninen, säikeisiin perustuva malli. Uskon, että jälkimmäinen hallitsee Javassa, vaikka mielestäni sitä voisi yhtä hyvin käyttää toisinkin. Javascript, toisaalta, oli alun perin suunniteltu käytettäväksi selaimen asynkronisessa, tapahtumapohjaisessa maailmassa, eikä sillä ole lainkaan säikeitä. Taas: ei niinkään kieli, vaan kulttuuri.
Myös on syytä huomioida JSONin hallitseva käyttö vaihtomuotona sekä NoSQL-tietokannat kuten couchdb (jota olen käyttänyt) ja mongodb (jota en ole käyttänyt), jotka käyttävät JSONia perustavanlaatuisesti tietokannan rakenteen muodostamiseen. Couchdb käyttää myös js:ää joihinkin palvelinpuolen ohjelmointeihin (käytännössä kyselykäsittelijöihin), todennäköisesti siksi, että tietokantadokumentit ovat JSON-muodossa, mikä on myös kätevää siirtää asiakkaalle. Erittäin tyylikästä ja kekseliästä. Yksi kieli, yksi protokolla, mallista näkymään; merkityksellisessä mielessä ei ole ollenkaan mitään "vaihtoa".
Vastaus #2
eroavaisuudet tämän ja perinteisen palvelinpuolen Javan välillä
Ensinnäkin, Javalla ja JavaScriptillä ei ole mitään yhteistä. Ne ovat kaksi täysin eri asiaa. Muista se.
Luulen, että monet ihmiset pitävät palvelinpuolen JavaScriptistä, koska he voivat pysyä yhdessä kielessä. He käyttävät JavaScriptiä palvelimella samalla tavalla kuin asiakkaan puolella, sen sijaan että käyttäisivät toista kieltä (kuten Javaa, PHP:tä tai Rubyä). Lisäksi monet verkkokehittäjät tuntevat JavaScriptin hyvin (koska he käyttävät sitä asiakkaan puolella), joten he ymmärtävät sen hyvin.
JavaScript voi myös olla helpompaa kuin Java. Jos sinulla on vain pieni projekti, Java voisi olla paljon ylisuunnittelua verrattuna JavaScriptiin. Jotkut asiat, kuten palautusfunktiot, voivat olla erittäin elegantteja JavaScriptissä.
Myös uudet kehykset, kuten Node.js, tekevät tämän kielen käytöstä houkuttelevaa. Niin kauan kuin ei ollut mitään palvelinpuolen kehystä, et yksinkertaisesti voinut käyttää JavaScriptiä palvelimella. Mutta kieli on kehittynyt hyvin nykyään.
Mielestäni JavaScriptin suorituskyky riippuu myös palvelimesta. En ole tästä varma, mutta niin pitkälle kuin tiedän, JavaScript voisi myös olla (just in time) käännetty. Googlen Chrome tekee jotain sellaista. Lisäksi suorituskyky ei ole niin suuri asia useimmilla verkkosivuilla, koska suorituskyky on enimmäkseen IO tietokantaan. Varsinainen HTML-sivun luominen on hyvin yksinkertaista eikä iso juttu. Ja: PHP on myös tulkattu ja käytetty monilla sivuilla. Ruby on merkittävästi hitaampi kuin Java, mutta Ruby on Rails on erittäin suosittu. Joten suorituskyvystä ei näytä olevan niin tärkeää. Kyse on enemmän siitä, kuinka "siisti" ja elegantti kieli on.