Ohjelmointi

Java 20-vuotiaana: Kuinka se muutti ohjelmointia ikuisesti

Muistaa, millainen ohjelmointimaailma oli vuonna 1995, ei ole helppo tehtävä. Esimerkki olio-ohjelmoinnista oli hyväksytty, mutta harvoin harjoiteltu paradigma, jossa suurin osa niin sanotuiksi olio-ohjelmiksi hyväksytyistä ohjelmista oli vähän enemmän kuin uudelleenmerkitty C-koodi, jota käytettiin >> sijasta printf ja luokassa sijasta rakenne. Noina päivinä kirjoittamamme ohjelmat tyhjensivät ytimen rutiininomaisesti osoittimen aritmeettisten virheiden vuoksi tai muistin loppu vuotojen vuoksi. Lähdekoodia ei tuskin voitu siirtää Unixin eri versioiden välillä. Saman binaarin käyttäminen eri prosessoreilla ja käyttöjärjestelmissä oli hullua puhetta.

Java muutti kaiken sen. Vaikka käyttöympäristöstä riippuva, ​​manuaalisesti allokoitu, menettelyllinen C-koodi pysyy kanssamme ainakin seuraavien 20 vuoden ajan, Java osoitti, että tämä oli valinta, ei vaatimus. Ensimmäistä kertaa aloimme kirjoittaa todellista tuotantokoodia alustojen välisellä, roskakorilla, olio-kielellä; ja pidimme siitä ... miljoonat meistä. Javan jälkeen tulleet kielet, etenkin C #, ovat joutuneet tyhjentämään Java: n uuden korkean palkin kehittäjien tuottavuudelle.

James Gosling, Mike Sheridan, Patrick Naughton ja muut Sunin vihreän projektin ohjelmoijat eivät keksineet suurinta osaa tärkeistä tekniikoista, jotka Java toi laajaan käyttöön. Suurin osa avainominaisuuksista, jotka he sisälsivät tuolloin nimellä Tammi, saivat alkunsa muualta:

  • Perusobjektiluokka, josta kaikki luokat laskeutuvat? Rupattelu.
  • Vahva staattinen tyyppitarkistus kääntöhetkellä? Ada.
  • Useita käyttöliittymiä, yksi toteutusperintö? Tavoite-C.
  • Sisäinen dokumentaatio? CWeb.
  • Eri alustojen välinen virtuaalikone ja tavukoodi juuri oikeaan aikaan -kokoelmalla? Smalltalk taas, etenkin Sunin itsemurde.
  • Roskakokoelma? Lisp.
  • Primitiiviset tyypit ja ohjausrakenteet? C.
  • Kaksoistyyppinen järjestelmä, jolla on ei-objektiivisia alkeellistyyppejä suorituskykyyn? C ++.

Jaava oli kuitenkin edelläkävijä uudelle alueelle. Mikään tarkistettujen poikkeusten kaltainen ei ole missään muussa kielessä ennen tai sen jälkeen. Java oli myös ensimmäinen kieli, joka käytti Unicodea alkuperäisessä merkkijonotyypissä ja itse lähdekoodissa.

Mutta Javan ydin vahvuus oli, että se rakennettiin käytännön työkaluksi työn tekemiseen. Se popularisoi hyviä aikaisempien kielten ideoita pakkaamalla ne uudelleen tavalliselle C-kooderille tuttuun muotoon, vaikka (toisin kuin C ++ ja Objective-C) Java ei ollut C: n tiukka supersarja. Juuri tämä halukkuus ei vain lisätä mutta poista myös ominaisuudet, jotka tekivät Java: sta paljon yksinkertaisemman ja helpommin opittavan kuin muut olio-C-jälkeläiset.

Javalla ei ollut (ja ei ole vielä) rakenteet, ammattiliitot, typefefitja otsikko tiedostot. Kohdekielinen kieli, jota ei ole rajoitettu vanhan koodin suorittamista koskevaan vaatimukseen, ei tarvinnut niitä. Samoin Java jätti viisaasti pois ideat, jotka oli kokeiltu ja jotka olivat löytäneet toiveita muilla kielillä: useiden toteutusten periytyminen, osoittimen aritmeettisuus ja operaattorin ylikuormitus huomattavimmin. Tämä alun perin hyvä maku tarkoittaa, että jopa 20 vuotta myöhemmin Java on edelleen suhteellisen vapaa "täällä olla lohikäärmeitä" -varoituksista, jotka pinoavat tyylioppaita edeltäjilleen.

Mutta muu ohjelmointimaailma ei ole pysähtynyt. Tuhannet ohjelmointikielet ovat nousseet siitä lähtien, kun aloitimme Java-ohjelmoinnin, mutta useimmat eivät koskaan saavuttaneet enempää kuin pienen osan kollektiivisesta huomiosta ennen kuin lopulta katosivat. Meitä myytiin Java-ohjelmassa olivat sovelmat, pienet ohjelmat, jotka juoksivat verkkosivujen sisällä ja jotka voivat olla vuorovaikutuksessa käyttäjän kanssa ja tehdä enemmän kuin näyttää staattista tekstiä, kuvia ja lomakkeita. Tänään tämä ei kuulosta kovin paljon, mutta muista - vuonna 1995 JavaScriptiä ja DOM: ia ei ollut olemassa, ja HTML-muoto, joka puhui palvelinpuolen CGI-komentosarjan kanssa Perlissä, oli uusinta tekniikkaa.

Ironista on, että sovelmat eivät koskaan toimineet kovin hyvin. Ne olivat täysin eristetty sivun sisällöstä eivätkä pystyneet lukemaan tai kirjoittamaan HTML: ää kuten JavaScript lopulta pystyi. Suojausrajoitukset estivät sovelmia olemasta vuorovaikutuksessa paikallisen tiedostojärjestelmän ja kolmansien osapuolten verkkopalvelimien kanssa. Nämä rajoitukset tekivät sovelmista sopivia vain pelkkiin peleihin ja animaatioihin. Jopa näitä vähäpätöisiä käsitteitä haittasi varhaisen selaimen virtuaalikoneiden heikko suorituskyky. Ja siihen mennessä, kun sovelmien puutteet oli korjattu, selaimet ja käyttöliittymäkehittäjät olivat jo kauan ohittaneet Javan. Flash, JavaScript ja viimeksi HTML5 kiinnittivät huomiomme, koska Java oli luvannut meille dynaamisen verkkosisällön toimittamisen tehokkaammiksi alustoiksi, mutta ei toimittanut sitä.

Silti sovelmat innoittivat meitä työskentelemään Javan kanssa, ja löysimme puhtaan kielen, joka tasoitti monia karkeita reunoja ja kipupisteitä, joiden kanssa olemme kamppailleet vaihtoehtoisina, kuten C ++. Pelkästään automaattinen roskien keräys oli sisäänpääsyn hintainen. Appletit ovat saattaneet olla ylihypattuja ja aliedostettuja, mutta se ei tarkoittanut, että Java ei ollut pirun hyvä kieli muihin ongelmiin.

Alun perin rajatylittäväksi asiakaskirjastoksi tarkoitettu Java löysi todellista menestystä palvelintilassa. Servletit, Java-palvelinsivut ja joukko yrityskeskeisiä kirjastoja, jotka ajoittain niputettiin yhteen ja tuotemerkittiin yhdessä tai toisessa hämmentävässä lyhenteessä, ratkaisivat todellisia ongelmia meille ja yrityksille. Markkinointivirheiden lisäksi Java saavutti lähes vakiotason IT-osastoilla ympäri maailmaa. (Pika: Mitä eroa on Java 2 Enterprise Editionin ja Java Platform Enterprise Editionin välillä? Jos arvasit, että J2EE on JEE: n seuraaja, sait sen täsmälleen taaksepäin.) Jotkut näistä yrityskeskeisistä tuotteista olivat raskaansarjan puolella ja innoittivat avoimesti lähdevaihtoehtoja ja lisäravinteita, kuten Spring, Hibernate ja Tomcat, mutta nämä kaikki rakennettiin aurinkopohjan päälle.

Epäilemättä tärkein yksittäinen avoimen lähdekoodin osuus Java: lle ja laajemmalle ohjelmointialalle on JUnit. Testivetoista kehitystä (TDD) oli kokeiltu aiemmin Smalltalkilla. Kuitenkin, kuten monet muut kyseisen kielen innovaatiot, TDD ei saavuttanut laajaa ilmoitusta ja hyväksymistä ennen kuin se tuli saataville Java-kielellä. Kun Kent Beck ja Erich Gamma julkaisivat JUnitin vuonna 2000, TDD nousi nopeasti muutamien ohjelmoijien kokeellisesta käytännöstä tavalliseen tapaan kehittää ohjelmistoja 2000-luvulla. Kuten Martin Fowler on sanonut, "ohjelmistokehityksen alalla niin monet eivät olleet niin paljon velkaa niin harvoille koodiriveille", ja nämä muutamat koodirivit kirjoitettiin Java-kielellä.

Kaksikymmentä vuotta perustamisestaan ​​Java ei ole enää kauhistuttava käynnistin. Siitä on tullut vakiintunut vakiintunut kieli, jota vastaan ​​kapinoidaan. Kevyemmät kielet, kuten Ruby ja Python, ovat tunkeutuneet merkittävästi Java-alueelle, varsinkin käynnistysyhteisössä, jossa kehityksen nopeus on enemmän kuin vankkuutta ja mittakaavaa - kompromissi, jota Java itse hyödynsi alkuvaiheessa, kun suorituskyky virtuaalikoneista on huomattavasti viivästynyt koottu koodi.

Java ei tietenkään seiso paikallaan. Oracle käyttää edelleen hyvin testattuja tekniikoita muilta kieliltä, ​​kuten geneeriset tiedot, autoboxing, luettelot ja viimeisimmät lambda-lausekkeet. Monet ohjelmoijat kokivat nämä ideat ensin Java-sovelluksessa. Kaikki ohjelmoijat eivät tunne Java-sovellusta, mutta tietävätkö he sen tai eivät, se on vaikuttanut jokaiseen ohjelmoijaan nykyään.

Aiheeseen liittyvät artikkelit

  • Katsaus: 4 suurta Java IDE: tä verrattiin
  • Java ikuisesti! 12 avainta Javan kestävälle dominoinnille
  • Java vs. Node.js: eeppinen taistelu kehittäjien mielenjaosta