Programovanie

Java vs. Google Go: epická bitka o zdieľanie mysle vývojárov

Go vs. Java nie je vyrovnaný boj medzi rovnými. Jedným z nich je obrovská ťažká váha, ktorá v priemysle dominuje už roky. Druhý je mizerný, ľahký nováčik, ktorý ukazuje dostatok mladosti a sľubov, ale má iba niekoľko úderov.

Java and Go tiež zvládajú rôzne medzery. Jeden je zameraný priamo na webové aplikácie na strane servera, oblasť, kde bol ten druhý kedysi významným hráčom. Druhý prerástol život v regáloch a je teraz obľúbenou voľbou pre zariadenia.

Ale nie každý sa vzdialil od Javy na strane servera webových aplikácií, teritorium Go útočí a rozožiera základňu Javy. A prepnutie nie je nijako zvlášť veľkým skokom, pretože tieto dva prvky sú si v mnohých aspektoch podobné. Obaja milujú poctu C, ak nie pod ním, prinajmenšom na povrchu, kde mnoho vývojárov trávi život zápasením so syntaxou. Sú priame a nevyhnutné s dostatočnou štrukturálnou podobnosťou, takže nie je ťažké prevádzať kód medzi nimi. (Napríklad projekt TardisGo je jeden nástroj, ktorý premení Go na Java, C # alebo JavaScript.)

Zvážte to ako klietkovú zhodu, ktorá stavia dvoch bratrancov z rôznych strán programovacích stôp a súťaží o ďalší zásobník aplikácií.

Dlhá história Java prináša sieťové efekty, ktoré pomáhajú všetkým

Java existuje od roku 1995 a každý rok priťahuje viac zdieľania mysle. Všetko od malých zabudovaných procesorov až po obrovské serverové čipy spúšťa Javu rýchlo a efektívne vďaka agilnému virtuálnemu stroju just-in-time. Android sa stal prínosom pre Javu, ktorá je zďaleka najpopulárnejšou platformou v mobilnom svete. Preto zostáva Java špičkou v rebríčkoch ako index Tiobe a PyPL. Toto široké prijatie znamená, že je tu veľa kódu na opätovné použitie a väčšina z neho je otvorený zdroj, ktorý vám zjednoduší život. Stanete sa na pleciach obrov, keď začnete spájať baziliónové riadky voľne dostupného kódu Java.

Vďaka krátkej histórii je Go okamžite relevantný

Iste, je super odtrhnúť bezplatný kód Java z webu. Ale počkajte, je to určené pre Java 1.3 a váš šéf chce, aby ste používali Java 1.8. Nerobte si starosti, pravdepodobne to znova zafunguje tak, že trochu prepisujete. Posuňme tento termín znova ... a znova. Starý kód sa môže javiť ako darček, ale nie vždy je to slam dunk a niekedy je to viac problémov, ako stojí za to.

Krátka história spoločnosti Go na druhej strane znamená, že je napísaná pre dnešné webové štandardy. Z čias, keď mali applety dominovať svetu, už neostalo nič. Neexistujú dávno zabudnuté nápady ako Java Beans alebo J2EE, ktoré sedia ako lákavé nepríjemnosti. Je to jednoducho nové a navrhnuté pre to, ako ľudia dnes vytvárajú web.

Java vám umožňuje klepnúť na iné jazyky

JVM je základom pre desiatky zaujímavých jazykov, ktoré sú za behu závislé od Javy. Každá z nich môže byť ľahko prepojená s vaším kódom, čo vám umožní napísať jednu časť do Kotlina, ďalšiu do Scaly a možno to všetko zlepiť dohromady s Clojure. Ak chcete používať jazyky ako Python, JavaScript alebo Ruby, všetky tri môžu bežať priamo v prostredí Java pomocou emulátorov, ktoré sú často prvou voľbou. Java vám dáva slobodu nechať každý čiastkový tím a podprojekt zvoliť správny jazyk pre danú prácu, zatiaľ čo stále beží v rovnakom JVM. Nemusíte to používať, ale príležitosť tu vždy je.

Go podporuje harmóniu

Áno, môžete spojiť aplikáciu superclever, ktorá kombinuje to najlepšie z nového a trendového a vyberá si absolútne najlepší jazyk pre každú časť vášho úžasného opusu na JVM. Môžete dokonca kombinovať oldies ako Rexx a Common Lisp, aby ste si uctili svoje miesto v počítačovej histórii zo 70. rokov. Veľa šťastia pri hľadaní niekoho s rovnakým vkusom a talentom, ktorý bude udržiavať túto babylonskú vežu. Okrem zmiešania niekoľkých dobre prepracovaných knižníc nie je vždy dobrý plán napodobniť Rube Goldberga pri navrhovaní dobrého kódu. Niekedy je to účelné a potrebné, ale to neznamená, že je to dobrý plán. Harmónia a dôslednosť uľahčujú život všetkým. Svet Go to prináša.

JVM Java je štíhly a výkonný

Súbory triedy Java sa často merajú v stovkách bajtov. Súbory JAR, ktoré ich navzájom spájajú, majú zvyčajne iba niekoľko megabajtov. Samotný kód Java je malý, pretože virtuálny stroj obsahuje toľko energie pre správu a bezpečnosť pamäte. Ak sa plánujete pohybovať v množstve kódu, je rozumné ponechať funkčnosť v bežnom runtime nástroji. Centralizácia má ďalšie výhody. Ak sa bezpečnostný problém vyskytne na najnižších úrovniach Java, nie je potrebné znova kompilovať a znova prepojiť celý váš kód. Mnoho problémov sa rieši samotnou aktualizáciou JVM.

Go vytvorí kompletný balík

JVM je úžasné, kým nezistíte, že máte nainštalovanú nesprávnu verziu. Ak chcete spustiť súbor JAR nabitý programom Java 1.8, ale máte iba verziu JVM verzie 1.6, nikam nepôjdete, kým ho nenájdete. Kompilátor Go produkuje binárne súbory, ktoré sú pripravené na spustenie. Áno, sú trochu veľké, ale je to preto, že Go pre vás do binárneho súboru pridá všetok extra kód. Je to všetko v jednom ľahkom balení.

Vďaka Java sú vlákna mŕtve jednoduché

Nezávislá prevádzka rôznych častí programu nie je ľahká úloha. Java si získala prvých priaznivcov, pretože jej model vlákien bol dostatočne jednoduchý na pochopenie a dostatočne výkonný na to, aby bol užitočný. JVM robí dobrú prácu s mapovaním vlákien na rôzne jadrá na stroji. Nie je to ľahké urobiť, ale je to kvôli zložitosti problému, nie kvôli Jave. Používatelia go môžu milovať svoje goroutiny a kanály, ale pridávajú ďalšiu uzlovitú vrstvu zložitosti do už tak drsného neporiadku. Uvidíte, že sa pýtate, či ide o zelené vlákno alebo vlákno OS. Potom by vás zaujímalo, aké zložité sú synchronizačné kanály. Java je priamočiarejšia.

Go inteligentne zosvetľuje zaťaženie nití

Vlákna Java a synchronizačné primitívy môžu robiť svoju prácu, ale za veľkú cenu. Vytváranie a ničenie vlákien je také namáhavé a náročné na pamäť, že programátori v jazyku Java ich vždy recyklujú pomocou oblastí vlákien. Java stratila na serveri trakciu, pretože každý prístup na web vyžaduje svoje vlastné vlákno. Go má ľahšiu váhu a pružnejšie objekty nazývané goroutines, ktoré sú prepojené s inteligentnými synchronizačnými frontami nazývanými kanály. Aj keď sa zdá, že väčšina serverov dosahuje najvyššiu úroveň 1 000 alebo možno 10 000 vlákien Java, ľudia pravidelne hlásia spustenie státisícov goroutinov na rovnakom hardvéri.

Goov model je sofistikovanejší a modernejší, pretože je mladší. Táto oblasť sa naučila veľa o poskytovaní sofistikovaných multiprocesorových algoritmov a môžete ich tiež využiť.

Nástroje Java sú vyskúšané a pravdivé

Vďaka vyspelosti Java máte k dispozícii množstvo skvelých možností pre nástroje: Eclipse, IntelliJ a ďalšie. Existujú sofistikované nástroje na vytváranie, ako sú Ant a Maven, a hlavné úložiská sú optimalizované na prácu s kódom Java. K dispozícii je tiež analýza metakódu pre všetko, od presadzovania pravidiel kódu po hľadanie podmienok závodu. Možno nebudú pracovať s vašou verziou kódu, ale často fungujú. Preto je Java taký juggernaut.

Nástroje Go sú moderné a nové

Go bol navrhnutý pre moderný viacvláknový svet a kódové nástroje sú optimalizované pre súčasné výzvy. V debuggeri a behu je zabudovaný detektor závodných podmienok, takže riešenie nepríjemných problémov je oveľa jednoduchšie. Zdrojový kód môže byť auditovaný programom golint a statickým analyzátorom s názvom „go vet“, ktorý má množstvo heuristík na zachytenie chybného alebo dokonca zle napísaného kódu go. Všetky tieto a ďalšie sú optimalizované na udržanie rýchleho chodu vášho kódu vo viacjadrovom stroji.

Java má konštrukty, ktoré chcete

V priebehu rokov si komunita Java želala veľa funkcií; niekedy im bolo udelené. Pribudli uzávery, generiká, lambdy a ďalšie. Ak existuje nová myšlienka v programovacích jazykoch, existuje veľká šanca, že ju niekto preniesol do sveta Javy. Možno to nebude ideálne, ale možnosti tu sú. Vďaka pokračujúcej evolúcii Java môžete napísať vynikajúci kód, ktorý si váš mozog predstavuje.

Go sa vyhýba zmätkom v konštrukcii

Sloboda používať desiatky chytrých kódovacích štruktúr znie skvele, kým to nezačnú robiť všetci v tíme. Čítanie kódu niekoho iného sa potom stáva ťažším, pretože používa inteligentnú funkciu A, zatiaľ čo váš mozog je aklimatizovaný na inteligentnú funkciu B. Kombinatorické zmätky sa spájajú s každým vývojárom, ktorý do mixu vloží svoj obľúbený konštrukt.

Go bol na druhej strane navrhnutý tak, aby bol jednoduchý. Bola vyslovene postavená tak, aby sa dobrý programátor mohol naučiť Go za pár hodín. Neexistujú desiatky šikovných nápadov, ktoré by zaplnili stovky stránok dokumentácie. To môže byť pri písaní kódu limitujúce, ale pri čítaní kódu od ostatných v tíme je to príjemné. Každý používa rovnaké idiómy, pretože každý používa rovnaké základné funkcie. Nie je to iba skúsenosť s budovaním tímu, ako napríklad Outward Bound. Ide o efektivitu.

Java je zrelá

Vek prináša múdrosť, vyspelosť a stabilitu - všetky dôvody pre výber širokej a dobre prepracovanej základne kódov, ktorá je hlboká viac ako dve desaťročia. Deti sa dnes učia Javu aj na začiatku svojej cesty počítačovou vedou a je na nej postavená najdominantnejšia platforma Android. Pokiaľ nie je dobrý dôvod na zmenu, mali by ste sa držať toho najlepšieho.

Go je čistý štít

Niekedy je najlepšie nechať minulosť za sebou. Napokon, pokrok často znamená začať odznova. Go vám ponúka príležitosť pracovať s čistým, ostrým a moderným nástrojom optimalizovaným pre to, čo robíme dnes. Umožňuje vám vychutnať si jednoduchosť a slobodu zanechania minulosti za sebou.

A jednoducho preto, že Google začal s Go, aby priniesol určitú jednoduchosť do kódovania svojich nekonečných serverových fariem, neznamená to, že to nemôže prerásť. Niektorí ho už používajú na spustenie dronov, robotov a ďalších zariadení. Môžu byť smartfóny pozadu?

Súvisiace články

  • Klepnite na silu jazyka Go spoločnosti Google
  • Najlepšie IDE a editory v jazyku Go
  • Preskúmanie: Porovnávali sa veľké štyri IDE Java
  • Angular vs. React: Epická bitka o zdieľanie mysle vývojárov
  • Java vs. Node.js: epická bitka o zdieľanie mysle vývojárov
  • PHP vs. Node.js: Epická bitka o zdieľanie mysle vývojárov
  • Python vs. R: Bitka o zdieľanie mysle dátovým vedcom
  • 21 horúcich programovacích trendov - a 21 chladných
  • 9 klamstiev si programátori hovoria
  • Kariérne hacky: Profesionálni vývojári robia a nerobia
$config[zx-auto] not found$config[zx-overlay] not found