Programování

Java vs. Google Go: epická bitva o sdílení mysli vývojářů

Go vs. Java není dobře uzavřená bitva mezi rovnými. Jedním z nich je obrovská těžká váha, která v tomto odvětví dominuje už léta. Druhým je mizerný, lehký nováček, který ukazuje spoustu mládí a slibů, ale má jen několik úderů.

Java and Go také řeší různé mezery. Jeden je zaměřen přímo na webové aplikace na straně serveru, oblast, kde byl ten druhý kdysi významným hráčem. Druhý vyrostl v regálech a nyní je oblíbenou volbou pro zařízení.

Ale ne každý se vzdálil od Javy na straně serveru webových aplikací, teritorium Go útočí a užírá základnu Javy. A přepnutí není příliš velký skok, protože oba jsou si v mnoha aspektech podobné. Oba jsou milující pocty C, ne-li dole, přinejmenším na povrchu, kde mnoho vývojářů tráví život zápasením se syntaxí. Jsou přímé a imperativní s dostatečnou strukturální podobností, takže není těžké převést kód mezi nimi. (Například projekt TardisGo je jeden nástroj, který změní Go na Java, C # nebo JavaScript.)

Zvažte to klec zápas, který staví dva bratrance z různých stran programovacích stop soutěžících o další zásobník aplikací.

Dlouhá historie prostředí Java přináší síťové efekty, které pomáhají všem

Java existuje od roku 1995 a každý rok přitahuje větší podíl mysli. Všechno od drobných vestavěných procesorů až po obrovské serverové čipy spouští Javu rychle a efektivně díky agilnímu virtuálnímu stroji just-in-time. Android se stal přínosem pro Javu, která je zdaleka nejpopulárnější platformou v mobilním světě. Proto zůstává Java špičkovým psem v žebříčcích, jako je index Tiobe a PyPL. Toto široké přijetí znamená, že existuje spousta kódu pro opětovné použití a většina z nich je otevřený zdroj, který vám zjednoduší život. Až začnete spojovat bazilionové řádky volně dostupného kódu Java, budete stát na bedrech obrů.

Díky krátké historii je Go okamžitě relevantní

Jistě, je skvělé stáhnout z webu bezplatný kód Java. Ale počkejte, je napsán pro Javu 1.3 a váš šéf chce, abyste používali Javu 1.8. Nedělejte si starosti, pravděpodobně to můžete trochu přepsat. Pojďme posunout tento termín znovu ... a znovu. Starý kód se může zdát jako dárek, ale není to vždycky slam dunk a někdy je to více problémů, než stojí za to.

Krátká historie Go na druhé straně znamená, že je napsána pro dnešní webové standardy. Z dob, kdy applety měly ovládnout svět, nezůstalo žádné plavidlo. Neexistují žádné dávno zapomenuté nápady, jako jsou Java Beans nebo J2EE, které sedí jako lákavé obtěžování. Je to prostě nové a navržené pro to, jak lidé dnes vytvářejí web.

Java umožňuje klepnout na jiné jazyky

JVM je základem pro desítky zajímavých jazyků, které jsou za běhu závislé na Javě. Každý lze snadno propojit s vaším kódem, což vám umožní napsat jednu část v Kotlin, další ve Scale a možná to celé slepit pomocí Clojure. Pokud chcete používat jazyky jako Python, JavaScript nebo Ruby, všechny tři mohou běžet přímo v prostředí Java pomocí emulátorů, které jsou často první volbou. Java vám dává svobodu nechat každý dílčí tým a podprojekt zvolit ten správný jazyk pro danou úlohu, zatímco stále běží ve stejném JVM. Nemusíte to používat, ale příležitost tu vždy je.

Go podporuje harmonii

Ano, můžete uplést dohromady aplikaci superclever, která se mísí s tím nejlepším z nového a trendy a vybíráte si absolutně nejlepší jazyk pro každou část svého úžasného opus na JVM. Můžete si dokonce namíchat oldies jako Rexx a Common Lisp, abyste si uctili své místo v historii výpočetní techniky v 70. letech. Hodně štěstí při hledání někoho se stejným vkusem a talentem, který bude udržovat tuto Babylonskou věž. Kromě promíchání několika dobře propracovaných knihoven není vždy dobrý plán napodobovat Rube Goldberg při navrhování dobrého kódu. Někdy je to účelné a nutné, ale to neznamená, že je to dobrý plán. Harmonie a důslednost usnadňují život všem. Svět Go to přináší.

Java JVM je štíhlá a silná

Soubory třídy Java se často měří ve stovkách bajtů. Soubory JAR, které je propojují, mají obvykle jen několik megabajtů. Samotný kód Java je malý, protože virtuální stroj obsahuje tolik energie pro správu a zabezpečení paměti. Pokud plánujete pohybovat se spoustou kódu, má smysl ponechat funkce v běžném běhovém nástroji. Centralizace má i další výhody. Pokud se problém zabezpečení objeví na nejnižších úrovních prostředí Java, není nutné překompilovat a znovu propojit celý váš kód. Mnoho problémů je vyřešeno upgradem samotného JVM.

Go vytvoří kompletní balíček

JVM je skvělé, dokud nezjistíte, že máte nainstalovanou nesprávnou verzi. Pokud chcete spustit soubor JAR nabitý prostředím Java 1.8, ale máte pouze verzi 1.6 JVM, nikam nepůjdete, dokud jej nenajdete. Kompilátor Go produkuje binární soubory, které jsou připraveny ke spuštění. Ano, jsou trochu velké, ale je to proto, že Go přidá veškerý další kód do binárního souboru pro vás. Vše je tam v jednom snadném balíčku.

Díky Java jsou vlákna mrtvá jednoduchá

Nezávislý běh různých částí programu není snadný úkol. Java si získala první fanoušky, protože její model vláken byl dostatečně jednoduchý na to, aby mu bylo rozumět, a zároveň dostatečně výkonný, aby byl užitečný. JVM dělá dobrou práci s mapováním vláken na různá jádra na stroji. Není to snadné, ale je to kvůli složitosti problému, nikoli kvůli Javě. Uživatelé Go mohou milovat své goroutiny a kanály, ale do již tak drsného nepořádku přidávají další suverénní vrstvu složitosti. Zjistíte, že se ptáte, zda je to zelené vlákno nebo vlákno OS. Pak se budete divit nad složitostí synchronizačních kanálů. Java je přímočařejší.

Go inteligentně odlehčí zatížení nitě

Vlákna Java a synchronizační primitiva to sice zvládnou, ale za velkou cenu. Vytváření a ničení vláken je tak pracné a náročné na paměť, že programátoři Java je vždy recyklují pomocí fondů vláken. Java ztratila na serveru trakci, protože každý zásah na webu potřebuje vlastní vlákno. Go má lehčí váhu a pružnější objekty zvané goroutiny, které jsou propojeny s inteligentními synchronizačními frontami zvanými kanály. Zatímco se zdá, že většina serverů dosahuje vrcholu 1000 nebo možná 10 000 vláken Java, lidé pravidelně hlásí běh stovek tisíc goroutinů na stejném hardwaru.

Goův model je propracovanější a moderní, protože je mladší. Pole se naučilo mnoho o poskytování sofistikovaných víceprocesorových algoritmů a můžete ho také využít.

Nástroje Java jsou vyzkoušené a pravdivé

Zralost prostředí Java znamená, že máte spoustu skvělých možností pro nástroje: Eclipse, IntelliJ a další. Existují sofistikované nástroje pro vytváření, jako jsou Ant a Maven, a hlavní úložiště jsou optimalizována pro zpracování kódu Java. K dispozici je také analytika meta kódu pro všechno, od prosazování pravidel kódu po hledání podmínek závodu. S vaší verzí kódu nemusí fungovat, ale často fungují. Proto je Java takovým juggernautem.

Go nástroje jsou moderní a nové

Go byl vytvořen pro moderní vícevláknový svět a kódové nástroje jsou optimalizovány pro dnešní výzvy. V debuggeru a runtime je zabudován detektor závodních podmínek, takže je mnohem jednodušší řešit ošklivé problémy. Zdrojový kód může být auditován programem golint a statickým analyzátorem zvaným „go vet“, který má řadu heuristik pro zachycení špatného nebo dokonce špatně napsaného Go kódu. Všechny tyto a další jsou optimalizovány tak, aby váš kód běžel rychle ve vícejádrovém stroji.

Java má konstrukty, které chcete

V průběhu let si komunita Java přála mnoho funkcí; někdy jim bylo uděleno. Byly přidány uzávěry, generika, lambda a další. Pokud je v programovacích jazycích nový nápad, je velká šance, že ho někdo obořil do světa Javy. Možná to není ideální, ale možnosti existují. Díky neustálému vývoji Java můžete napsat skvělý kód, který si váš mozek představuje.

Go se vyhne konstrukčnímu zmatku

Svoboda používat desítky chytrých kódovacích struktur zní skvěle, dokud to nezačnou dělat všichni v týmu. Čtení kódu někoho jiného se pak stává obtížnějším, protože používá chytrou funkci A, zatímco váš mozek je aklimatizován na chytrou funkci B. Kombinatorické záměny se skládají s každým vývojářem, který do mixu vloží svůj oblíbený konstrukt.

Go byl naproti tomu navržen tak, aby byl jednoduchý. Bylo to výslovně postaveno tak, aby se dobrý programátor mohl naučit Go za pár hodin. Neexistují desítky chytrých nápadů, které by zaplnily stovky stránek dokumentace. To může být při psaní kódu omezující, ale při čtení kódu od ostatních v týmu je to příjemné. Každý používá stejné idiomy, protože každý používá stejné základní funkce. Není to jen zkušenost s budováním týmu, jako je Outward Bound. Jde o efektivitu.

Java je dospělá

Věk přináší moudrost, zralost a stabilitu - všechny důvody pro výběr široké a dobře propracované základny kódů, která je hluboká více než dvě desetiletí. Děti se dnes stále učí Javu na začátku své cesty za informatikou a je na ní postavena nejdominantnější platforma Android. Pokud není dobrý důvod ke změně, měli byste se držet toho nejlepšího.

Go je čistá deska

Někdy je nejlepší nechat minulost za sebou. Koneckonců, pokrok často znamená začít znovu. Go vám nabízí příležitost pracovat s čistým, ostrým a moderním nástrojem, který je optimalizován pro to, co děláme dnes. Umožňuje vám užít si jednoduchost a svobodu zanechání minulosti za sebou.

A jednoduše proto, že Google zahájil Go, aby přinesl určitou jednoduchost kódování svých nekonečných serverových farem, neznamená to, že to nemůže přerůst. Někteří jej již používají ke spuštění dronů, robotů a dalších zařízení. Mohou být chytré telefony pozadu?

Související články

  • Klepněte na sílu jazyka Google Go
  • Nejlepší IDE a editory jazyka Go
  • Posouzení: Porovnávány velké čtyři Java IDE
  • Angular vs. React: Epická bitva o sdílení mysli vývojářů
  • Java vs. Node.js: epická bitva o sdílení mysli vývojářů
  • PHP vs. Node.js: epická bitva o sdílení mysli vývojářů
  • Python vs. R: Bitva o sdílení mysli vědců v oblasti dat
  • 21 horkých trendů v programování - a 21 chladných
  • 9 lží si programátoři říkají
  • Kariérní hacky: Profesionální vývojáři dělají a nedělají
$config[zx-auto] not found$config[zx-overlay] not found