Programovanie

Java vo veku 20 rokov: Ako to navždy zmenilo programovanie

Pamätať si, aký bol programátorský svet v roku 1995, nie je ľahká úloha. Objektovo orientované programovanie bolo napríklad akceptovanou, ale zriedka praktizovanou paradigmou, pričom veľa z toho, čo prešlo ako takzvané objektovo orientované programy, bolo iba niečo viac ako rebrandovaný C kód, ktorý používal >> namiesto printf a trieda namiesto štruktúr. Programy, ktoré sme v tých dňoch písali, bežne vypisovali jadro kvôli aritmetickým chybám ukazovateľa alebo im došlo pamäť kvôli netesnostiam. Zdrojový kód bolo sotva možné preniesť medzi rôznymi verziami systému Unix. Prevádzka toho istého binárneho súboru na rôznych procesoroch a operačných systémoch bola bláznivá reč.

Java to všetko zmenila. Zatiaľ čo na platforme závislý, manuálne pridelený, procedurálny C kód bude s nami naďalej minimálne ďalších 20 rokov, Java dokázala, že to bola voľba, nie požiadavka. Prvýkrát sme začali písať skutočný produkčný kód v multiplatformovom objektovo orientovanom jazyku nazbieranom odpadkami; a páčilo sa nám to ... nás milióny. Jazyky, ktoré prišli po Jave, predovšetkým C #, museli vyčistiť novú vyššiu latku produktivity vývojárov, ktorú Java stanovila.

James Gosling, Mike Sheridan, Patrick Naughton a ďalší programátori projektu Sun’s Green Project nevymysleli väčšinu dôležitých technológií, ktoré Java široko využívala. Väčšina kľúčových funkcií, ktoré obsahovali vtedy známy ako dub, mala svoj pôvod inde:

  • Základná trieda objektov, z ktorej pochádzajú všetky triedy? Spoločenská konverzácia.
  • Silná statická kontrola typu v čase kompilácie? Ada.
  • Viacnásobné rozhranie, dedičnosť jednej implementácie? Cieľ-C.
  • Vložená dokumentácia? CWeb.
  • Cross-platformový virtuálny stroj a bajtový kód s kompiláciou just-in-time? Opäť Smalltalk, najmä Sun’s Self dialect.
  • Zber odpadu? Lisp.
  • Primitívne typy a riadiace štruktúry? C.
  • Systém dvojitého typu s neobjektívnymi primitívnymi typmi pre výkon? C ++.

Java však bola priekopníkom nového územia. Predtým ani potom sa v žiadnom inom jazyku nenachádzajú nič iné ako zaškrtnuté výnimky. Java bola tiež prvým jazykom, ktorý používal Unicode v natívnom type reťazca a v samotnom zdrojovom kóde.

Hlavnou výhodou Javy však bolo, že bola vyvinutá ako praktický nástroj na vykonávanie práce. Spopularizoval dobré nápady zo starších jazykov ich prebalením do formátu, ktorý poznal priemerný kódovač C, aj keď (na rozdiel od C ++ a Objective-C) nebola Java striktnou nadmnožinou jazyka C. Skutočne to bola práve táto ochota nielen pridať ale tiež odstráni funkcie, vďaka ktorým je Java oveľa jednoduchšia a ľahšia na učenie ako ostatní objektovo orientovaní potomkovia C.

Java nemala (a stále nemá) štruktúr, odbory, typedefsa hlavička súbory. Objektovo orientovaný jazyk, ktorý nie je spútaný požiadavkou na spustenie staršieho kódu, ich nepotreboval. Podobne Java rozumne vynechala nápady, ktoré boli vyskúšané a považované za nevyžiadané v iných jazykoch: viditeľné je viacnásobné dedenie implementácie, aritmetika ukazovateľa a preťaženie operátora. Tento dobrý vkus na začiatku znamená, že aj o 20 rokov neskôr je Java stále relatívne bez varovaní „buď draci“, ktoré sú v sprievode štýlov pre jeho predchodcov.

Zvyšok programovacieho sveta však nezostal stáť. Odkedy sme začali programovať Javu, pribudli tisíce programovacích jazykov, ale väčšina nikdy nedosiahla viac ako nepatrný zlomok kolektívnej pozornosti, než nakoniec zmizla. To, čo sa nám v Jave predávalo, boli applety, malé programy bežiace na webových stránkach, ktoré mohli interagovať s používateľom a robiť viac ako zobrazovať statický text, obrázky a formuláre. Dnes to už neznie príliš veľa, ale pamätajte - v roku 1995 JavaScript a DOM neexistovali a najmodernejšia bola forma HTML, ktorá hovorila so skriptom CGI na strane servera napísaným v Perle.

Iróniou je, že applety nikdy nefungovali veľmi dobre. Boli úplne izolovaní od obsahu stránky, nedokázali čítať ani písať HTML tak, ako to nakoniec dokázal JavaScript. Bezpečnostné obmedzenia bránili appletom v interakcii s lokálnym súborovým systémom a sieťovými servermi tretích strán. Vďaka týmto obmedzeniam boli applety vhodné nielen pre jednoduché hry a animácie. Aj týmto triviálnym dôkazom koncepcie bránil slabý výkon skorých virtuálnych strojov prehľadávača. A kým sa nedostatky appletov opravili, prehliadače a front-end vývojári už Java dávno minuli. Flash, JavaScript a najnovšie HTML5 nás zaujali ako oveľa efektívnejšie platformy na dodávanie dynamického webového obsahu, ktoré nám Java sľúbila, ale zlyhala.

Napriek tomu nás applety inšpirovali k práci s Javou a objavili sme čistý jazyk, ktorý vyhladil mnoho drsných hrán a bolestivých bodov, s ktorými sme zápasili v alternatívach, ako je C ++. Samotný automatický odvoz odpadu stál za cenu vstupného. Možno boli applety prehnané a nedostatočne doručené, ale to neznamenalo, že Java nebola sakramentsky dobrým jazykom pre iné problémy.

Java, ktorá bola pôvodne zamýšľaná ako multiplatformná knižnica klientov, našla skutočný úspech v serverovom priestore. Skutočné problémy pre nás aj pre podnikanie vyriešili servlety, stránky servera Java a množstvo podnikovo zameraných knižníc, ktoré boli pravidelne združované a premenované na jednu neprehľadnú skratku. Okrem marketingových zlyhaní dosiahla Java takmer štandardný stav v IT oddeleniach po celom svete. (Rýchly: Aký je rozdiel medzi Java 2 Enterprise Edition a Java Platform Enterprise Edition? Ak ste hádali, že J2EE je nástupcom JEE, dostali ste ho presne dozadu.) Niektoré z týchto produktov zameraných na podnikanie boli na strane ťažkej váhy a inšpirovali sa pri otvorení zdrojové alternatívy a doplnky ako Spring, Hibernate a Tomcat, ale všetky boli postavené na základoch Slnka.

Pravdepodobne najdôležitejším prínosom otvoreného zdroja pre Javu a širšie programovacie remeslo je JUnit. Testovaný vývoj (TDD) bol vyskúšaný už skôr v Smalltalku. Rovnako ako mnohé ďalšie inovácie tohto jazyka, aj TDD sa dočkalo rozsiahleho povedomia a prijatia, až kým nebude k dispozícii v jazyku Java. Keď Kent Beck a Erich Gamma vydali JUnit v roku 2000, TDD rýchlo vystúpil z experimentálnej praxe niekoľkých programátorov na štandardný spôsob vývoja softvéru v 21. storočí. Ako povedal Martin Fowler: „Nikdy v oblasti vývoja softvéru toľko dlžilo toľko až tak málo riadkov kódu,“ a tých pár riadkov kódu bolo napísaných v jazyku Java.

Dvadsať rokov od svojho založenia už Java nie je mizerný nováčik. Stalo sa zavedeným úradujúcim úradníkom, proti ktorým sa vzbúria ďalšie jazyky. Ľahšie jazyky ako Ruby a Python významne prenikli na územie Javy, najmä v startupovej komunite, kde rýchlosť vývoja počíta viac ako robustnosť a rozsah - kompromis, ktorý sama Java využila v prvých dňoch, keď výkon virtuálnych strojov výrazne zaostal za kompilovaným kódom.

Java samozrejme nestojí na mieste. Spoločnosť Oracle naďalej začleňuje osvedčené technológie z iných jazykov, ako sú generiká, autoboxing, výčty a najnovšie aj výrazy lambda. Mnoho programátorov sa s týmito myšlienkami stretlo najskôr v prostredí Java. Nie každý programátor vie Javu, ale či už vie alebo nie, každý dnešný programátor bol ňou ovplyvnený.

Súvisiace články

  • Recenzia: Porovnávajú sa veľké 4 IDE Java
  • Java navždy! 12 kľúčov k pretrvávajúcej dominancii Javy
  • Java vs. Node.js: epická bitka o zdieľanie mysle vývojárov
$config[zx-auto] not found$config[zx-overlay] not found