Programavimas

20 metų „Java“: kaip tai pakeitė programavimą visiems laikams

Prisiminti, koks buvo programavimo pasaulis 1995 m., Nėra lengva užduotis. Vienam į objektą orientuotas programavimas buvo priimtina, bet retai praktikuojama paradigma. Daugelis to, kas buvo laikoma vadinamosiomis į objektą orientuotomis programomis, buvo šiek tiek daugiau nei pervardytas C kodas, kuris naudojo >> vietoj printf ir klasė vietoj struktūros. Tomis dienomis mūsų parašytos programos įprastai išmetė branduolį dėl rodyklės aritmetikos klaidų arba pritrūko atminties dėl nutekėjimo. Šaltinio kodą vos pavyko perkelti tarp skirtingų „Unix“ versijų. Paleisti tą patį dvejetainį kompiuterį su skirtingais procesoriais ir operacinėmis sistemomis buvo beprotiška kalba.

„Java“ visa tai pakeitė. Nors nuo platformos priklausantis, rankiniu būdu priskirtas procedūrinis C kodas išliks bent jau ateinančius 20 metų, „Java“ įrodė, kad tai buvo pasirinkimas, o ne reikalavimas. Pirmą kartą mes pradėjome rašyti tikrąjį gamybos kodą daugiaplatforme, šiukšlių surinkta, objektų kalba; ir mums patiko ... milijonai mūsų. Kalbos, kurios atsirado po „Java“, ypač C #, turėjo išvalyti naują aukštesnę „Java“ nustatytą kūrėjų produktyvumo juostą.

Jamesas Goslingas, Mike'as Sheridanas, Patrickas Naughtonas ir kiti „Sun's Green Project“ programuotojai neišradė daugumos svarbių technologijų, kurias „Java“ plačiai panaudojo. Dauguma pagrindinių funkcijų, kurias jie įtraukė į vadinamąjį ąžuolą, savo ištakas rado kitur:

  • Bazinė objektų klasė, iš kurios nusileidžia visos klasės? „Smalltalk“.
  • Ar stiprus statinis tipo tikrinimas kompiliavimo metu? Ada.
  • Keli sąsaja, vienas paveldėjimas? C tikslas.
  • Įterpta dokumentacija? CWeb.
  • Kelių platformų virtuali mašina ir baitų kodas su kompiliacija tiksliai laiku? Vėl „Smalltalk“, ypač „Sun's Self“ tarmė.
  • Šiukšlių kolekcija? Lisp.
  • Pirmykščiai tipai ir valdymo struktūros? C.
  • Dvigubo tipo sistema su neobjektyviais primityviais tipais? C ++.

Vis dėlto „Java“ pirmavo naujoje teritorijoje. Nieko panašaus į pažymėtas išimtis nėra jokiomis kitomis kalbomis nei prieš, nei po to. „Java“ taip pat buvo pirmoji kalba, kuri naudojo „Unicode“ kaip vietinį eilutės tipą ir patį šaltinio kodą.

Tačiau pagrindinė „Java“ stiprybė buvo ta, kad ji buvo sukurta kaip praktinė priemonė darbui atlikti. Jis populiarino gerąsias ankstesnių kalbų idėjas, perpakuodamas jas įprastam C koduotojui pažįstamu formatu, nors (skirtingai nei C ++ ir Objective-C) „Java“ nebuvo griežta C. superset. Iš tikrųjų būtent šis noras ne tik pridėti bet taip pat pašalinkite funkcijas, dėl kurių „Java“ tapo daug paprastesnė ir lengviau išmokstama nei kiti į objektą orientuoti C palikuonys.

Java neturėjo (ir vis dar neturi) struktais, sąjungos, tipažaiir antraštė failus. Į objektą orientuotai kalbai, kurios nesupainiojo reikalavimas paleisti seną kodą, jų nereikėjo. Panašiai „Java“ išmintingai praleido idėjas, kurios buvo išbandytos ir kurių norėta rasti kitomis kalbomis: daugelio diegimo paveldėjimas, žymeklio aritmetika ir operatoriaus perkėlimas. Šis geras skonis iš pradžių reiškia, kad net po 20 metų „Java“ vis dar gana laisva nuo įspėjimų „čia būk drakonai“, kurie šiukšlina pirmtakų stiliaus vadovus.

Bet likęs programavimo pasaulis nestovėjo vietoje. Tūkstančiai programavimo kalbų išaugo nuo tada, kai pirmą kartą pradėjome programuoti „Java“, tačiau dauguma niekada nepasiekė daugiau nei menkos dalies kolektyvinio dėmesio, kol galiausiai neišnyko. „Java“ programoje mus pardavinėjo programėlės, mažos programos, veikiančios tinklalapiuose, kurios galėjo sąveikauti su vartotoju ir padaryti ne tik statinį tekstą, paveikslėlius ir formas. Šiandien tai skamba nedaug, bet atminkite - 1995 m. „JavaScript“ ir DOM neegzistavo, o HTML forma, kuri kalbėjo su serverio CGI scenarijumi, parašytu Perl, buvo pažangiausia.

Ironiška tai, kad programėlės niekada neveikė labai gerai. Jie buvo visiškai izoliuoti nuo puslapio turinio, nesugebėjo skaityti ar rašyti HTML kaip „JavaScript“ galiausiai galėjo. Saugos apribojimai neleido programėlėms sąveikauti su vietine failų sistema ir trečiųjų šalių tinklo serveriais. Dėl šių apribojimų programėlės buvo pritaikytos ne tik paprastiems žaidimams ir animacijoms. Net ir šiems nereikšmingiems koncepcijos įrodymams trukdė prastas ankstyvųjų naršyklių virtualių mašinų veikimas. Tuo metu, kai buvo ištaisyti programėlių trūkumai, naršyklės ir sąsajos kūrėjai jau seniai aplenkė „Java“. „Flash“, „JavaScript“ ir pastaruoju metu „HTML5“ atkreipė mūsų dėmesį, nes daug efektyvesnės platformos dinamiškam žiniatinklio turiniui pateikti „Java“ buvo pažadėjusios, tačiau nepateikė.

Vis dėlto programėlės įkvėpė mus dirbti su „Java“, o tai, ką atradome, buvo švari kalba, išlyginanti daugelį šiurkščių briaunų ir skausmo taškų, su kuriais kovojome alternatyvose, tokiose kaip C ++. Vien automatinis šiukšlių surinkimas buvo vertas įvežimo kainos. Programėlės galėjo būti peržengtos ir pristatytos per mažai, tačiau tai nereiškė, kad „Java“ nebuvo velniškai gera kalba kitoms problemoms spręsti.

Iš pradžių skirta kaip daugiaplatformė kliento biblioteka, „Java“ serverio erdvėje sulaukė tikros sėkmės. „Servlet“, „Java Server Pages“ ir daugybė į įmonę orientuotų bibliotekų, kurios buvo periodiškai sujungtos ir pažymėtos vienu ar kitu klaidinančiu akronimu, išsprendė realias problemas mums ir verslui. Nepaisant rinkodaros nesėkmių, „Java“ pasiekė beveik standartinį statusą viso pasaulio IT skyriuose. (Greita: kuo skiriasi „Java 2 Enterprise Edition“ ir „Java Platform Enterprise Edition“? Jei atspėjote, kad J2EE yra JEE tęsėjas, tai gavote tiksliai atgal.) Kai kurie iš šių įmonėms skirtų produktų buvo sunkiasvoriai ir įkvėpti šaltinių alternatyvos ir papildai, tokie kaip „Spring“, „Hibernate“ ir „Tomcat“, tačiau jie visi pastatyti ant Saulės pamatų.

Neabejotinai svarbiausias atvirojo kodo indėlis į „Java“ ir platesnį programavimo amatą yra „JUnit“. Testu pagrįstas kūrimas (TDD) buvo išbandytas anksčiau naudojant „Smalltalk“. Tačiau, kaip ir daugelis kitų šios kalbos naujovių, TDD plačiai nepastebėjo ir nepatvirtino, kol ji tapo prieinama „Java“. Kai 2000 m. Kentas Beckas ir Erichas Gamma išleido „JUnit“, XXI amžiuje TDD greitai perėjo nuo kelių programuotojų eksperimentinės praktikos iki standartinio programinės įrangos kūrimo būdo. Kaip sakė Martinas Fowleris: „Niekada programinės įrangos kūrimo srityje tiek daug nebuvo skolingas tiek mažai kodo eilučių“, o tos kelios kodo eilutės buvo parašytos „Java“.

Praėjus dvidešimčiai metų nuo savo įkūrimo, „Java“ nebėra tauragiškė. Tai tapo įsitvirtinusiomis kalbomis, prieš kurias maištauja. Lengvesnės kalbos, tokios kaip „Ruby“ ir „Python“, žymiai įsiveržė į „Java“ teritoriją, ypač startuolių bendruomenėje, kur vystymosi greitis yra ne tik tvirtumas ir mastas - tai kompromisas, kuriuo pati Java pasinaudojo pirmosiomis dienomis, kai pasirodė virtualių mašinų labai atsiliko sukompiliuotas kodas.

„Java“, žinoma, nestovi vietoje. „Oracle“ ir toliau diegia gerai patikrintas kitų kalbų technologijas, tokias kaip generiniai, automatiniai autobusai, surašymai ir paskutiniu metu lambda posakiai. Daugelis programuotojų pirmiausia susidūrė su šiomis idėjomis „Java“. Ne kiekvienas programuotojas žino „Java“, tačiau nesvarbu, ar jis tai žino, ar ne, bet kiekvienam programuotojui šiandien tai turėjo įtakos.

Susiję straipsniai

  • Apžvalga: Palyginti 4 dideli „Java“ IDE
  • Java amžinai! 12 „Java“ ilgalaikio dominavimo raktų
  • „Java“ prieš „Node.js“: epinė kova už kūrėjo minčių pasidalijimą