Programavimas

„Node.js“ ir „Java“: epinė kova už kūrėjų „mindshare“

Skaičiavimo istorijoje 1995-ieji buvo beprotiškas laikas. Pirmiausia pasirodė „Java“, tada ant kulnų atsirado „JavaScript“. Dėl vardų jie atrodė kaip naujai atsiskyrę dvyniai dvyniai, tačiau jie negalėjo būti kitokie. Vienas iš jų yra sudarytas ir statiškas; kitas interpretavo ir dinamiškai spausdino. Tai tik techninių skirtumų tarp šių dviejų nepaprastai skirtingų kalbų, kurios nuo to laiko perėjo į susidūrimo kursą, pradžia dėka „Node.js“.

Jei esate pakankamai senas, kad buvote tada, galite prisiminti ankstyvąją „Java“ viršūnę. Jis išėjo iš laboratorijų, o jo hype matuoklis buvo prisegtas. Visi tai suprato kaip revoliuciją, kuri sustos ne ką mažiau, nei visišku skaičiavimo perėmimu. Ši prognozė galiausiai buvo teisinga tik iš dalies. Šiandien „Java“ dominuoja „Android“ telefonuose, įmonės kompiuteriuose ir kai kuriuose įterptuosiuose pasauliuose, pavyzdžiui, „Blu-ray“ diskuose.

Nepaisant visos savo sėkmės, „Java“ niekada nenustatė daug traukos darbalaukyje ar naršyklėje. Žmonės reklamavo programėlių ir „Java“ pagrįstų įrankių galią, tačiau „Gunk“ visada sugadino šiuos derinius. Serveriai tapo „Java“ saldžia vieta.

Tuo tarpu tai, ką programuotojai iš pradžių klaidingai suprato kaip nebylų dvynį, atsirado sava. Žinoma, „JavaScript“ keletą metų žymėjo HTML, o žiniatinklis patraukė „Borg“ pasaulį. Bet tai pasikeitė su AJAX. Staiga nebylioji dvynė turėjo galią.

Tada buvo pagimdytas „Node.js“, kuris savo greičiu suko kūrėjų galvas. Serveryje „JavaScript“ buvo ne tik greitesnis, nei kas tikėjosi, bet dažnai ir greičiau nei „Java“ ir kitos parinktys. Nuolatinė mažų, greitų, nesibaigiančių duomenų užklausų dieta nuo to laiko „Node.js“ tapo labiau paplitusia, nes tinklalapiai tapo dinamiškesni.

Nors prieš 20 metų tai galėjo būti neįsivaizduojama, beveik dvyniai dabar uždaryti į kovą dėl programavimo pasaulio valdymo. Vienoje pusėje yra gilūs tvirtos inžinerijos ir architektūros pagrindai. Kitoje pusėje yra paprastumas ir visur. Ar senosios mokyklos kompiliatorių valdomas „Java“ pasaulis išlaikys savo vietą, ar „Node.js“ greitis ir lankstumas padės „JavaScript“ toliau grobti viską, kas kelyje?

Kur laimi Java: tvirti pamatai

Aš girdžiu, kaip kūrėjai juokiasi. Kai kurie gali net mirti nuo širdies nepakankamumo. Taip, „Java“ turi nesklandumų ir klaidų, bet, palyginti, tai Gibraltaro uola. Tas pats tikėjimas „Node.js“ yra ilgametis. Tiesą sakant, gali praeiti dešimtmečiai, kol „JavaScript“ komanda parašys beveik tiek regresijos testų, kiek „Sun / Oracle“ sukūrė „Java“ virtualiosios mašinos testavimui. Paleidę JVM, jūs gaunate 20 metų patirtį iš patikimo kuratoriaus, pasiryžusio dominuoti įmonės serveryje.

„JavaScript“ pasaulis greitai vejasi. Kai didžioji dalis viso žiniatinklio priklauso nuo „JavaScript“ vykdymo variklio, daugybė kūrėjų valandų trunka visų kraštų šlifavimą. Tačiau visos naujovės turi neigiamą pusę, nes naujų funkcijų gali daugėti greičiau, nei kūrėjų bazė gali jas įsisavinti. Senosios mokyklos kūrėjus dažnai painioja kodas, užpildytas naujesniais ECMAScript sintaksės patobulinimais - ir tas pats naujas kodas tyliai sugadins kai kurias senesnes naršykles. Nesibaigiantis novatoriškų išankstinių procesorių, tokių kaip „CoffeeScript“ ir „JSX“, pasiūla gali būti puiki kūrėjams, norintiems tų funkcijų, tačiau dėl to mums visiems kitiems yra sunkiau atidaryti atsitiktinį failą ir jį nedelsiant suprasti.

„Java“ turi savo dalį naujų funkcijų ir galimybių, tačiau dažniausiai tai yra stabili platforma. Tai žymiai palengvina kūrėjų, kurie kuria kažką, kad jie truktų.

Kur laimi „Node.js“: visur

„Node.js“ dėka „JavaScript“ randa namus serveryje ir naršyklėje. Vienam parašytas kodas greičiausiai veiks vienodai abiem. Niekas negarantuojamas gyvenime, tačiau tai yra taip arti, kaip ir kompiuterių versle. Kur kas paprasčiau laikytis „JavaScript“ abiem kliento / serverio padalijimo pusėms, nei ką nors parašyti „Java“ ir dar kartą „JavaScript“, o tai greičiausiai reikės padaryti, jei nuspręstumėte perkelti „Java“ parašytą verslo logiką serverį į naršyklę. O gal viršininkas reikalaus, kad jūsų sukurta naršyklės logika būtų perkelta į serverį. Bet kuria kryptimi „Node.js“ ir „JavaScript“ žymiai palengvina kodo perkėlimą.

Atrodo, kad „Node“ lyderystė šiame pasaulyje tik plečiasi. Patys moderniausi žiniatinklio pagrindai, pvz., „React“, paskutinę sekundę nuspręs, ar paleisti kodą serveryje, ar kliente. Vieną dieną ji veiks kliente, o kitą dieną - serveryje. Tam tikra protinga logika priims sprendimą skrisdama pagal apkrovą, atsarginę RAM ar kitą. Kai kurios sistemos „JavaScript“ į duomenų bazę perduos kaip užklausą, kur ji vykdoma. Jūsų kodas gali būti rodomas bet kur ir jį sekti vis sunkiau, nes jis neatsiunčia atvirukų namo. Tiesiog būk laimingas, nes nereikia galvoti apie detales.

Kur laimi „Java“: geresni IDE

„Java“ kūrėjai turi tris aukščiausio lygio įrankius „Eclipse“, „NetBeans“ arba „IntelliJ“, kurie yra gerai integruoti su derintuvais, dekompiliatoriais ir serveriais. Kiekvienas iš jų turi daugybę metų trunkantį vystymąsi, atsidavusius vartotojus ir tvirtas ekosistemas, užpildytas papildiniais.

Tuo tarpu dauguma „Node.js“ kūrėjų įveda žodžius į komandinę eilutę ir koduoja į savo mėgstamą teksto rengyklę. Taip, kai kurie geriausi teksto redaktoriai, pvz., „Atom“, turi išsamius papildinių rinkinius, kurie daro beveik viską, tačiau net ir tada atrodo, kad „Node.js“ yra senesnė mokykla nei „Eclipse“. Netrukus mes pakeisime pelę „Atari“ džiaugsmo lazdele.

Kai kurie kūrėjai naudoja „Eclipse“ arba „Visual Studio“, kurie abu palaiko „Node.js“. Žinoma, didėjantis susidomėjimas „Node.js“ reiškia, kad ateina nauji įrankiai, kai kurie iš jų, pavyzdžiui, „IBM Node-RED“ siūlo intriguojančius metodus, tačiau jie dar toli gražu nėra tokie išsamūs ar dominuojantys kaip „Eclipse“ ar „IntelliJ“.

Keista tai, kad kūrėjai, atrodo, nenaudoja šių įrankių. Komandinė eilutė turėjo išnykti prieš 35 metus, atėjus „Mac“, tačiau „Node.js“ kūrėjams niekas to nepasakė. Variantai yra. Pavyzdžiui, „WebStorm“ yra tvirtas „JetBrains“ komercinis įrankis, apimantis daug komandinės eilutės kūrimo įrankių.

Žinoma, jei ieškote IDE, kuris redaguoja ir žongliruoja kodu, nauji įrankiai, palaikantys „Node.js“, yra pakankamai geri. Bet jei paprašysite IDE leisti redaguoti, kai naudojate veikiantį šaltinio kodą, pavyzdžiui, širdies chirurgo skiltelės atveria krūtinę, na, „Java“ įrankiai yra daug galingesni. Visa tai yra, ir visa tai yra vietinė.

Kur laimi „Node.js“: duomenų bazių užklausos

Kai kurių naujesnių duomenų bazių, tokių kaip „CouchDB“ ir „MongoDB“, užklausos rašomos „JavaScript“. Maišant „Node.js“ ir iškvietimą į duomenų bazę nereikia perjungti pavarų, jau nekalbant apie tai, kad reikia prisiminti sintaksės skirtumus.

Tuo tarpu daugelis „Java“ kūrėjų naudoja SQL. Net ir naudodami „Java DB“ - anksčiau „Derby“, duomenų bazę, parašytą „Java“ Java kūrėjams, jie rašo savo užklausas SQL. Manytumėte, kad jie paprasčiausiai vadins „Java“ metodus, bet klystate. Turite įrašyti savo duomenų bazės kodą į SQL, tada leiskite „Derby“ išanalizuoti SQL. SQL yra graži kalba, tačiau ji visiškai skiriasi nuo „Java“, o daugeliui kūrimo komandų reikia skirtingų žmonių, kad jie parašytų SQL ir „Java“.

Kad būtų dar blogiau, daugelis „Java“ koduotojų, naudodamiesi sudėtingomis bibliotekomis ir schemomis, konvertuoja duomenis iš SQL užklausos į „Java“ objektus, kad galėtų juos perdaryti į šablonus. Tai beprotiškas procesas ir galiausiai gana švaistantis.

Kur laimi „Java“: tipai

Daugelyje įvadinių programavimo kursų ir toliau naudojama „Java“, nes daugeliui rimtų programuotojų paprastai patinka statiškai įvestas kodas tiek dėl paprastumo, tiek dėl saugumo. Kodas tiesiog jaučiasi griežtesnis, kai kompiliatorius užfiksuoja akivaizdžias klaidas.

Vis dėlto „JavaScript“ pasivijo ir kai kurie kūrėjai pereina prie „TypeScript“ - statiškai įvesto „JavaScript“ superseteto, kuris taiko visą tipo tikrinimo magiją, prieš išspjaudamas ką nors, kas veikia jūsų naršyklės „JavaScript“ šūsnyje. Jei jums patinka tipai, to gali pakakti, kad galėtumėte naudoti „JavaScript“. Arba galite tiesiog atpažinti imitaciją kaip nuoširdžiausią meilikavimo formą ir laikytis „Java“, kuri nuo pat pradžių apėmė statinį spausdinimą.

Kur laimi „Node.js“: sintaksinis lankstumas

„JavaScript“ anksčiau buvo paprasta kalba, skirta iššokti nepageidaujamiems įspėjimų langeliams ir dar kartą patikrinti formos įvestį. Tada kūrėjų bendruomenė sukūrė daugybę skirtingų kalbos versijų, kurias galima perkelti į naršyklę. „CoffeeScript“ minia siūlo keletą skirtingų sintaksių, skirtų švaresnių skyrybos ženklų skoniui patenkinti. React / Vue minia susimaišo HTML ir „JavaScript“ vien todėl, kad ji yra švaresnė. Yra „TypeScript“ tipo mėgėjams ir „LiveScript“ funkcinių kalbų bhaktoms.

„Java“ pasaulyje taip pat rasite nepaprastai daug kūrybiškumo, tačiau kažkodėl tai nėra išreikšta daugeliu išankstinių procesorių. Yra keletas kalbų, tokių kaip „Kotlin“, „Scala“ ir „Clojure“, kurios paverčiamos JVM baitų kodu, tačiau kažkaip jos jaučiasi pakankamai skirtingos, kad galėtų atsiskirti kaip atskiros kalbos. Visi išankstiniai procesoriai daro gyvenimą įdomesnį „JavaScript“ programuotojams, kurie mėgsta įvairius kodo formavimo ar skyrybos būdus.

Kur laimi „Java“: paprastas kūrimo procesas

Sudėtingi kūrimo įrankiai, tokie kaip „Ant“ ir „Maven“, pakeitė „Java“ programavimą. Tačiau yra tik viena problema. Rašote specifikaciją XML, duomenų formatu, kuris nebuvo sukurtas programavimo logikai palaikyti. Aišku, gana lengva išreikšti išsišakojimą naudojant įdėtas žymas, tačiau yra kažkas erzinančio, kai perjungiama pavara iš „Java“ į „XML“ vien tam, kad sukurtumėte ką nors. Naudojant „JavaScript“ nėra perjungimo pavarų.

„Node.js“ sukūrimas buvo paprastesnis. Tiesiog redaguosite kodą ir tada paspauskite „paleisti“. Tai buvo tada. Kai „Node“ kūrėjai „patobulino“ procesą, jie pridėjo išankstinius procesorius, kurie pasirenka jūsų mėgstamą „JavaScript“ subdialektą ir paverčia jį kuo nors paleidžiamu. Tada „Node“ paketų tvarkyklė turi rasti tinkamą biblioteką. Dažniausiai tai tiesiog veikia, bet kartais ne, tada jūs praleidžiate laiką ieškodami tinkamo kai kurių artefaktų versijų numerių, kuriuos patys statote atskirame žingsnyje. Ir jei padarysite kokią nors klaidą artefaktų saugykloje, gerai, tas versijos numeris bus nušautas ir turėsite vėl pasukti odometro ratus.

„Java“ taip pat turi sudėtingą kūrimo procesą, kuris yra gana panašus į „Node.js“ metodą, tačiau nemano, kad jis tapo dar sudėtingesnis. Kažkaip dabar Mavenas ir Antas atrodo kaip „Java“ fondo dalis. Daugelis šiurkščių kraštų seniai nebėra, o konstrukcijos tiesiog veikia dažniau. Jei būtų kokių nors absoliučių rūpesčių dėl sukūrimo, abi kalbos gali būti panašios, tačiau greitas „JavaScript“ sudėtingumo sprogimas reiškia, kad „Java“ laimi.

Susijęs vaizdo įrašas: „Node.js“ patarimai ir gudrybės

Šiame aiškinamojo vaizdo įraše sužinokite keletą būdų, kurie gali pagerinti jūsų mazgų kūrimo patirtį.

Kur laimi „Node.js“: JSON

Kai duomenų bazės išspjauna atsakymus, „Java“ imasi detalių rezultatų, kad rezultatus paverstų „Java“ objektais. Kūrėjai valandų valandas ginčysis dėl POJO atvaizdavimo, užmigdymo režimo ir kitų priemonių. Jų konfigūravimas gali užtrukti kelias valandas ar net dienas. Galiausiai „Java“ kodas gauna „Java“ objektus po visų konversijų. Kalbant apie konfigūravimą, „Java“ pasaulis vis dar laikosi XML ir netgi siūlo du pagrindinius analizatorius, kad kūrėjai turėtų daugiau priežasčių jaudintis.

Šiandien daugelis interneto paslaugų ir duomenų bazių pateikia duomenis JSON, kuris yra natūrali „JavaScript“ dalis. JSON dabar yra toks įprastas ir naudingas, kad daugelis „Java“ kūrėjų naudoja formatą, o nemažai gerų JSON analizatorių taip pat yra kaip „Java“ bibliotekos. Tačiau JSON yra „JavaScript“ pagrindo dalis. Jums nereikia bibliotekų. Viskas ten ir paruošta.

Kur laimi „Java“: nuotolinis derinimas

„Java“ gali pasigirti neįtikėtinais įrankiais mašinų grupėms stebėti. Yra gilių JVM kabliukų ir parengti profiliavimo įrankiai, padedantys nustatyti kliūtis ir gedimus. „Java“ įmonių kaupas valdo vienus iš moderniausių serverių planetoje, o tuos serverius naudojančios įmonės pareikalavo geriausių rezultatų telemetrijos srityje. Visi šie stebėjimo ir derinimo įrankiai yra pakankamai subrendę ir parengti, kad galėtumėte juos įdiegti.

Kur laimi „Node.js“: darbalaukis

Gali būti, kad ten veikia kai kurios „Java“ programėlės, ir aš vis dar prižiūriu kai kuriuos „Java JAR“ failus, kuriuos galiu spustelėti, kad paleisčiau, tačiau dažniausiai darbalaukio pasaulyje daugiausia nėra „Java“. Kita vertus, „JavaScript“ ir toliau fiksuoja vis daugiau veiksmų, nes naršyklė suvalgo didžiąją dalį mūsų darbalaukio vaidmenų. Kai „Microsoft“ perrašė „Office“, kad jis veiktų naršyklėje, štampas buvo išlietas. Jei vis dar įdomu, yra tokių įdomių parinkčių kaip „Electron“, kurios ima jūsų žiniatinklio kodą ir paverčia jį atskira darbalaukio programa.

Kur laimi „Java“: delniniai kompiuteriai

„Android“ programos dažnai rašomos „Java“ kalba, o 90 proc. Naujų telefonų veikia tam tikra „Android“ versija. Daugelis žmonių net nebesinaudoja staliniais kompiuteriais, nes telefonai yra pakankamai geri viskam.

Žinoma, yra šiokia tokia painiava. Daugelis kūrėjų rašo „Node.js“ žiniatinklio programas, kurios nukreiptos į mobiliąsias naršykles tiek „iPhone“, tiek „Android“. Jei tai daroma gerai, našumas dažnai būna pakankamai geras.