Programavimas

„Java“ ir „Google's Go“: nepaprastas mūšis už kūrėjo minties pasidalijimą

„Go vs Java“ nėra gerai suderinta kova tarp lygių. Vienas yra siaubingas sunkiasvoris, kuris daugelį metų dominavo pramonėje. Kitas yra skurdus, lengvas naujokas, rodantis daug jaunystės ir pažadų, tačiau turintis tik kelis smūgius.

„Java“ ir „Go“ taip pat sprendžia skirtingas nišas. Vienas iš jų yra nukreiptas tiesiai į serverio žiniatinklio programas - sritį, kurioje kita kadaise buvo pagrindinis žaidėjas. Kitas išaugo gyvybė lentynose ir dabar yra populiarus prietaisų pasirinkimas.

Bet ne visi yra nutolę nuo Java žiniatinklio programų serverio pusėje, teritorija „Go“ puola, valgo „Java“ bazę. Ir jungiklis nėra baisiai didelis šuolis, nes abu yra panašūs daugeliu aspektų. Abu yra mylintys C, jei ne apačioje, bent jau tame paviršiuje, kuriame daugelis kūrėjų praleidžia savo gyvenimą kovodami su sintakse. Jie yra paprasti ir būtini, turintys pakankamai struktūrinių panašumų, kad nesunku konvertuoti kodą tarp jų. (Pavyzdžiui, „TardisGo“ projektas yra vienas įrankis, kuris „Go“ pavers Java, C # arba „JavaScript“.)

Apsvarstykite šį narvo mačą, kuriame du pusbroliai iš skirtingų programavimo takelių pusių varžosi dėl jūsų kitos programos kamino.

Ilga „Java“ istorija suteikia tinklo efektų, kurie padeda visiems

„Java“ gyvuoja nuo 1995 m., Kasmet pritraukdama daugiau minčių. Viskas, pradedant mažais įterptais procesoriais ir baigiant didžiulėmis serverio mikroschemomis, greitai ir efektyviai paleidžia „Java“ dėl savo judrios tiesioginiu laiku virtualios mašinos. „Android“ tapo „Java“, kaip populiariausios platformos mobiliajame pasaulyje, palaima. Štai kodėl „Java“ išlieka geriausiu šunimi tokiuose reitinguose kaip „Tiobe“ indeksas ir „PyPL“. Šis platus priėmimas reiškia, kad yra daug kodų pakartotiniam naudojimui, ir didžioji jo dalis yra atvirojo kodo, kad jūsų gyvenimas būtų paprastesnis. Stovėsite ant milžinų pečių, kai pradėsite susiūti bazilijoną laisvai prieinamo „Java“ kodo eilučių.

„Go“ trumpa istorija daro ją aktualią

Aišku, šaunu, kad iš interneto galima išsikapstyti nemokamą „Java“ kodą. Bet palaukite, tai parašyta „Java 1.3“, o jūsų viršininkas nori, kad naudojatumėte „Java 1.8“. Nesijaudinkite, tikriausiai galite vėl tai suveikti šiek tiek perrašydami. Perkelkime tą terminą dar kartą ... ir dar kartą. Senas kodas gali atrodyti kaip dovana, tačiau tai ne visada yra „slam dunk“, o kartais tai yra daugiau problemų, nei verta.

Kita vertus, „Go“ trumpa istorija reiškia, kad ji parašyta šiandienos žiniatinklio standartams. Nuo tų laikų, kai pasaulyje dominavo programėlės, neliko žiaurumo. Nėra seniai pamirštų idėjų, tokių kaip „Java Beans“ ar „J2EE“, kurie sėdėtų kaip viliojantys nemalonumai. Tai tiesiog nauja ir sukurta, kaip žmonės kuria internetą šiandien.

„Java“ leidžia paliesti kitas kalbas

JVM yra daugybės įdomių kalbų, kurios vykdymo metu priklauso nuo „Java“, pagrindas. Kiekvieną iš jų galima lengvai susieti su savo kodu, leidžiant jums parašyti vieną dalį „Kotlin“, kitą - „Scala“ ir galbūt visa tai suklijuoti su „Clojure“. Jei norite naudoti tokias kalbas kaip „Python“, „JavaScript“ ar „Ruby“, visi trys gali veikti tiesiai „Java“ žemėje naudodami emuliatorius, kurie dažnai yra pirmas pasirinkimas. „Java“ suteikia jums laisvę leisti kiekvienam subkomandui ir subprojektui pasirinkti tinkamą darbo kalbą, kol jie vis dar veikia tame pačiame JVM. Jums nereikia jo naudoti, tačiau galimybė visada yra.

„Go“ skatina harmoniją

Taip, jūs galite megzti itin protingą programą, kurioje derinami geriausi nauji ir madingi variantai, kiekvienai nuostabaus JVM magnum opuso daliai pasirinkdami geriausią kalbą. Jūs netgi galite įmaišyti tokių senų žmonių kaip „Rexx“ ir „Common Lisp“, kad pagerbtumėte jų vietą 70-ųjų laikų skaičiavimo istorijoje. Sėkmės ieškant to paties skonio ir talentų, kuris prižiūrės šį Babelio bokštą. Be maišymo keliose gerai parengtose bibliotekose, kuriant gerą kodą ne visada yra geras planas mėgdžioti Rube Goldbergą. Kartais tai tikslinga ir būtina, tačiau tai nereiškia, kad tai yra geras planas. Harmonija ir nuoseklumas palengvina visų gyvenimą. „Go“ pasaulis tai pristato.

„Java“ JVM yra plonas ir galingas

„Java“ klasės failai dažnai matuojami šimtais baitų. JAR failai, kurie juos susieja, paprastai yra tik keli megabaitai. Pats „Java“ kodas yra mažas, nes virtuali mašina turi tiek energijos atminties valdymui ir saugumui. Jei planuojate judėti po daugybę kodų, tikslinga palikti funkcijas bendrame vykdymo laiko įrankyje. Yra ir kitų centralizavimo privalumų. Jei saugumo problema atsiranda žemiausiuose „Java“ lygiuose, nereikia viso kompiliuoti ir iš naujo susieti viso kodo. Daugelis problemų išsprendžiamos tik atnaujinant JVM.

„Go“ sukuria visą paketą

JVM yra nuostabi, kol pastebėsite, kad įdiegėte neteisingą versiją. Jei norite paleisti JAR, supakuotą su „Java 1.8“, bet turite tik 1.6 versijos „JVM“, niekur nedingsite, kol jo nerasite. „Go“ kompiliatorius sukuria dvejetainius failus, kurie yra paruošti vykdyti. Taip, jie yra šiek tiek dideli, bet taip yra todėl, kad „Go“ prideda visą papildomą kodą į dvejetainį jums. Viskas yra vienoje lengvoje pakuotėje.

„Java“ daro gijas negyvas paprastas

Įvairių programos dalių vykdymas savarankiškai nėra lengva užduotis. „Java“ laimėjo ankstyvuosius gerbėjus, nes jos siūlų modelis buvo pakankamai paprastas, kad suprastų, o pakankamai galingas, kad būtų naudingas. JVM gerai sugeba susieti gijas su skirtingais mašinos šerdimis. Tai padaryti nėra lengva, bet taip yra dėl problemos, o ne „Java“, sudėtingumo. „Go Go“ vartotojai gali pamėgti savo gorutines programas ir kanalus, tačiau jie prideda dar vieną mazginį sudėtingumo sluoksnį ant jau niūrios netvarkos. Atsidursite klausdami, ar tai žalia, ar OS gija. Tada susimąstysite apie sinchronizavimo kanalų sudėtingumą. „Java“ yra paprastesnė.

„Go“ sumaniai palengvina siūlų apkrovą

„Java“ gijos ir sinchronizavimo pradmenys gali atlikti šį darbą, tačiau už didelę kainą. Temų kūrimas ir naikinimas yra toks daug darbo reikalaujantis ir reikalaujantis daug atminties, kad „Java“ programuotojai jas visada perdirba su grupėmis. „Java“ prarado trauką serveryje, nes kiekvienam svetainės įvykiui reikia savo gijos. „Go“ turi mažesnį svorį ir lankstesnius objektus, vadinamus gorutines, susietus su intelektualiomis sinchronizavimo eilėmis, vadinamomis kanalais. Nors atrodo, kad dauguma serverių siekia 1 000, o gal 10 000 „Java“ gijų, žmonės reguliariai praneša, kad ta pačia aparatine įranga veikia šimtai tūkstančių gorutinų.

„Go“ modelis yra rafinuotesnis ir modernesnis, nes yra jaunesnis. Ši sritis daug sužinojo apie sudėtingų daugiaprocesorinių algoritmų teikimą, ir jūs taip pat galite tuo pasinaudoti.

„Java“ įrankiai yra išbandyti ir teisingi

„Java“ branda reiškia, kad turite daugybę puikių įrankių variantų: „Eclipse“, „IntelliJ“ ir kt. Yra sudėtingų kūrimo įrankių, tokių kaip „Ant“ ir „Maven“, o pagrindinės saugyklos yra optimizuotos tvarkyti „Java“ kodą. Taip pat yra meta kodo analizė viskam, pradedant kodo taisyklių vykdymu ir baigiant varžybų sąlygomis. Jie gali neveikti su jūsų kodo versija, tačiau dažnai veikia. Štai kodėl „Java“ yra toks žonglierius.

„Go“ įrankiai yra modernūs ir nauji

„Go“ buvo sukurtas šiuolaikiniam daugialypiam pasauliui, o kodo įrankiai yra optimizuoti šiandienos iššūkiams. Derintuve ir vykdymo etape yra varžybų būklės detektorius, todėl daug paprasčiau spręsti bjaurias problemas. Šaltinio kodą gali tikrinti golintas ir statinis analizatorius, vadinamas „go vet“, kuris turi daugybę heuristikų, skirtų blogam ar net blogai parašytam Go kodui sugauti. Visa tai ir dar daugiau yra optimizuota, kad jūsų kodas greitai veiktų daugialypėje mašinoje.

„Java“ turi norimas konstrukcijas

Per daugelį metų „Java“ bendruomenė norėjo daugybės funkcijų; kurį laiką jie buvo suteikti. Pridėta uždarymų, generinių vaistų, lambdų ir dar daugiau. Jei yra nauja programavimo kalbų idėja, yra didelė tikimybė, kad kažkas ją išvarė į „Java“ pasaulį. Galbūt tai nėra idealu, tačiau variantų yra. Dėl nuolatinės „Java“ evoliucijos galite parašyti puikų kodą, kurį jūsų smegenys įsivaizduoja.

„Go“ vengia konstravimo painiavos

Laisvė naudoti keliasdešimt protingų kodavimo struktūrų skamba puikiai, kol visi komandos nariai nepradeda to daryti. Tada skaityti kažkieno kodą tampa sunkiau, nes jie naudojasi sumaniąja funkcija A, o tavo smegenys pripratę prie protingos funkcijos B. Kombinatorinė painiava jungiasi su kiekvienu kūrėju, kuris į savo rinkinį įmeta savo mėgstamą konstrukciją.

Kita vertus, „Go“ buvo sukurta taip, kad būtų paprasta. Jis buvo aiškiai pastatytas taip, kad geras programuotojas galėtų išmokti „Go“ per kelias valandas. Nėra dešimčių protingų idėjų, kurios užpildytų šimtus puslapių dokumentacijos. Tai gali būti ribojanti rašant kodą, tačiau atsipalaiduoja skaitant kodą iš kitų komandos narių. Visi naudoja tas pačias idiomas, nes visi naudoja tas pačias pagrindines savybes. Tai nėra vien tik komandos formavimo patirtis, kaip antai „Outward Bound“. Tai apie efektyvumą.

Java yra subrendusi

Amžius suteikia išminties, brandumo ir stabilumo - visos priežastys, kodėl reikia rinktis plačią, gerai sukonstruotą, daugiau nei dviejų dešimtmečių gylio kodo bazę. Vaikai šiandien tęsia mokymąsi „Java“ kelionės pradžioje, naudodamiesi informatika, ir ant jos yra sukurta dominuojanti platforma „Android“. Jei nėra rimtų priežasčių pasikeisti, turėtumėte laikytis geriausių.

„Go“ yra švarus skalūnas

Kartais geriausia palikti praeitį. Juk pažanga dažnai reiškia pradėti iš naujo. „Go“ siūlo galimybę dirbti su švariu, trapiu, šiuolaikišku įrankiu, kuris yra optimizuotas tam, ką darome šiandien. Tai leidžia mėgautis paprastumu ir laisve palikti praeitį.

Vien todėl, kad „Google“ pradėjo „Go“ suteikti savo nesibaigiančių serverių ūkių kodavimui paprastumo, tai nereiškia, kad jis negali jo peraugti. Kai kurie jau naudoja jį dronams, robotams ir kitiems įrenginiams valdyti. Ar išmanieji telefonai gali būti toli atsilikę?

Susiję straipsniai

  • Palieskite „Google's Go“ kalbos galią
  • Geriausi „Go“ kalbos IDE ir redaktoriai
  • Apžvalga: Palyginti didieji keturi „Java“ IDE
  • „Kampinis prieš reakciją“: nepaprastas mūšis už kūrėjo proto dalijimąsi
  • „Java“ prieš „Node.js“: epinė kova už kūrėjo minčių pasidalijimą
  • PHP ir „Node.js“: nepaprastas mūšis už kūrėjo proto dalijimąsi
  • „Python vs. R“: kova dėl duomenų mokslininkų minčių dalijimosi
  • 21 karšto programavimo tendencija ir 21 šalta
  • Programuotojai sau sako 9 melus
  • Karjera: profesionalūs dalykai, kuriuos reikia ir ko nereikia daryti kūrėjams
$config[zx-auto] not found$config[zx-overlay] not found