Programmering

Java klokka 20: Hvordan det endret programmering for alltid

Å huske hvordan programmeringsverdenen var i 1995 er ingen enkel oppgave. Objektorientert programmering, for en, var et akseptert, men sjelden praktisert paradigme, med mye av det som gikk som såkalte objektorienterte programmer, var lite mer enn merket C-kode som brukte >> i stedet for printf og klasse i stedet for struct. Programmene vi skrev de dagene, dumpet kjerne rutinemessig på grunn av pekere aritmetiske feil eller gikk tom for minne på grunn av lekkasjer. Kildekoden kunne knapt porteres mellom forskjellige versjoner av Unix. Å kjøre det samme binærsystemet på forskjellige prosessorer og operativsystemer var gal snakk.

Java endret alt det. Mens plattformavhengig, manuelt tildelt, prosessuell C-kode vil fortsette å være hos oss de neste 20 årene, viste Java at dette var et valg, ikke et krav. For første gang begynte vi å skrive ekte produksjonskode på et plattformsoppsamlet, objektorientert språk; og vi likte det ... millioner av oss. Språk som har kommet etter Java, spesielt C #, har måttet rydde den nye høyere linjen for utviklerproduktivitet som Java etablerte.

James Gosling, Mike Sheridan, Patrick Naughton og de andre programmererne på Sun’s Green Project oppfant ikke de fleste av de viktige teknologiene som Java brakte i utstrakt bruk. De fleste av nøkkelfunksjonene de inkluderte i det som da ble kjent som Oak, fant sin opprinnelse andre steder:

  • En base Objektklasse som alle klassene stammer fra? Småprat.
  • Sterk statisk typekontroll på kompileringstidspunktet? Ada.
  • Flere grensesnitt, arv med én implementering? Mål-C.
  • Integrert dokumentasjon? CWeb.
  • Plattform virtuell maskin og byte kode med just-in-time kompilering? Smalltalk igjen, spesielt Suns selvdialekt.
  • Søppelsamling? Lisp.
  • Primitive typer og kontrollstrukturer? C.
  • Dobbelt type system med ikke-objekt primitive typer for ytelse? C ++.

Java var imidlertid banebrytende for nytt territorium. Ingenting som avmerkede unntak er tilstede på noe annet språk før eller siden. Java var også det første språket som brukte Unicode i den innfødte strengtypen og selve kildekoden.

Men Java sin kjernestyrke var at den ble bygget for å være et praktisk verktøy for å få arbeidet gjort. Det populariserte gode ideer fra tidligere språk ved å pakke dem om i et format som var kjent for den gjennomsnittlige C-koderen, selv om Java (i motsetning til C ++ og Objective-C) ikke var en streng supersett av C. Faktisk var det nettopp denne viljen til ikke bare å legge til men fjern også funksjoner som gjorde Java så mye enklere og lettere å lære enn andre objektorienterte C-etterkommere.

Java hadde ikke (og har fortsatt ikke) structs, fagforeninger, typedefs, og Overskrift filer. Et objektorientert språk som ikke var bundet av et krav om å kjøre eldre koder, trengte dem ikke. På samme måte har Java klokt utelatt ideer som har blitt prøvd og funnet lyst på andre språk: arv med flere implementeringer, peker-aritmetikk og operatøroverbelastning mest merkbart. Denne gode smaken i begynnelsen betyr at selv 20 år senere er Java fremdeles relativt fri for "her være drager" -varslene som forsøpler stilguider for forgjengerne.

Men resten av programmeringsverdenen har ikke stått stille. Tusenvis av programmeringsspråk har steget siden vi først begynte å programmere Java, men de fleste oppnådde aldri mer enn en liten brøkdel av kollektiv oppmerksomhet før de til slutt forsvant. Det som solgte oss på Java var appletter, små programmer som kjørte på websider som kunne samhandle med brukeren og gjøre mer enn å vise statisk tekst, bilder og skjemaer. I dag høres dette ikke så mye ut, men husk - i 1995 eksisterte ikke JavaScript og DOM, og et HTML-skjema som snakket med et CGI-skript på serversiden skrevet i Perl var toppmoderne.

Ironien er at appletter aldri fungerte veldig bra. De var helt isolert fra innholdet på siden, og klarte ikke å lese eller skrive HTML slik JavaScript til slutt kunne. Sikkerhetsbegrensninger forhindret applets fra å samhandle med det lokale filsystemet og tredjeparts nettverksservere. Disse begrensningene gjorde at applets passer til lite mer enn enkle spill og animasjoner. Selv disse trivielle konseptbevisene ble hemmet av den dårlige ytelsen til tidlige nettlesermaskiner. Og da appletenes mangler ble rettet, hadde nettlesere og front-end-utviklere for lengst gått forbi Java. Flash, JavaScript og sist HTML5 fanget øynene våre som langt mer effektive plattformer for å levere det dynamiske webinnholdet Java hadde lovet oss, men ikke klarte å levere.

Appletter var likevel det som inspirerte oss til å jobbe med Java, og det vi oppdaget var et rent språk som glattet ut mange av de grove kantene og smertepunktene vi hadde slitt med i alternativer som C ++. Automatisk søppeloppsamling alene var verdt inngangsprisen. Applets kan ha blitt overhypet og underlevert, men det betydde ikke at Java ikke var et jævla godt språk for andre problemer.

Opprinnelig ment som et plattformklientbibliotek, fant Java virkelig suksess i serverrommet. Servlets, Java Server Pages og en rekke bedriftsfokuserte biblioteker som med jevne mellomrom ble samlet sammen og ommerket i ett eller annet forvirrende akronym, løste virkelige problemer for oss og for virksomheten. Når det gjelder markedsføringsfeil, oppnådde Java status som nesten standard i IT-avdelinger over hele verden. (Rask: Hva er forskjellen mellom Java 2 Enterprise Edition og Java Platform Enterprise Edition? Hvis du gjettet at J2EE er etterfølgeren til JEE, fikk du den nøyaktig bakover.) Noen av disse bedriftsfokuserte produktene var på tungvektsiden og inspirerte åpen kildealternativer og kosttilskudd som Spring, Hibernate og Tomcat, men disse er alle bygget på toppen av fundamentet Solnedgang.

Uten tvil er det viktigste bidraget fra open source til Java og det bredere programmeringshåndverket JUnit. Testdrevet utvikling (TDD) hadde blitt prøvd tidligere med Smalltalk. Imidlertid, som mange andre nyvinninger av dette språket, oppnådde TDD ikke utbredt varsel og adopsjon før det ble tilgjengelig på Java. Da Kent Beck og Erich Gamma ga ut JUnit i 2000, steg TDD raskt fra en eksperimentell praksis med noen få programmerere til den vanlige måten å utvikle programvare på i det 21. århundre. Som Martin Fowler har sagt: "Aldri innen programvareutvikling skyldtes så mange av så mange få kodelinjer," og de få kodelinjene ble skrevet på Java.

Tjue år siden starten, er Java ikke lenger den skremmende oppstarten. Det har blitt de forankrede sittende andre språk som gjør opprør mot. Språk med lettere vekt som Ruby og Python har gjort betydelige inngrep i Java-territoriet, spesielt i oppstartssamfunnet der utviklingshastigheten teller mer enn robusthet og skala - en avveining som Java selv utnyttet i de tidlige dagene da ytelse av virtuelle maskiner med alvorlig forsinket kompilert kode.

Java står selvfølgelig ikke stille. Oracle fortsetter å innarbeide velprøvde teknologier fra andre språk, som generikk, autoboksing, enumerasjoner og sist lambdauttrykk. Mange programmerere møtte disse ideene først på Java. Ikke alle programmerere kjenner Java, men uansett om de vet det eller ikke, har hver programmerer i dag blitt påvirket av det.

Relaterte artikler

  • Gjennomgang: De store 4 Java IDEene sammenlignet
  • Java for alltid! 12 nøkler til Javas varige dominans
  • Java vs. Node.js: En episk kamp for utviklerens tankedel
$config[zx-auto] not found$config[zx-overlay] not found