Programování

Node.js vs. Java: epická bitva o vývojářské myšlení

V historii výpočetní techniky byl rok 1995 bláznivým obdobím. Nejprve se objevila Java, pak na patách přišel JavaScript. Díky jejich jménům vypadala jako nově oddělená dvojčata, ale nemohla se lišit. Jeden z nich je sestaven a staticky napsán; druhý interpretoval a dynamicky psal. To je jen začátek technických rozdílů mezi těmito dvěma divoce odlišnými jazyky, které se od té doby díky Node.js. posunuly ke koliznímu kurzu.

Pokud jste dost staří na to, abyste tu už byli, možná si vzpomenete na raný epický vrchol Javy. Opustil laboratoře a jeho humbuk metr sepnul. Každý to viděl jako revoluci, která se nezastaví před ničím jiným než úplným převzetím výpočetní techniky. Tato předpověď byla nakonec jen částečně správná. Dnes Java dominuje telefonům Android, podnikovým počítačům a některým vestavěným světům, jako jsou disky Blu-ray.

Navzdory svému úspěchu však Java nikdy nezajistila velkou přilnavost na ploše nebo v prohlížeči. Lidé hovořili o síle appletů a nástrojů založených na Javě, ale gunk tyto kombinace vždy pokazil. Servery se staly milým místem Javy.

Mezitím si to, co si programátoři původně spletli s hloupým dvojčetem, přišlo na své. Jistě, JavaScript se několik let označoval, protože HTML a web přitáhly Borga na svět. Ale to se změnilo s AJAX. Náhle nemé dvojče mělo moc.

Poté se objevil Node.js, který svou rychlostí otáčel hlavami vývojářů. Nejen, že byl JavaScript na serveru rychlejší, než kdokoli čekal, ale byl často rychlejší než Java a další možnosti. Jeho stálá strava malých, rychlých a nekonečných požadavků na data od té doby učinila soubor Node.js běžnějším, protože webové stránky se staly dynamičtějšími.

I když to před 20 lety mohlo být nemyslitelné, kvazi-dvojčata jsou nyní uzamčena v boji o kontrolu nad programovacím světem. Na jedné straně jsou hluboké základy pevného inženýrství a architektury. Na druhé straně je jednoduchost a všudypřítomnost. Udrží si svět Java založený na kompilátorech ze staré školy, nebo rychlost a flexibilita Node.js pomůže JavaScriptu pokračovat v pohlcování všeho, co mu stojí v cestě?

Kde zvítězí Java: Pevný základ

Slyším, jak se vývojáři smějí. Někteří dokonce umírají na srdeční selhání. Ano, Java má závady a chyby, ale relativně řečeno, je to Gibraltarská skála. Stejná víra v Node.js je mnoho let pryč. Ve skutečnosti to může trvat desítky let, než posádka JavaScriptu napíše téměř tolik regresních testů, kolik vyvinula společnost Sun / Oracle pro testování Java Virtual Machine. Když spustíte JVM, získáte 20 let zkušeností solidního kurátora odhodlaného ovládnout podnikový server.

Svět JavaScriptu rychle dobíhá. Pokud velká část celého webu závisí na prováděcím stroji JavaScriptu, hodiny vývojářů bazillionu jdou do leštění všech okrajů. Ale všechny inovace mají nevýhodu, protože nové funkce se mohou šířit rychleji, než je může vývojářská základna absorbovat. Vývojáři ze staré školy jsou často zmateni kódem naplněným novějšími vylepšeními syntaxe ECMAScript - a tentýž nový kód tiše narazí na některé starší prohlížeče. Nekonečná nabídka inovativních preprocesorů, jako jsou CoffeeScript a JSX, může být skvělá pro vývojáře, kteří chtějí tyto funkce, ale ostatním znesnadňují otevření náhodného souboru a jeho okamžité pochopení.

Java má svůj podíl na nových funkcích a možnostech, ale z velké části je to stabilní platforma. To výrazně usnadňuje život vývojářům, kteří staví něco, co vydrží.

Kde zvítězí Node.js: Všudypřítomnost

Díky Node.js najde JavaScript domov na serveru a v prohlížeči. Kód, který napíšete pro jeden, bude pravděpodobně fungovat stejně na obou. V životě není nic zaručeno, ale je to tak blízko, jak je to v počítačovém podnikání. Je mnohem snazší držet se JavaScriptu pro obě strany rozdělení klient / server, než je psát něco jednou v Javě a znovu v JavaScriptu, což byste pravděpodobně museli udělat, kdybyste se rozhodli přesunout obchodní logiku, kterou jste napsali v Javě pro serveru do prohlížeče. Nebo možná šéf bude trvat na tom, aby logika, kterou jste vytvořili pro prohlížeč, byla přesunuta na server. V obou směrech Node.js a JavaScript usnadňují migraci kódu.

Zdá se, že vedení Node v tomto světě se jen rozšiřuje. Nejsofistikovanější webové rámce, jako je React, se rozhodnou na poslední sekundu, zda spustit kód na serveru nebo na klientovi. Jeden den bude spuštěn na klientovi a druhý den bude spuštěn na serveru. Nějaká chytrá logika udělá rozhodnutí za běhu na základě načtení nebo náhradní RAM nebo něčeho jiného. Některé rámce dodávají JavaScript do databáze jako dotaz, kde je spuštěn. Váš kód může běžet kdekoli a je stále těžší držet krok, protože neposílá domů pohlednici. Buďte šťastní, protože nemusíte přemýšlet o detailech.

Kde zvítězí Java: lepší IDE

Vývojáři prostředí Java mají Eclipse, NetBeans nebo IntelliJ, tři špičkové nástroje, které jsou dobře integrovány do debuggerů, decompilerů a serverů. Každý z nich má roky vývoje, vyhrazené uživatele a pevné ekosystémy plné zásuvných modulů.

Většina vývojářů Node.js mezitím zadává slova do příkazového řádku a kód do svého oblíbeného textového editoru. Ano, někteří z nejlepších textových editorů, jako je Atom, mají propracované sbírky zásuvných modulů, které dělají téměř cokoli, ale i tak se zdá, že Node.js je více stará škola než Eclipse. Brzy nahradíme naši myš joystickem Atari.

Někteří vývojáři používají Eclipse nebo Visual Studio, které oba podporují Node.js. Nárůst zájmu o Node.js samozřejmě znamená, že přicházejí nové nástroje, z nichž některé, jako je IBM Node-RED, nabízejí zajímavé přístupy, ale stále ještě mají dlouhou cestu k tomu, aby byly úplné nebo dominantní jako Eclipse nebo IntelliJ.

Zvláštní je, že vývojáři tyto nástroje zřejmě nepoužívají. Příkazový řádek měl zmizet před 35 lety s příchodem Macu, ale vývojářům Node.js to nikdo neřekl. Možnosti jsou zde. Například WebStorm je solidní komerční nástroj od JetBrains, který obsahuje mnoho nástrojů pro vytváření příkazového řádku.

Samozřejmě, pokud hledáte IDE, které upravuje a žongluje s kódem, nové nástroje podporující Node.js jsou dost dobré. Pokud ale požádáte IDE, aby vám umožnilo úpravy, když pracujete na běžícím zdrojovém kódu, jako by řezy srdečního chirurga otevřely hrudník, nástroje Java jsou mnohem výkonnější. Je to všechno a je to všechno místní.

Kde zvítězí Node.js: Databázové dotazy

Dotazy na některé z novějších databází, jako jsou CouchDB a MongoDB, jsou psány v JavaScriptu. Smíchání Node.js a volání do databáze nevyžaduje žádné řazení, natož aby si pamatoval rozdíly v syntaxi.

Mnoho vývojářů Java mezitím používá SQL. I když používají Java DB - dříve Derby, databázi napsanou v Javě pro vývojáře Java -, píší své dotazy v SQL. Člověk by si myslel, že jednoduše zavolá metody Java, ale mýlil by ses. Musíte napsat svůj databázový kód v SQL a poté nechat Derby analyzovat SQL. SQL je pěkný jazyk, ale je úplně jiný než Java a mnoho vývojových týmů potřebuje k psaní SQL a Java různé lidi.

Aby toho nebylo málo, mnoho kodérů Java používá propracované knihovny a schémata pro převod dat z dotazu SQL na objekty Java, aby je mohli přepracovat do šablon. Je to šílený proces a nakonec docela zbytečný.

Kde Java vyhrává: Typy

Mnoho z úvodních kurzů programování nadále používá Javu, protože mnoho seriózních programátorů má tendenci mít rádi staticky napsaný kód jak pro jednoduchost, tak pro bezpečnost. Kód se cítí přísnější poté, co kompilátor zachytí zjevné chyby.

JavaScript se však blíží a někteří vývojáři přecházejí na TypeScript, staticky napsanou nadmnožinu JavaScriptu, která aplikuje veškerou magii kontroly typu, než vyplivne něco, co běží v zásobníku JavaScriptu vašeho prohlížeče. Pokud máte rádi typy, může to stačit k přijetí JavaScriptu. Nebo byste mohli napodobit jen jako nejupřímnější formu lichocení a držet se Javy, která od začátku obsahovala statické psaní.

Kde zvítězí Node.js: Syntaktická flexibilita

JavaScript byl v minulosti jednoduchý jazyk pro vyskakování nežádoucích výstražných polí a dvojí kontrolu vstupu do formuláře. Pak vývojářská komunita vytvořila mnoho různých verzí jazyka, které lze převést do něčeho pro prohlížeč. Existuje dav CoffeeScript, který nabízí několik různých syntaxí navržených tak, aby uspokojily chuť čistší interpunkce. Existuje dav React / Vue, který kombinuje HTML a JavaScript jen proto, že je čistší. K dispozici je TypeScript pro milovníky typů a LiveScript pro vyznavače funkčních jazyků.

I ve světě Java najdete obrovské množství kreativity, ale z nějakého důvodu to u mnoha předzpracovatelů není vyjádřeno. Existuje celá řada jazyků, jako je Kotlin, Scala a Clojure, které se pro JVM změnily na bajtový kód, ale nějak se cítí dostatečně odlišné, aby od sebe oddělily jako samostatné jazyky. Všechny preprocesory dělají život zábavnějším pro programátory JavaScriptu, kteří milují různé způsoby formulování nebo interpunkce svého kódu.

Kde zvítězí Java: Jednoduchý proces sestavení

Komplikované nástroje pro sestavení jako Ant a Maven způsobily revoluci v programování v Javě. Ale je tu jen jeden problém. Specifikaci napíšete ve formátu XML, datovém formátu, který nebyl navržen tak, aby podporoval logiku programování. Jistě, je poměrně snadné vyjádřit větvení pomocí vnořených značek, ale je něco otravného, ​​když přepínáte převody z Javy na XML, jen abyste něco vytvořili. S JavaScriptem neexistují žádné spínací stupně.

Node.js míval jednodušší sestavení. Stačí upravit kód a poté stisknout „spustit“. To bylo tehdy. Jelikož vývojáři uzlů tento proces „vylepšili“, přidali preprocesory, které převezmou váš oblíbený dílčí výběr JavaScriptu a promění jej v něco, co lze spustit. Správce balíků uzlů pak musí najít správnou knihovnu. Většinou to prostě funguje, ale někdy to tak není a pak trávíte čas hledáním správného čísla verze nějakého artefaktu, který si budujete sami v samostatném kroku. A pokud se dopustíte nějaké chyby v úložišti artefaktů, číslo verze je vystřeleno a musíte znovu otočit počítadla kilometrů.

Java má také složitý proces sestavování, který je velmi podobný metodě Node.js, ale nemá pocit, že by byl složitější. Maven a Ant se teď nějak jeví jako součást Java Foundation. Mnoho drsných hran je dávno pryč a verze prostě fungují častěji. Pokud by existovala nějaká absolutní míra potíží s sestavením, oba jazyky by mohly být podobné, ale rychlý výbuch složitosti JavaScriptu znamená, že Java vyhrává.

Související video: Tipy a triky Node.js

V tomto vysvětlujícím videu se naučte několik technik, které mohou zlepšit vaše zkušenosti s vývojem uzlů.

Kde zvítězí Node.js: JSON

Když databáze vyplivnou odpovědi, Java jde do propracovaných délek, aby proměnila výsledky v objekty Java. Vývojáři budou hodiny diskutovat o mapování POJO, režimu spánku a dalších nástrojích. Jejich konfigurace může trvat hodiny nebo dokonce dny. Kód Java nakonec získá objekty Java po celé konverzi. A pokud jde o konfiguraci, svět Java stále lpí na XML a nabízí dokonce dva hlavní analyzátory, které vývojářům dávají více důvodů k trápení.

Dnes mnoho webových služeb a databází vrací data v JSON, přirozené součásti JavaScriptu. JSON je nyní tak běžný a užitečný, že formát používá mnoho vývojářů Java a jako knihovna Java je k dispozici také řada dobrých analyzátorů JSON. Ale JSON je součástí základu JavaScriptu. Nepotřebujete knihovny. Je tam vše a je připraveno jít.

Kde Java vyhraje: Vzdálené ladění

Java se může pochlubit neuvěřitelnými nástroji pro monitorování klastrů strojů. JVM má hluboké vazby a propracované profilovací nástroje, které pomáhají identifikovat úzká místa a selhání. Podnikový zásobník Java provozuje některé z nejsofistikovanějších serverů na planetě a společnosti, které tyto servery používají, požadovaly v telemetrii to nejlepší. Všechny tyto nástroje pro monitorování a ladění jsou docela vyspělé a připravené k nasazení.

Kde zvítězí Node.js: Desktop

Mohou tam běžet nějaké applety Java a stále udržuji některé soubory Java JAR, na které můžu kliknout, ale většinou je svět desktopů do značné míry bez Java. JavaScript na druhou stranu nadále zachycuje stále více akcí, protože prohlížeč přebírá většinu rolí pro náš desktop. Když Microsoft přepsal Office tak, aby fungoval v prohlížeči, nástroj byl odlit. Pokud stále přemýšlíte, existují zajímavé možnosti, jako je Electron, které vezmou váš webový kód a promění ho v samostatnou aplikaci pro stolní počítače.

Kde Java vyhrává: Kapesní počítače

Aplikace pro Android jsou často psány v jazyce Java a 90 procent nových telefonů používá nějakou verzi systému Android. Mnoho lidí už ani nepoužívá stolní počítače, protože telefony jsou dost dobré na všechno.

Samozřejmě je tu trochu zmatek. Mnoho vývojářů píše webové aplikace Node.js, které cílí na mobilní prohlížeče na iPhonu i Androidech. Pokud je to provedeno dobře, výkon je často dost dobrý.

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