Programiranje

Node.js proti Javi: epska bitka za razvijalčevo miselnost

V zgodovini računalništva je bilo leto 1995 noro. Najprej se je pojavila Java, nato pa ji je blizu sledil JavaScript. Imena so se jim zdela kot združena dvojčka, ki sta bila na novo ločena, a bolj drugačna ne moreta biti. Eden od njih je sestavljen in statično tipkan; druga interpretirana in dinamično tipkana. To je šele začetek tehničnih razlik med tema dvema divje različnima jezikoma, ki sta se po zaslugi Node.js preusmerila na nekakšen potek trčenja.

Če ste že dovolj stari, da ste bili takrat, se morda spomnite zgodnjega, epskega vrhunca Jave. Zapustil je laboratorije in njegov merilnik hype pripel. Vsi so to videli kot revolucijo, ki se ne bi ustavila nič manj kot popoln prevzem računalništva. Ta napoved je bila na koncu le delno pravilna. Danes Java prevladuje nad telefoni Android, računalništvom v podjetju in nekaterimi vgrajenimi svetovi, kot so diski Blu-ray.

Kljub vsemu uspehu pa Java na namizju ali v brskalniku ni nikoli dosegla večjega oprijema. Ljudje so izpostavili moč apletov in orodij, ki temeljijo na Javi, toda gunk je te kombinacije vedno pokvaril. Strežniki so postali Javina sladka točka.

Medtem pa je na svoj račun prišlo tisto, kar so programerji sprva sprejeli kot neumnega dvojčka. Seveda se je JavaScript nekaj let označeval kot HTML in splet, ki sta Borga potegnila po svetu. Toda to se je spremenilo z AJAX-om. Nenadoma je imel neumni dvojček moč.

Nato se je ustvaril Node.js, ki je s svojo hitrostjo obračal glave razvijalcem. JavaScript je bil na strežniku ne samo hitrejši, kot je kdo pričakoval, temveč je bil pogosto hitrejši od Jave in drugih možnosti. Njegova stalna prehrana z majhnimi, hitrimi, neskončnimi zahtevami po podatkih je od takrat Node.js bolj pogosta, saj so spletne strani postale bolj dinamične.

Čeprav je bilo pred 20 leti morda nepredstavljivo, so kvazi dvojčki zdaj v bitki za nadzor nad programskim svetom. Na eni strani so globoki temelji trdnega inženirstva in arhitekture. Na drugi strani sta preprostost in vseprisotnost. Ali bo svet Jave, ki ga poganja prevajalnik starih šol, zagotovo obstajal ali pa bosta hitrost in prilagodljivost Node.js pomagala, da JavaScript še naprej požira vse na svoji poti?

Kje Java zmaga: trdna podlaga

Slišim smeh razvijalcev. Nekateri morda celo umirajo zaradi srčnega popuščanja. Da, Java ima napake in napake, toda razmeroma gledano je to Gibraltarska skala. Ista vera v Node.js je dolga leta. Pravzaprav bodo morda pretekla desetletja, preden bo posadka JavaScript napisala skoraj toliko regresijskih testov, kot jih je Sun / Oracle razvil za testiranje Java Virtual Machine. Ko zaženete JVM, dobite 20 let izkušenj od trdnega kuratorja, ki je odločen, da bo prevladoval v strežniku podjetja.

Svet JavaScript hitro dohiteva. Ko je večina celotnega spleta odvisna od mehanizma za izvajanje JavaScript, gre bazilion ur razvijalcev v poliranje vseh robov. Toda vse novosti imajo slabost, ker se nove funkcije morda širijo hitreje, kot jih lahko absorbira baza razvijalcev. Razvijalce stare šole pogosto zmede koda, napolnjena z novejšimi izboljšavami skladnje ECMAScript - in ta ista nova koda bo tiho zrušila nekatere starejše brskalnike. Neskončna ponudba inovativnih predprocesorjev, kot sta CoffeeScript in JSX, je lahko odlična za razvijalce, ki želijo te funkcije, vendar pa vsi ostali težje odpremo naključno datoteko in jo takoj razumemo.

Java ima svoj delež novih funkcij in možnosti, vendar je večinoma stabilna platforma. Tako je razvijalcem, ki gradijo nekaj za trajanje, življenje veliko lažje.

Kje zmaga Node.js: vseprisotnost

Zahvaljujoč Node.js JavaScript najde dom v strežniku in v brskalniku. Koda, ki jo napišete za eno, bo več kot verjetno delovala enako na obeh. V življenju ni nič zajamčeno, a to je tako blizu, kolikor je blizu v računalniškem poslu. Precej lažje je držati se JavaScript za obe strani razdelka odjemalca / strežnika, kot pa napisati nekaj v Javi in ​​spet v JavaScript, kar bi verjetno morali storiti, če bi se odločili, da poslovno logiko, ki ste jo napisali v Javi, premaknete za brskalnik. Ali pa bo šef vztrajal, da se logika, ki ste jo zgradili za brskalnik, premakne na strežnik. V obe smeri Node.js in JavaScript olajšata selitev kode.

Zdi se, da se Node-ovo vodstvo na tem svetu samo širi. Najsodobnejši spletni okviri, kot je React, se bodo v zadnji sekundi odločili, ali bodo kodo zagnali na strežniku ali odjemalcu. En dan se bo zagnal na odjemalcu, drugi dan pa na strežniku. Neka pametna logika bo odločala sproti glede na obremenitev ali rezervni RAM ali kaj drugega. Nekateri okviri bodo JavaScript poslali v bazo podatkov kot poizvedbo, kjer se izvaja. Vaša koda se lahko izvaja kjer koli in vedno težje ji sledite, ker ne pošlje razglednice domov. Samo bodite srečni, ker vam ni treba razmišljati o podrobnostih.

Kje Java zmaga: boljši IDE

Razvijalci Java imajo Eclipse, NetBeans ali IntelliJ, tri vrhunska orodja, ki so dobro integrirana z razhroščevalniki, razkuževalniki in strežniki. Vsak ima leta razvoja, namenske uporabnike in trdne ekosisteme, napolnjene z vtičniki.

Medtem večina razvijalcev Node.js vtipka besede v ukazno vrstico in kodo v svoj najljubši urejevalnik besedil. Da, nekateri najboljši urejevalniki besedil, kot je Atom, imajo dodelane zbirke vtičnikov, ki naredijo skoraj vse, toda tudi takrat se zdi, da je Node.js bolj stara šola kot Eclipse. Kmalu bomo miško zamenjali z igralno palico Atari.

Nekateri razvijalci uporabljajo Eclipse ali Visual Studio, ki podpirata Node.js. Seveda naraščajoče zanimanje za Node.js pomeni, da prihajajo nova orodja, nekatera, kot je IBM-ov Node-RED, ponujajo zanimive pristope, vendar so še daleč od popolnosti ali prevladujočih lastnosti kot Eclipse ali IntelliJ.

Čudno je, da razvijalci teh orodij ne uporabljajo. Ukazna vrstica naj bi izginila pred 35 leti s prihodom Maca, vendar razvijalcem Node.js tega ni povedal nihče. Možnosti obstajajo. WebStorm je na primer trdno komercialno orodje podjetja JetBrains, ki vključuje številna orodja za gradnjo ukazne vrstice.

Če iščete IDE, ki ureja in žonglira s kodo, so nova orodja, ki podpirajo Node.js, dovolj dobra. Če pa od IDE-ja zahtevate, da vam dovoli urejanje, medtem ko operirate delujočo izvorno kodo, kot da srčni kirurg reži odpre skrinjo, so Java orodja veliko bolj zmogljiva. Vse je tam in vse je lokalno.

Kje zmaga Node.js: Poizvedbe v zbirki podatkov

Poizvedbe za nekatere novejše zbirke podatkov, kot sta CouchDB in MongoDB, so napisane v JavaScript. Mešanje Node.js in klic v bazo podatkov ne zahteva spreminjanja prestave, kaj šele, da bi si zapomnili razlike v sintaksi.

Medtem mnogi razvijalci Java uporabljajo SQL. Tudi če uporabljajo Java DB - prej Derby, bazo podatkov, napisano v Javi za razvijalce Java -, poizvedbe pišejo v SQL. Mislili bi, da bi preprosto poklicali metode Java, vendar bi se zmotili. Kodo baze podatkov morate napisati v SQL, nato pa pustite, da Derby razčleni SQL. SQL je prijeten jezik, vendar se popolnoma razlikuje od Jave in številne razvojne skupine potrebujejo različne ljudi za pisanje SQL in Java.

Da je stvar še hujša, številni kodirniki Java uporabljajo zapletene knjižnice in sheme za pretvorbo podatkov iz poizvedbe SQL v predmete Java samo zato, da jih lahko preoblikujejo v predloge. To je nor proces in na koncu precej potraten.

Kje Java zmaga: Vrste

Številni uvodni tečaji programiranja še naprej uporabljajo Javo, ker je mnogim resnim programerjem všeč statično natipkana koda zaradi enostavnosti in varnosti. Koda se počuti bolj stroga, potem ko prevajalnik odkrije očitne napake.

JavaScript pa dohiteva in nekateri razvijalci preklopijo na TypeScript, statično natipkan nabor JavaScript, ki uporablja vso čarovnijo za preverjanje tipa, preden izpljune nekaj, kar se izvaja v kupčku JavaScript vašega brskalnika. Če imate radi vrste, je to morda dovolj, da sprejmete JavaScript. Lahko pa preprosto prepoznate imitacijo kot najbolj iskreno obliko laskanja in se držite Jave, ki je od začetka zajemala statično tipkanje.

Kje zmaga Node.js: skladenjska prilagodljivost

JavaScript je bil včasih preprost jezik za pojavljanje neželenih opozorilnih oken in dvojno preverjanje vnosa obrazca. Nato je skupnost razvijalcev ustvarila veliko različnih različic jezika, ki jih je mogoče prevesti v nekaj za brskalnik. Množica CoffeeScript ponuja peščico različnih sintaks, zasnovanih tako, da zadovoljijo okus po čistejših ločilih. Obstaja množica React / Vue, ki združuje HTML in JavaScript samo zato, ker je čistejša. Obstajajo TypeScript za ljubitelje tipk in LiveScript za ljubitelje funkcionalnih jezikov.

Tudi v svetu Jave boste našli ogromno ustvarjalnosti, vendar iz nekega razloga to ni izraženo pri številnih predhodnih procesorjih. Obstajajo številni jeziki, kot so Kotlin, Scala in Clojure, ki so spremenjeni v bajtno kodo za JVM, vendar se nekako počutijo dovolj drugačne, da se ločijo kot ločeni jeziki. Vsi predprocesorji popestrijo življenje programerjev JavaScript, ki imajo radi različne načine oblikovanja ali ločenja svoje kode.

Kje Java zmaga: preprost postopek gradnje

Zapletena orodja za gradnjo, kot sta Ant in Maven, so revolucionirala programiranje Java. Toda vprašanje je samo eno. Specifikacijo napišete v XML, podatkovni obliki, ki ni bila zasnovana tako, da podpira programsko logiko. Seveda je razmeroma enostavno izraziti razvejanost z ugnezdenimi oznakami, vendar je pri prestavljanju z Java na XML nekaj zoprnega zgolj zato, da nekaj zgradimo. Z JavaScriptom ni prestav.

Node.js je bil prej enostavnejši. Samo uredili bi kodo in nato pritisnili »zaženi«. To je bilo takrat. Ker so razvijalci vozlišč postopek "izboljšali", so dodali predprocesorje, ki zajemajo vaš najljubši poddilekt JavaScript in ga spremenijo v nekaj, kar je mogoče voditi. Nato mora upravitelj paketov Node najti pravo knjižnico. Večino časa to preprosto deluje, včasih pa ne, potem pa porabite čas za iskanje prave številke različice nekega artefakta, ki ga sami gradite v ločenem koraku. In če naredite kakšno napako v odlagališču artefaktov, se ta številka različice posname in spet morate obrniti kolesa števca kilometrov.

Java ima tudi zapleten postopek izdelave, ki je precej podoben metodi Node.js, vendar se mi zdi, da ni postala bolj zapletena. Nekako sta Maven in Ant zdaj videti kot del fundacije Java. Številnih grobih robov že zdavnaj ni več in zgradbe preprosto delujejo pogosteje. Če bi obstajala kakšna absolutna mera težav pri gradnji, bi si lahko bila jezika podobna, vendar hitra eksplozija zapletenosti JavaScript pomeni, da Java zmaga.

Povezani video: Node.js nasveti in triki

V tem obrazložitvenem videu se naučite več tehnik, ki lahko izboljšajo vašo izkušnjo razvoja vozlišča.

Kje zmaga Node.js: JSON

Ko zbirke podatkov izpljunejo odgovore, Java nadaljuje, da rezultate spremeni v predmete Java. Razvijalci se bodo ure in ure prepirali o preslikavah POJO, mirovanju in drugih orodjih. Njihova konfiguracija lahko traja ure ali celo dni. Sčasoma koda Java po vsej pretvorbi dobi predmete Java. Kar zadeva konfiguracijo, se svet Jave še vedno drži XML in ponuja celo dva večja razčlenjevalnika, ki razvijalcem dajo več razlogov za razburjenje.

Danes številne spletne storitve in baze podatkov vrnejo podatke v JSON, ki je naravni del JavaScript-a. JSON je zdaj tako pogost in uporaben, da mnogi razvijalci Java uporabljajo obliko, številni dobri razčlenjevalniki JSON pa so na voljo tudi kot knjižnice Java. Toda JSON je del temeljev JavaScripta. Ne potrebujete knjižnic. Vse je tam in pripravljeno za uporabo.

Kje Java zmaga: oddaljeno odpravljanje napak

Java se ponaša z neverjetnimi orodji za nadzor grozdov strojev. JVM vsebuje globoke kljuke in izdelana orodja za profiliranje, ki pomagajo prepoznati ozka grla in napake. V podjetniškem paketu Java deluje nekaj najbolj izpopolnjenih strežnikov na planetu, podjetja, ki uporabljajo te strežnike, pa so zahtevala najboljše v telemetriji. Vsa ta orodja za spremljanje in odpravljanje napak so precej zrela in pripravljena za uporabo.

Kje zmaga Node.js: Namizje

Morda se tam izvaja nekaj jabolčnih programčkov Java in še vedno vzdržujem nekaj datotek Java JAR, na katere lahko kliknem za zagon, toda večinoma je namizni svet večinoma brezplačen z Javo. JavaScript pa še naprej zajema vse več dejanj, saj brskalnik poje večino vlog našega namizja. Ko je Microsoft na novo napisal Office za delo v brskalniku, je matrica oddana. Če se še vedno sprašujete, obstajajo zanimive možnosti, kot je Electron, ki vzamejo vašo spletno kodo in jo spremenijo v samostojno namizno aplikacijo.

Kje Java zmaga: dlančniki

Aplikacije za Android so pogosto napisane v Javi, 90 odstotkov novih telefonov pa uporablja neko različico Androida. Mnogi ljudje niti več ne uporabljajo namizja, ker so telefoni dovolj dobri za vse.

Seveda je malo zmede. Številni razvijalci pišejo spletne aplikacije Node.js, ki ciljajo na mobilne brskalnike v iPhonu in Androidu. Če je to narejeno dobro, je uspešnost pogosto dovolj dobra.

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