Programovanie

Node.js vs. Java: epická bitka o vývojársky mindshare

V histórii výpočtovej techniky bol rok 1995 bláznivým obdobím. Najprv sa objavila Java, potom na jej pätách prišiel JavaScript. Mená spôsobili, že vyzerali ako spojené dvojčatá, ktoré boli novo odlúčené, ale už sa nemohli líšiť. Jeden z nich je zostavený a staticky napísaný; druhý interpretoval a dynamicky písal na stroji. To je iba začiatok technických rozdielov medzi týmito dvoma divoko odlišnými jazykmi, ktoré sa medzičasom posunuli ku kolízii, vďaka Node.js.

Ak ste dosť starý na to, aby ste tam boli už v tom čase, možno si spomeniete na skorý, epický vrchol Javy. Opustilo laboratóriá a jeho hype meter bol pripnutý. Všetci to videli ako revolúciu, ktorá sa nezastaví pred ničím iným ako úplným prevzatím práce na počítači. Táto predpoveď bola nakoniec iba čiastočne správna. V súčasnosti Java dominuje telefónom s Androidom, podnikovým počítačom a niektorým zabudovaným svetom, ako sú disky Blu-ray.

Napriek všetkému úspechu však Java nikdy nedosiahla prílišný ťah na pracovnej ploche alebo v prehliadači. Ľudia hovorili o sile appletov a nástrojov založených na prostredí Java, ale gunk tieto kombinácie vždy pokazil. Servery sa stali príjemným miestom Javy.

Medzitým si to, čo si programátori pôvodne mysleli, že sú nemé dvojčatá, prišlo na svoje. Iste, JavaScript sa označoval niekoľko rokov, keď HTML a web vtiahli Borga do sveta. To sa ale zmenilo s AJAX. Náhle nemé dvojča malo moc.

Potom sa objavil súbor Node.js, ktorý svojou rýchlosťou otáčal vývojárom hlavy. JavaScript bol nielen na serveri rýchlejší, ako ktokoľvek čakal, ale bol často rýchlejší ako jazyk Java a ďalšie možnosti. Vďaka svojej stabilnej strave malých, rýchlych a nekonečných požiadaviek na údaje sa súbor Node.js odvtedy stal bežnejším, pretože webové stránky sa stali dynamickejšími.

Aj keď to pred 20 rokmi mohlo byť nemysliteľné, kvázi dvojčatá sú teraz uväznené v boji o kontrolu nad programovacím svetom. Na jednej strane sú hlboké základy pevného inžinierstva a architektúry. Na druhej strane sú jednoduchosť a všadeprítomnosť. Udrží si svet Java postavený na kompilátoroch starej školy, alebo bude rýchlosť a flexibilita Node.js pomáhať JavaScriptu naďalej hltať všetko, čo mu stojí v ceste?

Kde zvíťazí Java: Pevný základ

Počujem, ako sa vývojári smejú. Niektorí môžu dokonca zomrieť na zlyhanie srdca. Áno, Java má chyby a chyby, ale relatívne povedané, je to Gibraltárska skala. Rovnaká viera v Node.js je mnoho rokov preč. V skutočnosti to môže byť desaťročia, kým posádka JavaScriptu napíše takmer toľko regresných testov, koľko vyvinula spoločnosť Sun / Oracle na testovanie virtuálneho stroja Java. Pri štarte JVM získate 20-ročné skúsenosti od solídneho kurátora rozhodnutého ovládnuť podnikový server.

Svet JavaScriptu sa rýchlo dobieha. Keď veľká časť celého webu závisí od vykonávacieho nástroja JavaScriptu, hodiny pre vývojárov bazillionu idú na leštenie všetkých hrán. Všetky inovácie však majú negatívum, pretože nové funkcie sa môžu množiť rýchlejšie, ako ich dokáže vývojárska základňa absorbovať. Vývojári zo starých škôl sú často zmätení kódom naplneným novšími vylepšeniami syntaxe ECMAScript - a ten istý nový kód potichu spôsobí zlyhanie niektorých starších prehľadávačov. Nekonečná ponuka inovatívnych preprocesorov ako CoffeeScript a JSX môže byť skvelá pre vývojárov, ktorí chcú tieto funkcie, ale ostatným z nás sťažujú otvorenie náhodného súboru a jeho okamžité pochopenie.

Java má svoj podiel nových funkcií a možností, ale z väčšej časti je to stabilná platforma. To výrazne uľahčuje život vývojárom, ktorí stavajú niečo, aby vydržali.

Kde zvíťazí Node.js: všadeprítomnosť

Vďaka Node.js si JavaScript nájde domov na serveri aj v prehliadači. Kód, ktorý napíšete pre jednu, bude pravdepodobne fungovať rovnako na oboch. V živote nie je zaručené nič, ale toto je tak blízko, ako je to v počítačovom priemysle. Je oveľa jednoduchšie držať sa JavaScriptu pre obe strany rozdelenia medzi klientom a serverom, než je písať niečo raz v Jave a znova v JavaScripte, čo by ste pravdepodobne museli urobiť, ak ste sa rozhodli presunúť obchodnú logiku, ktorú ste napísali v Jave server do prehliadača. Alebo možno bude šéf trvať na tom, aby sa logika, ktorú ste vytvorili pre prehliadač, presunula na server. V obidvoch smeroch kódy Node.js a JavaScript výrazne uľahčujú migráciu kódu.

Zdá sa, že vedenie spoločnosti Node na tomto svete sa iba rozširuje. Najsofistikovanejšie webové rámce, ako napríklad React, sa rozhodnú na poslednú sekundu, či spustia kód na serveri alebo na klientovi. Jeden deň bude bežať na klientovi a druhý deň na serveri. Inteligentná logika urobí rozhodnutie za behu na základe načítania alebo náhradnej pamäte RAM alebo niečoho iného. Niektoré rámce dodajú JavaScript do databázy ako dopyt, kde sa vykonáva. Váš kód môže byť spustený kdekoľvek a je čoraz ťažšie udržať krok, pretože vám neposiela poštovú zásielku domov. Buďte šťastní, pretože nemusíte premýšľať o detailoch.

Kde zvíťazí Java: lepšie IDE

Vývojári v prostredí Java majú Eclipse, NetBeans alebo IntelliJ, tri špičkové nástroje, ktoré sú dobre integrované s debuggermi, dekompilátormi a servermi. Každá z nich má roky vývoja, vyhradených používateľov a pevné ekosystémy plné doplnkov.

Väčšina vývojárov Node.js medzitým píše slová do príkazového riadku a kód do svojho obľúbeného textového editora. Áno, niektorí z najlepších textových editorov ako Atom majú prepracované kolekcie doplnkov, ktoré umožňujú takmer všetko, ale aj tak sa zdá, že Node.js je viac stará škola ako Eclipse. Čoskoro vymeníme našu myš za Atari joystick.

Niektorí vývojári používajú Eclipse alebo Visual Studio, ktoré obidve podporujú Node.js. Prírastok záujmu o Node.js samozrejme znamená, že prichádzajú nové nástroje, z ktorých niektoré, ako napríklad IBM Node-RED, ponúkajú zaujímavé prístupy, ale ešte stále nie sú ani zďaleka také úplné a dominantné ako Eclipse alebo IntelliJ.

Divné je, že vývojári zrejme tieto nástroje nepoužívajú. Príkazový riadok mal zmiznúť pred 35 rokmi s príchodom Macu, vývojárom Node.js to však nikto nepovedal. Možnosti sú. Napríklad WebStorm je solídny komerčný nástroj od JetBrains, ktorý obsahuje mnoho nástrojov na zostavenie z príkazového riadku.

Samozrejme, ak hľadáte IDE, ktoré upravuje a žongluje s kódom, nové nástroje podporujúce Node.js sú dosť dobré. Ale ak požiadate svoje IDE, aby vám umožnilo úpravy, keď pracujete na bežiacom zdrojovom kóde, ako napríklad srdcový chirurg otvorí hrudník, sú nástroje Java omnoho výkonnejšie. Je to všetko a je to všetko miestne.

Kde zvíťazí Node.js: Dopyty do databázy

Dotazy na niektoré z novších databáz, ako sú CouchDB a MongoDB, sú písané v JavaScripte. Miešanie Node.js a volania do databázy nevyžaduje žiadne radenie prevodových stupňov, nieto ešte zapamätať si rozdiely v syntaxi.

Mnoho vývojárov Java medzitým používa SQL. Aj keď používajú Java DB - predtým Derby, databázu napísanú v Jave pre vývojárov Java -, svoje dotazy píšu v jazyku SQL. Mysleli by ste si, že jednoducho zavolajú metódy Java, ale mýlili by ste sa. Musíte napísať svoj databázový kód do SQL a potom nechať Derbyho analyzovať SQL. SQL je pekný jazyk, ale je úplne odlišný od jazyka Java. Mnoho vývojových tímov potrebuje na napísanie jazyka SQL a Java rôznych ľudí.

Aby toho nebolo málo, veľa kódovačov Java používa prepracované knižnice a schémy na prevod údajov z dotazu SQL na objekty Java, aby ich mohli prepracovať do šablón. Je to šialený proces a nakoniec dosť márnotratný.

Kde zvíťazí Java: Typy

Mnoho z úvodných kurzov programovania naďalej používa jazyk Java, pretože veľa serióznych programátorov má tendenciu mať rád staticky napísaný kód kvôli jednoduchosti a bezpečnosti. Kód sa cíti dôslednejšie potom, čo kompilátor zachytí zjavné chyby.

JavaScript sa však doháňa a niektorí vývojári prechádzajú na TypeScript, staticky napísanú nadmnožinu JavaScriptu, ktorá pred vypľutím niečoho, čo sa spúšťa v zásobníku JavaScriptu vášho prehliadača, využíva všetky kúzla kontroly typu. Ak máte radi typy, môže to stačiť na prijatie JavaScriptu. Alebo by ste mohli napodobeninu rozpoznať ako najúprimnejšiu formu lichôtky a držať sa jazyka Java, ktorý od začiatku obsahoval statické písanie.

Kde zvíťazí Node.js: syntaktická flexibilita

JavaScript bol v minulosti jednoduchý jazyk na vyskakovanie nechcených výstražných polí a na dvojitú kontrolu zadávania formulárov. Komunita vývojárov potom vytvorila mnoho rôznych verzií jazyka, ktoré sa dali preniesť do niečoho pre prehliadač. Existuje dav CoffeeScript ponúkajúci niekoľko rôznych syntaxí navrhnutých tak, aby uspokojili chuť čistejšej interpunkcie. Existuje dav React / Vue, ktorý kombinuje HTML a JavaScript len ​​preto, že je to čistejšie. K dispozícii je TypeScript pre milovníkov písma a LiveScript pre vyznávačov funkčného jazyka.

Aj vo svete Java nájdete obrovské množstvo kreativity, ale z nejakého dôvodu to nie je vyjadrené v mnohých predprocesoroch. Existuje niekoľko jazykov, ako sú Kotlin, Scala a Clojure, ktoré sa pre JVM menia na bytový kód, ale nejako sa cítia dosť odlišné na to, aby od seba oddeľovali ako samostatné jazyky. Všetky preprocesory uľahčujú život programátorom JavaScriptu, ktorí milujú rôzne spôsoby formulovania alebo interpunkcie svojich kódov.

Kde zvíťazí Java: Jednoduchý proces vytvárania

Komplikované nástroje na vytváranie ako Ant a Maven spôsobili revolúciu v programovaní v Jave. Ale je tu len jeden problém. Špecifikáciu napíšete vo formáte XML, dátovom formáte, ktorý nebol navrhnutý na podporu logiky programovania. Iste, je pomerne ľahké vyjadriť vetvenie pomocou vnorených značiek, ale je niečo nepríjemné pri prepínaní prevodových stupňov z Javy na XML, iba na vytvorenie niečoho. S jazykom JavaScript nie sú k dispozícii žiadne prevodové stupne.

Node.js mali jednoduchšie zostavenie. Stačí upraviť kód a stlačiť príkaz „spustiť“. To bolo vtedy. Pretože vývojári uzlov proces „vylepšili“, pridali preprocesory, ktoré prevezmú váš obľúbený čiastkový výber JavaScriptu a vytvoria z neho spustiteľný program. Potom musí správca balíkov uzlov nájsť správnu knižnicu. Väčšinou to funguje, ale niekedy to tak nie je a potom trávite čas hľadaním správneho čísla verzie nejakého artefaktu, ktorý si sami zostavujete v samostatnom kroku. A ak sa dopustíte nejakej chyby v úložisku artefaktov, číslo verzie je vystrelené a musíte znova otáčať počítadlom kilometrov.

Java má tiež zložitý proces zostavovania, ktorý je dosť podobný metóde Node.js, ale nemá pocit, že by bol zložitejší. Maven a Ant sa teraz nejako javia ako súčasť nadácie Java. Mnohé z hrubých hrán sú už dávno preč a stavby jednoducho fungujú častejšie. Keby existovala nejaká absolútna miera problémov so zostavením, mohli by si byť oba jazyky podobné, ale rýchly výbuch zložitosti JavaScriptu znamená, že Java vyhráva.

Súvisiace video: Tipy a triky pre Node.js

V tomto vysvetľujúcom videu sa naučte niekoľko techník, ktoré môžu zlepšiť vaše skúsenosti s vývojom uzlov.

Kde zvíťazí Node.js: JSON

Keď databázy vyplivnú odpovede, Java vyvinie maximálne úsilie, aby z výsledkov urobila objekty Java. Vývojári budú hodiny diskutovať o mapovaní POJO, režime dlhodobého spánku a ďalších nástrojoch. Ich konfigurácia môže trvať hodiny alebo dokonca dni. Nakoniec kód Java získa objekty Java po celej konverzii. A pokiaľ ide o konfiguráciu, svet Java sa stále drží XML a ponúka dokonca dva veľké analyzátory, ktoré vývojárom dajú viac dôvodov na starosti.

Dnes veľa webových služieb a databáz vracia údaje v JSON, prirodzenej súčasti JavaScriptu. JSON je teraz taký bežný a užitočný, že tento formát používa veľa vývojárov Java. V knižniciach Java je k dispozícii aj množstvo dobrých analyzátorov JSON. Ale JSON je súčasťou základu JavaScriptu. Nepotrebujete knižnice. Je to všetko a pripravené na použitie.

Kde zvíťazí Java: vzdialené ladenie

Java sa môže pochváliť neuveriteľnými nástrojmi na monitorovanie klastrov strojov. JVM má hlboké väzby a prepracované profilovacie nástroje, ktoré pomáhajú identifikovať úzke miesta a zlyhania. Podnikový zásobník Java prevádzkuje niektoré z najsofistikovanejších serverov na planéte a spoločnosti, ktoré tieto servery používajú, požadovali v telemetrii to najlepšie. Všetky tieto nástroje na sledovanie a ladenie sú dosť vyspelé a pripravené na nasadenie.

Kde zvíťazí Node.js: Desktop

Môžu tam bežať nejaké applety Java a stále udržiavam niektoré súbory Java JAR, na ktoré môžem kliknúť, aby som ich spustil, ale svet desktopov je väčšinou z veľkej časti bez Java. Na druhej strane JavaScript naďalej zachytáva čoraz viac akcií, pretože prehľadávač preberá väčšinu rolí pre našu pracovnú plochu. Keď spoločnosť Microsoft prepísala Office tak, aby fungoval v prehliadači, nástroj bol vyhodený. Ak vás stále zaujíma, existujú zaujímavé možnosti, ako je Electron, ktoré vezmú váš webový kód a urobia z neho samostatnú aplikáciu pre počítač.

Kde zvíťazí Java: vreckové počítače

Aplikácie pre Android sú často napísané v jazyku Java a 90 percent nových telefónov používa určitú verziu systému Android. Mnoho ľudí už vôbec nepoužíva stolové počítače, pretože telefóny sú dosť dobré na všetko.

Samozrejme, existuje trochu zmätok. Mnoho vývojárov píše webové aplikácie Node.js, ktoré sa zameriavajú na mobilné prehliadače na zariadeniach iPhone aj Android. Ak sa to urobí dobre, výkon je často dosť dobrý.

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