Programiranje

Java proti Googlovemu Go: epska bitka za delež misli razvijalcev

Go vs. Java ni dobro usklajena bitka med enakimi. Eden je pošastni težkokategornik, ki že leta prevladuje v industriji. Drugi je skop, lahek novinec, ki kaže veliko mladosti in obljube, a ima le nekaj udarcev.

Java in Go se lotevata tudi različnih niš. Ena je usmerjena naravnost v strežniške spletne aplikacije, področje, kjer je bil drugi nekoč glavni igralec. Drugi je prerasel življenje v regalih in je zdaj priljubljena izbira za naprave.

Niso pa se vsi oddaljili od Jave na strežniški strani spletnih aplikacij, teritorij Go napada, razjeda bazo Jave. In stikalo ni strašno velik preskok, saj sta si v mnogih pogledih podobna. Oba ljubita poklon C, če ne celo spodaj, vsaj na površini, kjer mnogi razvijalci preživijo svoje življenje, spopadajoč se s sintakso. Oba sta neposredna in nujna z dovolj strukturnimi podobnostmi, da med njima ni težko pretvoriti kode. (Projekt TardisGo je na primer eno orodje, ki bo spremenilo Go v Java, C # ali JavaScript.)

Razmislite o tem, da se kletka ujema z dvema bratrancema z različnih strani programov, ki tekmujejo za vaš naslednji kup aplikacij.

Dolga zgodovina Jave prinaša omrežne učinke, ki so v pomoč vsem

Java obstaja že od leta 1995 in vsako leto pritegne več misli. Vse, od drobnih vdelanih procesorjev do ogromnih strežniških čipov, Java poganja hitro in učinkovito, zahvaljujoč okretnemu pravočasnemu navideznemu računalniku. Android je postal blaginja za Javo, ki je doslej najbolj priljubljena platforma v mobilnem svetu. Zato Java ostaja najboljši pes na lestvicah, kot sta indeks Tiobe in PyPL. Ta široka uporaba pomeni, da je na voljo veliko kode za ponovno uporabo in je večina odprtokodna za poenostavitev vašega življenja. Ko boste začeli sestavljati bazilijonske vrstice prosto dostopne kode Java, boste stali na ramenih velikanov.

Kratka zgodovina podjetja Go je takoj pomembna

Seveda je v redu, če na spletu snafte brezplačno kodo Java. Toda počakajte, napisano je za Javo 1.3 in šef želi, da uporabljate Javo 1.8. Ne skrbite, verjetno ga boste lahko spet začeli delovati z malo prepisovanja. Prestavimo ta rok še enkrat ... in še enkrat. Stara koda se morda zdi darilo, vendar ni vedno slam dunk in včasih je več težav, kot je vredna.

Kratka zgodovina podjetja Go pa pomeni, da je napisana za današnje spletne standarde. Od časov, ko so nameravali prevladovati apleti, ni ostalo nobene razpoke. Nobenih pozabljenih idej, kot sta Java Beans ali J2EE, ne bi sedeli kot mamljive nadloge. To je preprosto novo in zasnovano za to, kako danes ljudje gradijo splet.

Java vam omogoča, da tapnete druge jezike

JVM je osnova za desetine zanimivih jezikov, ki so med izvajanjem odvisni od Jave. Vsako lahko enostavno povežete s svojo kodo, tako da lahko en del napišete v Kotlinu, drugega v Scali in morda vse skupaj zlepite s Clojurejem. Če želite uporabljati jezike, kot so Python, JavaScript ali Ruby, se lahko vsi trije izvajajo neposredno v Java Java z uporabo emulatorjev, ki so pogosto prva izbira. Java vam omogoča svobodo, da lahko vsak podvrst in podprojekt izbere pravi jezik za to delo, medtem ko še vedno deluje v istem JVM. Ni vam treba, da ga uporabite, vendar je priložnost vedno prisotna.

Go spodbuja harmonijo

Da, lahko sestavite aplikacijo superclever, ki združuje najboljše novo in modno, pri čemer izberete popolnoma najboljši jezik za vsak del vašega čudovitega magnumskega opusa na JVM. Lahko celo mešate stare, kot sta Rexx in Common Lisp, da počastite svoje mesto v računalniški zgodovini sedemdesetih let. Vso srečo pri iskanju nekoga z enakim okusom in talentom, ki bo vzdrževal ta babilonski stolp. Poleg mešanja v nekaj dobro izdelanih knjižnicah ni vedno dober načrt posnemanja Rube Goldberga pri oblikovanju dobre kode. Včasih je to smotrno in potrebno, vendar to ne pomeni, da je dober načrt. Harmonija in doslednost olajšata življenje vsem. Svet Go to prinaša.

Javin JVM je vitk in zmogljiv

Datoteke razreda Java se pogosto merijo v stotinah bajtov. Datoteke JAR, ki jih povezujejo, so običajno le nekaj megabajtov. Koda Java je majhna, ker ima navidezni stroj toliko moči za upravljanje in varnost pomnilnika. Če se nameravate premikati po veliko kode, je smiselno, da funkcionalnost pustite v običajnem orodju za izvajanje. Centralizacija ima še druge prednosti. Če se na najnižjih ravneh Jave pojavi varnostna težava, ni treba znova sestaviti in znova povezati vse kode. Številne težave je mogoče rešiti samo z nadgradnjo JVM.

Go ustvari celoten paket

JVM je čudovit, dokler ne ugotovite, da imate nameščeno napačno različico. Če želite zagnati JAR, opremljen z Javo 1.8, vendar imate samo različico JVM 1.6, nikamor ne greste, dokler ga ne najdete. Prevajalnik Go izdela binarne datoteke, ki so pripravljene za zagon. Da, nekoliko so veliki, toda to je zato, ker Go v binarno datoteko doda vso dodatno kodo. Vse je v enem enostavnem paketu.

Java naredi niti preproste

Pridobitev različnih delov programa za samostojno izvajanje ni lahka naloga. Java je zgodaj osvojila oboževalce, ker je bil njen model niti dovolj preprost za razumevanje, hkrati pa dovolj močan, da bi bil uporaben. JVM dobro opravi preslikavo niti v različna jedra na stroju. To ni enostavno narediti, vendar je to zaradi zapletenosti težave, ne pa Java. Uporabniki Go so morda všeč njihovim goroutinam in kanalom, vendar v že tako grdo zmedo dodajo še eno zapleteno plast zapletenosti. Zanimalo vas bo, ali gre za zeleno nit ali nit OS. Potem se boste vprašali o zapletenosti sinhronizacijskih kanalov. Java je bolj preprosta.

Go inteligentno olajša obremenitev niti

Javine niti in sinhronizacijski primitivi lahko opravijo svoje delo, vendar z velikimi stroški. Ustvarjanje in uničevanje niti je tako mučno in dolgotrajno, da jih programerji Java vedno reciklirajo s področji niti. Java je izgubila oprijem na strežniku, ker vsak zadetek na spletnem mestu potrebuje svojo nit. Go ima lažjo težo in bolj prilagodljive predmete, imenovane goroutine, ki so povezani z inteligentnimi čakalnimi vrstami za sinhronizacijo, imenovanimi kanali. Medtem ko se zdi, da ima večina strežnikov 1000 ali morda 10.000 niti Java, ljudje redno poročajo, da na isti strojni opremi izvajajo stotisoče goroutin.

Gojev model je bolj dovršen in sodoben, ker je mlajši. Področje se je že veliko naučilo o zagotavljanju izpopolnjenih večprocesorskih algoritmov, kar lahko tudi izkoristite.

Orodja Java so preizkušena in resnična

Zrelost Jave pomeni, da imate na voljo veliko odličnih možnosti za orodja: Eclipse, IntelliJ in še več. Obstajajo izpopolnjena orodja za gradnjo, kot sta Ant in Maven, glavna skladišča pa so optimizirana za obdelavo kode Java. Obstaja tudi analitika meta kode za vse, od uveljavljanja pravil kode do iskanja dirkalnih pogojev. Morda ne bodo sodelovali z vašo različico kode, vendar pogosto. To je razlog, zakaj je Java takšna igra.

Orodja Go so moderna in nova

Go je bil zasnovan za sodoben večnitni svet, kodna orodja pa so optimizirana za današnje izzive. V razhroščevalec in čas izvajanja je vgrajen detektor stanja dirke, zato je veliko preprostejše reševanje neprijetnih težav. Izvorno kodo je mogoče pregledati s pomočjo golinta in statičnega analizatorja, imenovanega "go vet", ki ima številne hevristike za lovljenje slabe ali celo slabo napisane kode Go. Vse to in še več je optimizirano za hitro delovanje kode v večjedrnem računalniku.

Java ima konstrukcije, ki jih želite

V preteklih letih si je skupnost Java zaželela številne funkcije; včasih so bili odobreni. Dodani so zapori, generiki, lambda in še več. Če je v programskih jezikih nova ideja, obstaja velika verjetnost, da jo je nekdo podtaknil v svet Jave. Mogoče ni idealno, a možnosti obstajajo. Zahvaljujoč nenehnemu razvoju Jave lahko napišete sijajno kodo, ki si jo vaši možgani predstavljajo.

Go izogibajte se zmedi pri konstruiranju

Svoboda uporabe desetine pametnih kodirnih struktur se sliši čudovito, dokler tega ne začnejo vsi v ekipi. Potem je branje kode nekoga drugega težje, ker uporabljajo pametno funkcijo A, medtem ko se vaši možgani prilagodijo na pametno funkcijo B. Kombinacijska zmeda se sestavi z vsakim razvijalcem, ki v svoj mešanico vstavi svoj najljubši konstrukt.

Po drugi strani je bil Go zasnovan tako, da je preprost. Izrecno je bil zgrajen tako, da se je dober programer lahko naučil Go v nekaj urah. Pametnih idej, ki zapolnijo stotine strani dokumentacije, ni na ducate. To je morda omejujoče pri pisanju kode, sproščujoče pa je pri branju kode od drugih v ekipi. Vsi uporabljajo iste idiome, ker vsi uporabljajo enake osnovne funkcije. To ni zgolj izkušnja team buildinga, kot je Outward Bound. Gre za učinkovitost.

Java je zrela

Starost prinaša modrost, zrelost in stabilnost - vsi razlogi za izbiro široke, dobro zasnovane kode, ki je globoka več kot dve desetletji. Otroci se danes še naprej učijo Jave na začetku poti z računalništvom in na njej je zgrajena najbolj prevladujoča platforma Android. Če ne obstaja dober razlog za spremembo, se držite najboljših.

Go je čista skrivnost

Včasih je najbolje pustiti preteklost za seboj. Navsezadnje napredek pogosto pomeni začeti sveže. Go vam ponuja priložnost za delo s čistim, ostrim, sodobnim orodjem, ki je optimizirano za to, kar počnemo danes. Omogoča vam, da uživate v preprostosti in svobodi zapuščanja preteklosti.

In preprosto zato, ker je Google začel Go, da bi kodiranju njihovih neskončnih strežniških kmetij poenostavil, še ne pomeni, da ga ne more prerasti. Nekateri ga že uporabljajo za upravljanje brezpilotnih letal, robotov in drugih naprav. Ali lahko pametni telefoni zaostajajo?

Povezani članki

  • Dotaknite se moči Googlovega jezika Go
  • Najboljši IDE in urejevalniki jezika Go
  • Pregled: Primerjali so se veliki štirje Java IDE
  • Angular vs. React: epska bitka za delež misli razvijalcev
  • Java proti Node.js: epska bitka za delež misli razvijalcev
  • PHP proti Node.js: epska bitka za delež misli razvijalcev
  • Python proti R: Bitka za delež uma podatkov
  • 21 vročih programskih trendov in 21 hladnih
  • 9 laži si govorijo programerji
  • Karierni vlomi: profesionalni naredi in ne za razvijalce
$config[zx-auto] not found$config[zx-overlay] not found