Ohjelmointi

Java vs. Google's Go: eeppinen taistelu kehittäjien mielenjaosta

Go vs. Java ei ole hyvin sovittu taistelu tasa-arvoisten välillä. Yksi on hirvittävä raskaspaino, joka on hallinnut teollisuutta vuosia. Toinen on turmeltunut, kevyt tulokas, joka osoittaa paljon nuoruutta ja lupauksia, mutta jolla on vain muutama lyönti.

Java ja Go käsittelevät myös erilaisia ​​markkinarakoja. Yksi on suunnattu suoraan palvelinpuolen verkkosovelluksiin, alueelle, jolla toinen oli aikoinaan merkittävä toimija. Toinen on kasvanut yli elämän telineissä ja on nyt suosittu valinta laitteille.

Mutta kaikki eivät ole siirtyneet Java-palvelimelta verkkosovellusten palvelinpuolella, alue Go hyökkää ja syö Java-tukikohdan. Eikä kytkin ole kovin suuri harppaus, koska nämä kaksi ovat samanlaisia ​​monessa suhteessa. Molemmat ovat rakastavia kunnianosoituksia C: lle, ellei alle, ainakin pinnalla, jolla monet kehittäjät viettävät elämänsä kamppailemalla syntaksin kanssa. Ne ovat sekä suoraviivaisia ​​että välttämättömiä, ja niissä on tarpeeksi rakenteellisia yhtäläisyyksiä, joten koodin muuntaminen näiden kahden välillä ei ole vaikeaa. (Esimerkiksi TardisGo-projekti on yksi työkalu, joka muuttaa Go: n Java-, C #- tai JavaScript-muotoon.)

Harkitse tätä häkkiottelua, joka asettaa kaksi serkkua ohjelmointiradan eri puolilta kilpailemaan seuraavasta sovelluspinosta.

Javan pitkä historia tuo verkkotehosteita, jotka auttavat kaikkia

Java on ollut käytössä vuodesta 1995, houkuttelemalla enemmän mielen osuutta joka vuosi. Kaikkea pienistä upotetuista prosessoreista massiivisiin palvelinsiruihin ajaa Java nopeasti ja tehokkaasti ketterän juuri oikeaan aikaan-virtuaalikoneensa ansiosta. Androidista on tullut hyödyllinen Java, joka on ylivoimaisesti suosituin mobiilimaailman foorumi. Siksi Java on edelleen huippukoira luokituksissa, kuten Tiobe-indeksi ja PyPL. Tämä laaja käyttöönotto tarkoittaa, että koodia on paljon uudelleenkäyttöä varten, ja suuri osa siitä on avointa lähdekoodia yksinkertaistamaan elämääsi. Seisot jättiläisten harteilla, kun alat ommella yhteen vapaana olevan Java-koodin rivejä.

Gon lyhyt historia tekee siitä välittömästi merkityksellisen

Toki, on hienoa piilottaa ilmainen Java-koodi verkosta. Mutta odota, se on kirjoitettu Java 1.3: lle, ja pomosi haluaa sinun käyttävän Java 1.8: ta. Älä huoli, saatat saada sen toimimaan uudelleen hieman kirjoittamalla. Siirretään määräaikaa uudelleen ... ja uudelleen. Vanha koodi voi tuntua lahjalta, mutta se ei aina ole slam dunk, ja joskus se on enemmän vaivaa kuin sen arvoinen.

Gon lyhyt historia puolestaan ​​tarkoittaa, että se on kirjoitettu nykypäivän verkkostandardeja varten. Niistä päivistä, jolloin appletit hallitsivat maailmaa, ei ole enää jäljellä. Ei ole kauan unohdettuja ideoita, kuten Java Beans tai J2EE, jotka istuvat houkuttelevina häiriöinä. Se on yksinkertaisesti uusi ja suunniteltu, miten ihmiset rakentavat verkkoa tänään.

Java antaa sinun napauttaa muita kieliä

JVM on perusta kymmenille mielenkiintoisille kielille, jotka riippuvat Java-ohjelmasta ajon aikana. Jokainen voidaan linkittää helposti koodiin, jolloin voit kirjoittaa yhden osan Kotliniin, toisen Scalaan ja ehkä liittää sen yhteen Clojuren kanssa. Jos haluat käyttää kieliä, kuten Python, JavaScript tai Ruby, kaikki kolme voivat toimia suoraan Java-maassa käyttämällä emulaattoreita, jotka ovat usein ensimmäinen valinta. Java antaa sinulle vapauden antaa jokaiselle alaryhmälle ja aliprojektille valita oikea kieli työhön samalla, kun ne ovat edelleen käynnissä samassa JVM: ssä. Sinun ei tarvitse käyttää sitä, mutta mahdollisuus on aina olemassa.

Go edistää harmoniaa

Kyllä, voit neuloa yhteen älykkään sovelluksen, joka sekoittuu parhaaseen uuteen ja trendikkääseen, valitsemalla ehdottomasti parhaan kielen JVM: n upean magnum-oopuksen jokaiselle osalle. Voit jopa sekoittaa vanhoja kuten Rexx ja Common Lisp kunnioittamaan heidän paikkansa 70-luvun aikakaudella. Onnea löytää joku, jolla on sama maku ja kyky, joka ylläpitää tätä Babelin tornia. Sen lisäksi, että sekoitetaan muutamassa hyvin muotoillussa kirjastossa, ei ole aina hyvä suunnitelma jäljitellä Rube Goldbergia suunnitellessasi hyvää koodia. Joskus se on tarkoituksenmukaista ja välttämätöntä, mutta se ei tarkoita, että se on hyvä suunnitelma. Harmonia ja johdonmukaisuus helpottavat kaikkien elämää. Go-maailma tarjoaa sen.

Javan JVM on laiha ja voimakas

Java-luokan tiedostot mitataan usein satoina tavuina. Ne yhdistävät JAR-tiedostot ovat yleensä vain muutama megatavu. Java-koodi itsessään on pieni, koska virtuaalikoneella on niin paljon virtaa muistin hallintaan ja turvallisuuteen. Jos aiot liikkua paljon koodia, on järkevää jättää toiminnot yhteiselle ajonaikaiselle työkalulle. Keskittämisellä on muita etuja. Jos tietoturvaongelma ilmestyy Javan alimmalle tasolle, koko koodia ei tarvitse kääntää uudelleen ja linkittää uudelleen. Monet ongelmat ratkaistaan ​​päivittämällä yksin JVM.

Go luo koko paketin

JVM on upea, kunnes huomaat, että sinulla on väärä versio asennettuna. Jos haluat suorittaa Java 1.8: lla pakatun JAR: n, mutta sinulla on vain JVM: n 1.6-versio, et mene mihinkään ennen kuin löydät sen. Go-kääntäjä tuottaa suoritettavaksi valmiita binäärejä. Kyllä, ne ovat vähän isoja, mutta se johtuu siitä, että Go lisää kaikki ylimääräiset koodit binaariin sinulle. Se on kaikki yhdessä paketissa.

Java tekee langoista kuollut yksinkertaisia

Ohjelman eri osien saaminen toimimaan itsenäisesti ei ole helppoa. Java voitti varhaiset fanit, koska sen ketjumalli oli riittävän yksinkertainen ymmärtää ja riittävän tehokas ollakseen hyödyllinen. JVM tekee hyvää työtä kartoittamalla ketjut koneen eri ytimiin. Sitä ei ole helppo tehdä, mutta se johtuu ongelman monimutkaisuudesta, ei Java-ongelmasta. Go-käyttäjät saattavat rakastaa gorutiinejaan ja kanaviaan, mutta he lisäävät toisen solmun monimutkaisuuden jo ennestään tunkkaiseen sotkuun. Löydät itsesi kysyvän, onko kyseessä vihreä vai käyttöjärjestelmän ketju. Sitten mietit synkronointikanavien monimutkaisuutta. Java on suoraviivaisempi.

Go keventää langankuormaa älykkäästi

Java-ketjut ja synkronointiprimitiivit saattavat tehdä työn, mutta kalliilla kustannuksilla. Säikeiden luominen ja tuhoaminen on niin työlästä ja paljon muistia kuluttavaa, että Java-ohjelmoijat kierrättävät ne aina säiealueilla. Java on menettänyt pidon palvelimessa, koska jokainen verkkosivuston osuma tarvitsee oman säikeensä. Go: lla on kevyempi ja joustavampi objekti, jota kutsutaan gorutineiksi, jotka on yhdistetty älykkäisiin synkronointijonoihin, joita kutsutaan kanaviksi. Vaikka useimmat palvelimet näyttävät ylittävän 1000 tai ehkä 10000 Java-säiettä, ihmiset ilmoittavat säännöllisesti suorittavansa satoja tuhansia gorutineja samalla laitteistolla.

Go-malli on hienostuneempi ja moderni, koska se on nuorempi. Kenttä on oppinut paljon hienostuneiden moniprosessorialgoritmien toimittamisesta, ja voit yhtä hyvin hyödyntää sitä.

Java-työkalut ovat kokeiltuja ja totta

Javan kypsyys tarkoittaa, että sinulla on paljon upeita vaihtoehtoja työkaluille: Eclipse, IntelliJ ja paljon muuta. On kehittyneitä rakennustyökaluja, kuten Ant ja Maven, ja suurimmat arkistot on optimoitu käsittelemään Java-koodia. Tarjolla on myös metakoodianalytiikkaa kaikesta koodisääntöjen noudattamisesta kilpailuehtojen etsimiseen. Ne eivät välttämättä toimi koodiversiosi kanssa, mutta usein. Siksi Java on niin juggernaut.

Go-työkalut ovat moderneja ja uusia

Go on rakennettu modernia monisäikeistä maailmaa varten, ja koodityökalut on optimoitu vastaamaan tämän päivän haasteita. Virheenkorjaimeen ja ajonaikaan on sisäänrakennettu kilpailutunnistin, joten ikävien ongelmien käsittely on paljon yksinkertaisempaa. Lähdekoodia voidaan tarkastaa golintilla ja staattisella analysaattorilla nimeltä “go vet”, jolla on useita heuristikoita huonon tai jopa huonosti kirjoitetun Go-koodin saamiseksi. Kaikki nämä ja muut on optimoitu pitämään koodisi käynnissä nopeasti moniydinkoneessa.

Java sisältää haluamasi rakenteet

Vuosien varrella Java-yhteisö on toivonut monia ominaisuuksia; joskus ne on myönnetty. Sulkimia, yleisiä lääkkeitä, lambdoja ja muuta on lisätty. Jos ohjelmointikielissä on uusi idea, on hyvät mahdollisuudet, että joku on kengänsuojellut sen Java-maailmaan. Se ei ehkä ole ihanteellinen, mutta vaihtoehdot ovat olemassa. Voit kirjoittaa loistavan koodin, jonka aivosi kuvittelevat Javan jatkuvan kehityksen ansiosta.

Go välttää sekaannusta

Vapaus käyttää kymmeniä älykkäitä koodausrakenteita kuulostaa hyvältä, kunnes kaikki joukkueen jäsenet alkavat tehdä sitä. Silloin jonkun toisen koodin lukeminen vaikeutuu, koska he käyttävät älykäs ominaisuus A, kun aivosi on tottunut älykkääseen ominaisuuteen B. Yhdistelmähämmennys sekoittuu jokaisen kehittäjän kanssa, joka heittää suosikkikonstruktinsa miksaukseen.

Toisaalta Go on suunniteltu yksinkertaiseksi. Se on nimenomaisesti rakennettu niin, että hyvä ohjelmoija voi oppia Go muutamassa tunnissa. Ei ole kymmeniä älykkäitä ideoita, jotka täyttävät satoja sivuja dokumentaatiota. Se voi olla rajoittavaa koodia kirjoitettaessa, mutta se on rentouttava, kun luet koodia muilta tiimissä. Kaikki käyttävät samoja idioomeja, koska kaikki käyttävät samoja perusominaisuuksia. Se ei ole vain tiiminrakennuskokemus, kuten Outward Bound. Kyse on tehokkuudesta.

Java on kypsä

Ikä tuo viisautta, kypsyyttä ja vakautta - kaikki syyt yli kahden vuosikymmenen syvälle laajaan, hyvin suunniteltuun koodikantaan. Lapset jatkavat Java-oppimista matkan alussa tietojenkäsittelytieteen kanssa, ja hallitsevin alusta, Android, on rakennettu siihen. Ellei ole hyvää syytä muutokseen, kannattaa pitää kiinni parhaista.

Go on puhdas pöytä

Joskus on parasta jättää menneisyys taakse. Loppujen lopuksi edistyminen tarkoittaa usein aloittamista uudestaan. Go tarjoaa sinulle mahdollisuuden työskennellä puhtaan, raikkaan ja modernin työkalun kanssa, joka on optimoitu tänään tekemäämme toimintaan. Sen avulla voit nauttia menneisyyden jättämisen yksinkertaisuudesta ja vapaudesta.

Ja yksinkertaisesti siksi, että Google aloitti Go-ohjelmiston tuomaan yksinkertaisuutta loputtomien palvelintilojensa koodaukseen, se ei tarkoita, että se ei voi kasvaa siitä. Jotkut käyttävät sitä jo droneiden, robottien ja muiden laitteiden käyttämiseen. Voivatko älypuhelimet olla kaukana?

Aiheeseen liittyvät artikkelit

  • Napauta Googlen Go-kielen tehoa
  • Parhaat Go-kielen IDE: t ja toimittajat
  • Arvostelu: Neljä suurta Java IDE: tä verrattiin
  • Kulma vs. reaktio: eeppinen taistelu kehittäjien mielen jakamisesta
  • Java vs. Node.js: eeppinen taistelu kehittäjien mielenjaosta
  • PHP vs. Node.js: eeppinen taistelu kehittäjien mielenjaosta
  • Python vs. R: Taistelu datatieteilijän mielenjaosta
  • 21 kuumaa ohjelmointitrendiä ja 21 menossa kylmäksi
  • 9 valhetta ohjelmoijat kertovat itselleen
  • Urahakkeroinnit: Ammattilaiset tekevät ja eivät kehittäjille
$config[zx-auto] not found$config[zx-overlay] not found