Ohjelmointi

Node.js vs. Java: Eeppinen taistelu kehittäjien mielenjaosta

Laskentahistoriassa vuosi 1995 oli hullu. Ensin Java ilmestyi, sitten lähellä sen kantoja tuli JavaScript. Nimet saivat heidät näyttämään yhdistetyiltä kaksosilta, jotka olivat vasta irrotettu, mutta ne eivät voineet olla erilaisempia. Yksi niistä on koottu ja staattisesti kirjoitettu; toinen tulkitaan ja kirjoitetaan dynaamisesti. Se on vasta alkua näiden kahden villin erillisen kielen välillä, jotka ovat sittemmin siirtyneet eräänlaiseen törmäyskurssiin Node.js: n ansiosta.

Jos olet niin vanha, että olet ollut tuolloin, saatat muistaa Javan varhaisen, eeppisen huippunsa. Se jätti laboratoriot ja hype-mittarin kiinnitettynä. Kaikki pitivät sitä vallankumouksena, joka pysähtyisi vain tietojenkäsittelyn täydelliseen haltuunottoon. Tämä ennuste päätyi vain osittain oikeiksi. Nykyään Java hallitsee Android-puhelimia, yritystietotekniikkaa ja joitain sulautettuja maailmoja, kuten Blu-ray-levyjä.

Kaikesta menestyksestään huolimatta Java ei koskaan saanut aikaan paljon vetovoimaa työpöydällä tai selaimessa. Ihmiset mainostivat sovelmien ja Java-pohjaisten työkalujen voimaa, mutta gunk loi aina nämä yhdistelmät. Palvelimista tuli Java: n makea kohta.

Sillä välin, mitä ohjelmoijat alun perin luulivat tyhmäksi kaksoiseksi, on tullut oma. Toki, JavaScript merkitsi muutaman vuoden ajan, kun HTML ja verkko vetivät Borgin maailmalle. Mutta se muuttui AJAX: n kanssa. Yhtäkkiä tyhmällä kaksosella oli valta.

Sitten syntyi Node.js, joka käänsi kehittäjien päät nopeasti. Paitsi että JavaScript oli palvelimella nopeampi kuin kukaan oli odottanut, se oli usein nopeampi kuin Java ja muut vaihtoehdot. Sen vakaa ruokavalio pienistä, nopeista ja loputtomista tietopyynnöistä on sittemmin tehnyt Node.js: stä yleisemmän, kun verkkosivut ovat kasvaneet dynaamisemmin.

Vaikka 20 vuotta sitten sitä ei ehkä voinut ajatella, lähes kaksoset ovat nyt lukkiutuneet taisteluun ohjelmointimaailman hallitsemiseksi. Toisella puolella ovat vankan tekniikan ja arkkitehtuurin syvälliset perustukset. Toisella puolella ovat yksinkertaisuus ja läsnäolo. Pysyykö vanhan koulun kääntäjävetoinen Java-maailma vai auttaako Node.js: n nopeus ja joustavuus JavaScriptiä edelleen kaatamaan kaiken polussaan?

Missä Java voittaa: Vakaa perusta

Kuulen kehittäjien nauravan. Jotkut saattavat jopa kuolla sydämen vajaatoimintaan. Kyllä, Javalla on häiriöitä ja vikoja, mutta suhteellisen paljon, se on Gibraltarin kallio. Sama usko Node.js: ään on monien vuosien poissa. Itse asiassa voi kulua vuosikymmeniä, ennen kuin JavaScript-miehistö kirjoittaa melkein yhtä monta regressiotestiä kuin Sun / Oracle on kehittänyt Java-virtuaalikoneen testaamiseksi. Kun käynnistät JVM: n, saat 20 vuoden kokemuksen vankalta kuraattorilta, joka on päättänyt hallita yrityspalvelinta.

JavaScript-maailma on nopeasti kiinni. Kun suuri osa koko verkosta riippuu JavaScript-suoritusmoottorista, miljoonat kehittäjätunnit kuluttavat kaikkien reunojen kiillotuksen. Mutta kaikella innovaatiolla on haittapuoli, koska uudet ominaisuudet saattavat lisääntyä nopeammin kuin kehittäjäkanta pystyy absorboimaan niitä. Vanhan koulun kehittäjät sekoittuvat usein koodiin, joka on täynnä uudempia ECMAScript-syntaksin parannuksia - ja tämä sama uusi koodi kaataa hiljaa jotkut vanhemmat selaimet. Rajaton määrä innovatiivisia esiprosessoreita, kuten CoffeeScript ja JSX, voi olla hyvä kehittäjille, jotka haluavat näitä ominaisuuksia, mutta ne vaikeuttavat meitä kaikkia avaamaan satunnaisen tiedoston ja ymmärtämään sen välittömästi.

Javalla on osuus uusista ominaisuuksista ja vaihtoehdoista, mutta pääosin se on vakaa alusta. Tämä helpottaa kehittäjien elämää paljon, jotka rakentavat jotain kestävää.

Missä Node.js voittaa: läsnäolo

Node.js: n ansiosta JavaScript löytää kodin palvelimelta ja selaimesta. Yhdelle kirjoittamasi koodi toimii todennäköisesti samalla tavalla molemmissa. Mitään ei voida taata elämässä, mutta tämä on niin lähellä kuin se tulee tietokoneliiketoiminnassa. Paljon helpompaa on noudattaa JavaScriptiä asiakas / palvelin-jakauman molemmille puolille kuin kirjoittaa jotain kerran Java- ja uudestaan ​​JavaScriptiin, mikä sinun on todennäköisesti tehtävä, jos päätät siirtää Java-kielellä kirjoittamasi liiketoimintalogiikan palvelimen selaimeen. Tai ehkä pomo vaatii, että selaimen luomasi logiikka siirretään palvelimelle. Node.js ja JavaScript helpottavat koodin siirtämistä kumpaankin suuntaan.

Solmun johtoasema tässä maailmassa näyttää vain kasvavan. Kehittyneimmät verkkokehykset, kuten React, päättävät viimeisessä sekunnissa, suoritetaanko koodi palvelimella vai asiakkaalla. Eräänä päivänä se toimii asiakkaalla ja toisena päivänä palvelimella. Jotkut älykkäät logiikat tekevät päätöksen lennossa kuormituksen, vara-RAM-muistin tai jonkin muun perusteella. Jotkin kehykset lähettävät JavaScriptin tietokantaan kyselynä, missä se suoritetaan. Koodisi voi olla käynnissä missä tahansa, ja on vaikeampi pysyä mukana, koska se ei lähetä postikorttia kotiin. Ole vain onnellinen, koska sinun ei tarvitse miettiä yksityiskohtia.

Missä Java voittaa: Paremmat IDE: t

Java-kehittäjillä on Eclipse, NetBeans tai IntelliJ, kolme huippuluokan työkalua, jotka on integroitu hyvin virheenkorjauksiin, dekoodaattoreihin ja palvelimiin. Jokaisella on vuosien kehitys, omistautuneet käyttäjät ja vankat ekosysteemit, jotka ovat täynnä laajennuksia.

Samaan aikaan useimmat Node.js-kehittäjät kirjoittavat sanat komentoriville ja koodaavat suosikkitekstieditoriinsa. Kyllä, joillakin parhailla tekstieditorilla, kuten Atomilla, on tarkat laajennuskokoelmat, jotka tekevät melkein mitä tahansa, mutta silloinkin tuntuu siltä, ​​että Node.js on vanhempi koulu kuin Eclipse. Pian vaihdamme hiiremme Atari-ilotikkuun.

Jotkut kehittäjät käyttävät Eclipseä tai Visual Studiota, jotka molemmat tukevat Node.js-tiedostoa. Tietysti Node.js: n kiinnostuksen lisääntyminen tarkoittaa uusien työkalujen saapumista, joista osa, kuten IBM: n Node-RED, tarjoaa kiehtovia lähestymistapoja, mutta ne ovat vielä kaukana täydellisyydestä tai hallitsevuudesta kuin Eclipse tai IntelliJ.

Outoa on, että kehittäjät eivät näytä käyttävän näitä työkaluja. Komentorivin piti kadota 35 vuotta sitten Macin saapuessa, mutta kukaan ei kertonut Node.js-kehittäjille. Vaihtoehdot ovat olemassa. Esimerkiksi WebStorm on vankka kaupallinen työkalu JetBrainsilta, joka sisältää monia komentorivin rakennustyökaluja.

Tietenkin, jos etsit IDE: tä, joka muokkaa ja käsittelee koodia, uudet Node.js-tiedostoa tukevat työkalut ovat riittävän hyviä. Mutta jos pyydät IDE: täsi antamaan sinun muokata, kun käytät käynnissä olevaa lähdekoodia, kuten sydänkirurgin viipaleet avaavat rinnan, Java-työkalut ovat paljon tehokkaampia. Kaikki on siellä, ja kaikki paikallista.

Missä Node.js voittaa: Tietokantakyselyt

Joidenkin uudempien tietokantojen, kuten CouchDB ja MongoDB, kyselyt kirjoitetaan JavaScriptiä. Node.js: n ja tietokantakutsun sekoittaminen ei vaadi vaihdetta, puhumattakaan siitä, että tarvitsee muistaa syntaksierot.

Samaan aikaan monet Java-kehittäjät käyttävät SQL: ää. Vaikka he käyttäisivät Java DB: tä - aiemmin Derbyä, Java-kehittäjille kirjoitettua tietokantaa -, he kirjoittavat kyselynsä SQL: ään. Luulisi, että he yksinkertaisesti kutsuvat Java-menetelmiä, mutta olisit väärässä. Sinun on kirjoitettava tietokantakoodisi SQL: ään ja annettava Derbyn jäsentää SQL. SQL on mukava kieli, mutta se on täysin erilainen kuin Java, ja monet kehitystiimit tarvitsevat erilaisia ​​ihmisiä kirjoittamaan SQL ja Java.

Mikä pahempaa, monet Java-koodaajat käyttävät monimutkaisia ​​kirjastoja ja kaavioita muuntamaan SQL-kyselyn tiedot Java-objekteiksi, jotta he voivat muotoilla ne uudelleen malleiksi. Se on hullu prosessi ja viime kädessä aika tuhlaavainen.

Missä Java voittaa: tyypit

Monet perustavista ohjelmointikursseista käyttävät edelleen Java-sovellusta, koska monet vakavat ohjelmoijat pitävät staattisesti kirjoitetusta koodista sekä yksinkertaisuuden että turvallisuuden vuoksi. Koodi tuntuu vain tiukemmalta, kun kääntäjä on saanut selvät virheet.

JavaScripti on kuitenkin kiinni ja jotkut kehittäjät ovat siirtymässä TypeScriptiin, staattisesti kirjoitettuun JavaScriptien supersarjaan, joka käyttää kaikkia tyyppitarkistusmaagioita ennen kuin speltaa jotain selaimesi JavaScript-pinoa. Jos rakastat tyyppejä, tämä voi olla tarpeeksi omaksua JavaScript. Tai voit vain tunnistaa jäljitelmän vilpittömänä muotona ja pysyä Java-ohjelmassa, joka sisälsi staattisen kirjoittamisen alusta alkaen.

Missä Node.js voittaa: Syntaktinen joustavuus

JavaScript oli aiemmin yksinkertainen kieli ei-toivottujen hälytysruutujen esiin tuomiseen ja lomakkeen syötteen tarkistamiseen. Sitten kehittäjäyhteisö loi monia kieliversioita, jotka voitiin siirtää selaimelle. CoffeeScript-joukko tarjoaa kourallisen erilaista syntaksia, jotka on suunniteltu täyttämään puhtaampien välimerkkien maku. React / Vue-joukko sekoittaa HTML: n ja JavaScriptin vain siksi, että se on puhtaampaa. Tyyppiharrastajille on TypeScript ja toiminnallisille kieliharrastajille LiveScript.

Löydät valtavan määrän luovuutta myös Java-maailmassa, mutta jostain syystä sitä ei ilmaista monilla esikäsittelijöillä. On olemassa useita kieliä, kuten Kotlin, Scala ja Clojure, jotka muutetaan tavukoodiksi JVM: lle, mutta jotenkin he tuntevat tarpeeksi erilaiset erottautumaan erillisinä kielinä. Kaikki esiprosessorit tekevät elämästä hauskempaa JavaScript-ohjelmoijilta, jotka rakastavat erilaisia ​​tapoja muotoilla tai välitellä koodiaan.

Missä Java voittaa: Yksinkertainen rakennusprosessi

Monimutkaiset rakennustyökalut, kuten Ant ja Maven, ovat mullistaneet Java-ohjelmoinnin. Mutta on vain yksi asia. Kirjoitat määrityksen XML-muodossa, tietomuodossa, jota ei ole suunniteltu tukemaan ohjelmointilogiikkaa. Toki, haaroittuminen on suhteellisen helppoa ilmaista sisäkkäisillä tunnisteilla, mutta vaihdettaessa Java: sta XML: ään on vain ärsyttävää pelkästään jonkin rakentamiseksi. JavaScriptillä ei voi vaihtaa vaihdetta.

Node.js: llä oli aikaisemmin yksinkertaisempi koontiversio. Voit vain muokata koodia ja sitten painaa "Suorita". Se oli silloin. Kun solmun kehittäjät ovat "parantaneet" prosessia, he ovat lisänneet esiprosessoreita, jotka ottavat suosikkisi Java-alivalinnan ja tekevät siitä jotain suoritettavaa. Sitten Node-paketinhallinnan on löydettävä oikea kirjasto. Suurimman osan ajasta tämä vain toimii, mutta joskus ei, ja sitten vietät aikaa etsimällä oikean versionumeroa eräästä esineestä, jonka rakennat itsellesi erillisessä vaiheessa. Ja jos teet jonkin virheen artefaktivarastoon, tuo versionumero ammutaan ja sinun on käännettävä matkamittarin pyöriä uudelleen.

Javalla on myös monimutkainen rakennusprosessi, joka on melko samanlainen kuin Node.js-menetelmä, mutta se ei tunnu olevan monimutkaisempi. Jotenkin Maven ja Ant näyttävät olevan osa Java-säätiötä nyt. Monet karkeista reunoista ovat kauan poissa ja rakennukset toimivat vain useammin. Jos rakentamisen vaivaa olisi absoluuttisesti, nämä kaksi kieltä saattavat olla samanlaisia, mutta JavaScriptin monimutkaisuuden nopea räjähdys tarkoittaa, että Java voittaa.

Liittyvä video: Node.js-vinkkejä ja vihjeitä

Opi tässä selitysvideossa useita tekniikoita, jotka voivat parantaa Node-kehityskokemustasi.

Missä Node.js voittaa: JSON

Kun tietokannat sylkivät vastauksia, Java pyrkii laatimaan pituudet muuttaakseen tulokset Java-objekteiksi. Kehittäjät keskustelevat tuntikausia POJO-kartoituksista, horrostilasta ja muista työkaluista. Niiden määrittäminen voi viedä tunteja tai jopa päiviä. Lopulta Java-koodi saa Java-objektit muunnoksen jälkeen. Ja mitä tulee konfigurointiin, Java-maailma pitää silti kiinni XML: stä ja tarjoaa jopa kaksi suurta jäsentäjää antamaan kehittäjille enemmän syytä tuskailla.

Nykyään monet verkkopalvelut ja tietokannat palauttavat tietoja JSONissa, joka on luonnollinen osa JavaScriptiä. JSON on nyt niin yleinen ja hyödyllinen, että monet Java-kehittäjät käyttävät muotoa, ja useita hyviä JSON-jäsentimiä on saatavana myös Java-kirjastoina. Mutta JSON on osa JavaScriptiä. Et tarvitse kirjastoja. Se on kaikki valmiina.

Missä Java voittaa: Etäisen virheenkorjaus

Java tarjoaa uskomattomia työkaluja koneiden klustereiden seurantaan. JVM: ssä on syvät koukut ja tarkat profilointityökalut pullonkaulojen ja epäonnistumisten tunnistamiseksi. Java-yrityspino ylläpitää joitain maailman kehittyneimpiä palvelimia, ja yritykset, jotka käyttävät näitä palvelimia, ovat vaatineet parasta telemetriassa. Kaikki nämä seuranta- ja virheenkorjaustyökalut ovat melko kypsiä ja valmiita käyttöönottoon.

Missä Node.js voittaa: Työpöytä

Joitakin Java-sovelmia saattaa olla loppumassa, ja ylläpidän edelleen joitain Java JAR -tiedostoja, joita voin napsauttaa suorittaaksesi, mutta pääosin työpöytämaailma on suurimmaksi osaksi Java-vapaa. Toisaalta JavaScript tallentaa yhä enemmän toimintaa, kun selain syö suurimman osan työpöydän rooleista. Kun Microsoft kirjoitti Officen toimimaan selaimessa, muotti valettiin. Jos mietit edelleen, on mielenkiintoisia vaihtoehtoja, kuten Electron, jotka ottavat verkkokoodisi ja tekevät siitä itsenäisen työpöytäsovelluksen.

Missä Java voittaa: Kämmenlaitteet

Android-sovellukset kirjoitetaan usein Java-kielellä, ja 90 prosentissa uusista puhelimista on jokin Android-versio. Monet ihmiset eivät edes käytä työpöytiä enää, koska puhelimet ovat riittävän hyviä kaikkeen.

Tietysti on hieman hämmennystä. Monet kehittäjät kirjoittavat Node.js-verkkosovelluksia, jotka kohdistuvat mobiiliselaimiin sekä iPhonessa että Androidissa. Jos tämä tehdään hyvin, suorituskyky on usein tarpeeksi hyvä.

$config[zx-auto] not found$config[zx-overlay] not found