Ljubavno pismo učenju
Kada je početkom devedesetih godina James Gosling počeo da oblikuje jezik iz kojeg će nastati Java, računari još nisu ličili na sveprisutnu mrežu međusobno povezanih uređaja. Uglavnom su stajali na stolovima, pripadali određenom proizvođaču i bili vezani za sopstveni operativni sistem. Ipak, mikročipovi su se već neprimetno useljavali u telefone, televizore, automobile, liftove, industrijske mašine i kućne aparate. Gosling je u toj tihoj promeni prepoznao budućnost u kojoj će računar nestati u predmetima svakodnevice, dok će softver morati pouzdano da živi u okruženjima koja njegov tvorac ne može neprestano nadzirati. Iz takvog pogleda izrasla je njegova životna tema: potraga za načinom da ideja pređe granicu između različitih mašina, a da pri tom sačuva sopstveni oblik.
James Arthur Gosling rođen je 19. maja 1955. godine u Calgaryju, u kanadskoj provinciji Alberta. Odrastao je u vremenu kada su računari bili veliki, skupi i udaljeni od svakodnevnog iskustva većine ljudi. Put do njih vodio je kroz univerzitetske laboratorije i istraživačke ustanove, gde se pristup mašini dobijao znanjem, strpljenjem i radoznalošću. Gosling svoju mladost kasnije nije opisivao kao priču o unapred zacrtanoj karijeri. Privlačilo ga je ono što mu je izgledalo zanimljivo, a zatim bi ostajao uz problem dovoljno dugo da razume njegove skrivene mehanizme. U toj jednostavnoj navici već se nalazila pokretačka snaga njegovog budućeg rada.
Još kao srednjoškolac dospeo je u odeljenje za fiziku Univerziteta u Calgaryju, gde je pomagao u obradi podataka povezanih sa kanadskim naučnim satelitom ISIS 2. Za mladog čoveka sedamdesetih godina takav posao podrazumevao je susret sa oskudnim računarskim resursima, sporim procedurama i sistemima kojima je svaki korak morao biti precizno objašnjen. Kada mu postojeći alati nisu odgovarali, pravio je sopstvene. Programiranje mu je od početka pružalo više od mogućnosti da računar izvrši zadatak: omogućavalo mu je da izgradi alat kojim će sledeći problem postati razumljiviji i pristupačniji.
Na Univerzitetu u Calgaryju studirao je računarske nauke, vođen snažnijom željom da istražuje nego da besprekorno sledi institucionalnu mapu obrazovanja. Prema njegovom kasnijem, duhovitom sećanju, izabrao je toliko stručnih predmeta da nije sasvim uredno ispunio sve formalne zahteve programa. Ta pojedinost lepo osvetljava njegov temperament. Akademske oznake imale su za njega manju privlačnost od samog prostora znanja, u kojem je mogao da razume novu ideju, rastavi složen sistem na delove i ostane uz njega sve dok ponovo ne proradi.
Dalje obrazovanje odvelo ga je na Carnegie Mellon University, jednu od najživljih sredina tadašnje računarske nauke. Tamo je radio među istraživačima koji su stvarali temelje računarske grafike, veštačke inteligencije, distribuiranih sistema i novih oblika komunikacije između čoveka i mašine. Njegovi mentori bili su Raj Reddy i Bob Sproull, a u doktorskoj komisiji nalazili su se Ivan Sutherland, pionir interaktivne računarske grafike, i Guy Steele, izuzetan poznavalac programskih jezika. Gosling je mnogo kasnije govorio o toj sredini sa zahvalnošću čoveka koji zna koliko je retka prilika proveravati sopstvene zamisli pred ljudima sposobnim da uoče i njihovu lepotu i njihove slabosti.
Njegova doktorska disertacija bavila se algebarskim upravljanjem ograničenjima u grafičkim sistemima. Zanimalo ga je kako promena jednog elementa utiče na druge i kako celina može zadržati zadate odnose dok se njeni delovi pomeraju. U tom istraživanju već se vidi obrazac koji će pratiti čitav njegov rad: sistemi za njega nisu bili zbir izolovanih predmeta, već mreže međusobnih obaveza. Pitao se kako omogućiti promenu uz očuvanje reda, kako zadovoljiti više uslova sa najmanje nepotrebnog pomeranja i kako stvoriti slobodu koja ne razara pouzdanost. Mnogo godina kasnije ista pitanja pojaviće se u Javi, samo na drugom nivou, kada program bude trebalo preneti u novo okruženje bez gubitka njegovih osnovnih pravila.
Za vreme studija napravio je prvu široko korišćenu verziju uređivača Emacs za Unix. Povod je bio sasvim praktičan: upoznao je Emacs na drugom sistemu, vratio se u okruženje u kojem ga nije bilo i poželeo alat na koji se već navikao. Njegov odgovor na to odsustvo bio je da ga sam izgradi. Program poznat kao Gosling Emacs ili Gosmacs pokazao je njegovu sposobnost da samostalno oblikuje složene softverske celine, ali i njegovu potrebu da radno okruženje učini proširivim i prilagodljivim korisniku. Dobar alat je, prema takvom shvatanju, prostor koji čoveku omogućava da razvije sopstveni način mišljenja i rada.
Na Carnegie Mellonu dogodilo se još jedno iskustvo koje će ostati sačuvano u njegovom pamćenju do nastanka Jave. Raj Reddy zatražio je od njega da prenese softver sa računara PERQ na VAX. Ručno prilagođavanje velike količine koda bilo bi zamorno i nepouzdano, pa je Gosling preokrenuo problem: napravio je sistem koji je posredni kod jedne mašine prevodio u instrukcije druge. Rezultati su pokazali da međusloj između programa i procesora može da bude praktičan i iznenađujuće efikasan. Iz tog iskustva poneo je zamisao da program ne mora neposredno pripadati fizičkom procesoru; može pripadati apstraktnoj mašini čije će ponašanje različiti računari naučiti.
Posle doktorata kratko je radio u okruženju povezanom sa IBM-om i učestvovao u razvoju Andrew Window Systema, jednog od ranih mrežnih grafičkih sistema. Tehničke mogućnosti projekta bile su velike, ali ga je korporativna sporost duboko frustrirala. Posmatrao je kako unutrašnji interesi i strah od ugrožavanja starijih proizvoda mogu da oslabe obećavajući novi računar. Gosling je prema takvim pojavama umeo da bude neposredan, ironičan i oštar. Dobra tehnologija za njega je zasluživala priliku da bude razvijena prema svojoj stvarnoj vrednosti, a autoritet je priznavao onda kada je bio potkrepljen znanjem i odgovornošću.
Bill Joy ga je već neko vreme nagovarao da pređe u mladu kompaniju Sun Microsystems. Gosling je u početku sumnjao da Sunovi skromniji računari mogu da nadvladaju tehničku snagu velikih korporacija. Iskustvo sa organizacijom sposobnom da sputava sopstvene izume promenilo je njegovu procenu. Godine 1984. pridružio se Sunu, kompaniji koja je rasla zajedno sa mrežnim računarstvom i okupljala inženjere zainteresovane za otvoreniju komunikaciju među sistemima. Zamisao da je „mreža računar” odgovarala je njegovom instinktu da posmatra softver preko granica jedne mašine.
Njegov prvi veliki projekat u Sunu bio je NeWS, mrežno proširiv prozorski sistem zasnovan na jeziku PostScript. Deo ponašanja aplikacije mogao se poslati drugom računaru i izvršavati tamo gde je bio potreban, što je predstavljalo smelu viziju distribuiranog grafičkog okruženja. NeWS je bio moćan i elegantan, ali je u sukobu standarda širu podršku dobio X Window System. Taj poraz naučio je Goslinga da tehnička lepota sama ne određuje istorijsku sudbinu jednog rešenja. Standardi rastu iz dostupnosti, licenci, zajednice, poverenja, poslovnih saveza i pravog trenutka. Kada bude nastajala Java, mogućnost da ljudi lako dođu do nje, isprobaju je i uključe se u njen razvoj postaće važan deo njene šanse za opstanak.
Krajem osamdesetih godina Gosling, Patrick Naughton i Mike Sheridan osećali su da se izvan uobičajene računarske industrije priprema velika promena. Mikrokontroleri su se pojavljivali u liftovima, telefonima, lokomotivama, sistemima osvetljenja i aparatima koje gotovo niko nije nazivao računarima. Patrick Naughton bio je nezadovoljan Sunovim tadašnjim pravcem i razmišljao je o odlasku, pa je Scott McNealy grupi pružio vreme i prostor da istražuje budućnost bez unapred zadatog proizvoda. Tako je nastao Green Project, izdvojena grupa smeštena iza slučajno zelenih vrata na Sand Hill Roadu. Njena udaljenost od glavnog kampusa omogućila je članovima da neko vreme misle izvan neposrednih poslovnih zahteva kompanije.
Mike Sheridan unosio je u grupu spoj umetničke imaginacije, poslovnog razmišljanja i osetljivosti za korisničko iskustvo. Pomagao je inženjerima da tehničke mogućnosti pretvore u prizore budućeg života. Članovi tima pisali su dokument Behind the Green Door, mešavinu vizije, poslovnog plana i scenarija mogućih primena, a zatim su razgovarali sa proizvođačima potrošačke elektronike u Japanu, Koreji i Evropi. Pokušavali su da razumeju svet u kojem će kućni uređaji imati sve više računarske snage, dok će ljudi i dalje želeti jednostavnost, sklad i razumljivo upravljanje.
Green tim je tu viziju pretvorio u prototip Star7, ručni računar sa grafičkim ekranom i animiranim vodičem Dukeom. Uređaj je sastavljen od delova različitog porekla, uz mnogo improvizacije, rastavljanja postojeće elektronike i pronalaženja praktičnih rešenja. Članovi grupe šaljivo su takav postupak nazivali „inženjerstvom čekića”. Ponekad je bilo jeftinije kupiti čitav prenosivi plejer i iz njega izvaditi potreban konektor nego naručiti sam deo. Od ekrana, ploča, infracrvenih predajnika, baterija i delova potrošačkih proizvoda nastala je naprava koja je budućnost činila opipljivom.
Taj način rada otkriva mnogo o Goslingu i njegovim saradnicima. Velike zamisli proveravali su kroz predmete koji se mogu uključiti, dodirnuti i koristiti. Prototip je za njih predstavljao oblik mišljenja, jer ideja tek u stvarnom uređaju pokazuje svoje skrivene nedostatke. Gosling se sa lakoćom kretao između apstraktnih principa i sasvim konkretnih teškoća: od simboličke algebre do konektora iz rasklopljenog plejera, od arhitekture virtuelne mašine do pitanja kako će korisnik razumeti dugme na malom ekranu. Njegova razigranost imala je ozbiljnu svrhu, pošto je kroz eksperimente otkrivao probleme koje teorijska rasprava još nije umela jasno da postavi.
Za Star7 bio je potreban softver sposoban da radi na procesorima različitih proizvođača, sa malo memorije i u uređajima od kojih se očekuje dugotrajna pouzdanost. Gosling je najpre pokušavao da prilagodi C++, uklanjajući osobine koje su mu izgledale rizično, ali je postepeno postalo jasno da je potreban zaseban jezik. Nazvao ga je Oak, prema hrastu koji je gledao kroz prozor kancelarije. Ime je bilo jednostavno i zemaljsko, daleko od tehnološke pompe koja će kasnije pratiti Javu. Oak je zadržao dovoljno poznatu sintaksu da ga programeri iz sveta jezika C i C++ mogu prihvatiti, dok je svojim pravilima ograničio opasne postupke i olakšao stvaranje pouzdanih programa.
Goslingovo shvatanje jednostavnosti podrazumevalo je pažljivo biranje mogućnosti koje će jezik pružiti. Svaka nova moć data programeru otvara i novu mogućnost za grešku koju će neko drugi teško pronaći. Automatsko upravljanje memorijom, stroga provera tipova, odsustvo slobodne aritmetike pokazivača i precizno određeno ponašanje na različitim računarima izražavali su istu odgovornost prema korisniku. Softver je sve dublje ulazio u uređaje i ustanove od kojih zavisi svakodnevni život, pa se njegova pouzdanost morala graditi i pravilima sistema, a ne samo oslanjanjem na nepogrešivu pažnju pojedinca.
Centralno mesto dobila je virtuelna mašina. Program se prevodio u bajtkod, posredni oblik koji je mogla da izvršava odgovarajuća softverska mašina na svakom podržanom uređaju. Stara Goslingova ideja iz vremena prenošenja softvera sa PERQ-a na VAX dobila je veliki istorijski trenutak. Virtuelna mašina postala je sporazum između programa i sveta: program pristaje da govori zajedničkim posrednim jezikom, dok svaki uređaj preuzima obavezu da taj jezik pravilno razume. Prenosivost i bezbednost spojile su se u istoj arhitekturi, jer je kod koji putuje mrežom mogao biti proveren i ograničen pre nego što dobije pristup resursima računara domaćina.
Tržište potrošačke elektronike još nije bilo spremno za ambiciju Green tima. Pregovori sa proizvođačima nisu doneli očekivane proizvode, a važan posao u oblasti interaktivne televizije pripao je drugoj kompaniji. Grupa je menjala organizacioni oblik, postala FirstPerson i polako gubila prvobitnu jasnoću. Tehnologija namenjena budućoj mreži kućnih uređaja ostala je bez tržišta koje bi moglo da je prihvati. Gosling i njegovi saradnici otkrili su jednu od najtežih pouka inovacije: moguće je tačno naslutiti pravac budućnosti, a ipak pogrešiti trenutak, poslovni model i vrata kroz koja će nova ideja ući u svet.
Novi život njihove tehnologije stigao je sa World Wide Webom. Patrick Naughton prepoznao je da mreža povezuje upravo onu raznolikost računara za koju je Oak bio projektovan i da bi mali programi mogli stizati zajedno sa veb-stranicom. Razvijen je pregledač HotJava, Oak je zbog zauzetog imena preimenovan u Javu, a apleti su publici pokazali veb koji se kreće, reaguje i izvršava program. Kada je Java predstavljena 1995. godine i prihvaćena u pregledaču Netscape, nekadašnji jezik za kućne uređaje našao se u središtu naglog širenja interneta. Ideja je preživela zato što su njeni tvorci prepoznali novo pitanje na koje je njihov rad već sadržao odgovor.
Brzi uspeh odveo je Goslinga iz male istraživačke grupe u složen svet standardizacije, licenci, kompatibilnosti i korporativnih interesa. Želeo je da ljudi dobiju kod, alate i mogućnost da učestvuju, ali je istovremeno strepeo da će moćne kompanije menjati ključne delove platforme i vezati korisnike za sopstvene proizvode. Univerzalnost Jave zavisila je od toga da različite implementacije poštuju zajedničke ugovore. Gosling se zato često nalazio na osetljivoj granici između otvorenosti i očuvanja kompatibilnosti, u industriji u kojoj tehnički standard predstavlja i zajednički sporazum i sredstvo poslovne moći.
Naslov „oca Jave” pratio ga je kroz javni život, ali je on dosledno isticao zajedničku prirodu njenog nastanka. Osmislio je prvobitni jezik i napisao prvi prevodilac i virtuelnu mašinu, dok su Patrick Naughton, Mike Sheridan, Bill Joy, Guy Steele, Gilad Bracha, Ken Arnold i mnogi drugi inženjeri oblikovali platformu, biblioteke i njen razvojni put. Veliki programski jezik vremenom postaje zajednički grad: prvi arhitekta može da odredi neke ulice i temelje, ali su za njegove kuće, mostove, trgove i svakodnevni život potrebne hiljade ljudi.
Goslingova ličnost ostala je prepoznatljiva i kada je Java postala globalna platforma. Razbarušena kosa i brada, neformalna odeća, brz humor i govor pun tehničkih slika odavali su čoveka kojem je prijatnije u radionici nego u korporativnom salonu. U razgovorima je često umanjivao dramatičnost sopstvene karijere i vraćao pažnju na problem koji treba rešiti, ali je umeo odlučno da brani arhitektonsko rešenje za koje je verovao da je ispravno. Posebno teško je prihvatao autoritet koji svoju moć nije mogao da opravda znanjem, razumevanjem i spremnošću da snosi posledice odluke.
Njegov odnos prema programskim jezicima ostao je praktičan i gotovo zanatski. Privlačio ga je jezik koji veliki broj ljudi može da nauči, u kojem timovi mogu godinama da održavaju složene sisteme i čija pravila sprečavaju skupe greške. Poznata sintaksa porodice jezika C olakšavala je programerima prelazak, dok su ispod te poznate površine uklonjeni brojni opasni mehanizmi. Gosling je razumeo da duboka promena često lakše ulazi u svet kada ljudima pruža dovoljno poznat oblik da joj priđu bez straha.
Java je tokom narednih godina prerasla veb-aplete koji su joj doneli prvu slavu. Ušla je u serverske sisteme, bankarske platforme, telekomunikacije, obrazovanje, mobilne uređaje i velike distribuirane aplikacije. Gosling je u Sun Microsystemsu proveo više od četvrt veka, posmatrajući kako mala eksperimentalna ideja postaje infrastruktura od koje zavise čitave ustanove i kako se sloboda ranog istraživanja pretvara u odgovornost prema ogromnoj zajednici. Kada je Oracle 2010. godine preuzeo Sun, napustio je kompaniju, ne želeći da bude javno odgovoran za odluke na koje nema odgovarajući uticaj.
Posle Suna kratko je radio u Googleu, a zatim se pridružio kompaniji Liquid Robotics, koja je razvijala autonomne okeanske robote Wave Glider. Ti uređaji koristili su energiju talasa, kretali se po udaljenim oblastima mora i prikupljali podatke u okolnostima u kojima se kvar ne može rešiti jednostavnim prilaskom i ponovnim pokretanjem sistema. Projekat se prirodno nastavljao na Goslingova rana interesovanja. Softver se ponovo nalazio u stvarnom predmetu, izloženom vodi, vetru, prekidima komunikacije i promenljivom svetu, gde su prenosivost, otpornost i pažljivo upravljanje greškama imale neposredne fizičke posledice.
Od srednjoškolskog rada sa satelitskim podacima, preko mrežnih prozorskih sistema i prototipa Star7, do robota na okeanu, Goslinga su privlačili sistemi koji prelaze granice između procesora, uređaja, mreže i fizičkog sveta. Java je postala najpoznatiji izraz te sklonosti, ali je kroz njegov život neprekidno odzvanjalo šire pitanje: kako napraviti softver koji će pouzdano živeti daleko od svog tvorca, u svetu koji se menja i u kojem se svaka ljudska greška ne može unapred predvideti?
Njegov stvaralački put pokazuje i koliko su porazi važni u razvoju velike ideje. NeWS je izgubio sukob standarda, tržište za Green Project nije sazrelo u očekivanom trenutku, poslovi u oblasti interaktivne televizije pripali su drugima, a prvobitni plan gotovo je ostavio Oak bez budućnosti. Svako od tih iskustava donelo je novo razumevanje: tehnička elegancija traži zajednicu, proročanska zamisao traži pravi trenutak, a dobar izum ponekad mora da promeni svrhu kako bi pronašao svet kojem je potreban.
Velike tehnologije retko nastaju iz jednog blistavog trenutka. U Javi su se susrela iskustva tinejdžera koji pravi alat za obradu naučnih podataka, studenta koji gradi uređivač zato što mu nedostaje, istraživača koji otkriva snagu posrednog koda, inženjera razočaranog korporativnom birokratijom, tvorca prozorskog sistema koji je izgubio tržišnu bitku i člana tima koji od rasklopljenih uređaja sastavlja prototip budućnosti. Naizgled udaljeni događaji godinama su se taložili dok se među njima nije pojavila veza.
U središtu tog puta ostao je čovek kojeg je više privlačilo ono što može da izgradi nego veličina karijere koju bi mogao da stekne. Njegova radoznalost bila je razigrana, dok je njegov odnos prema posledicama softvera ostajao ozbiljan i odgovoran. Razumeo je da će programi izaći iz laboratorija i ući u predmete, mreže i ustanove od kojih zavisi svakodnevni život. Zato je stvarao jezik koji pamti da programer može pogrešiti, da će se hardver menjati, da će kod putovati i da korisnik ima pravo da od tehnologije očekuje pouzdanost.
Danas nas okružuju telefoni, serveri, automobili, televizori, senzori i industrijski sistemi ispunjeni softverom, pa Goslingova nekadašnja vizija deluje gotovo samorazumljivo. Upravo zbog toga lako zaboravljamo koliko je bila smela zamisao da se raznovrsnost takvog sveta savlada zajedničkim jezikom i virtuelnom mašinom. James Gosling pomogao je da program prestane da bude zarobljenik jednog procesora. U toj oslobođenoj ideji ostalo je njegovo trajno ljubavno pismo učenju: granica koju dovoljno strpljivo proučimo može postati mesto na kojem ćemo izgraditi most.