Programmering

Java kl. 20: Hvordan det ændrede programmering for evigt

Det er ingen nem opgave at huske, hvordan programmeringsverdenen var i 1995. Objektorienteret programmering var for det første et accepteret, men sjældent praktiseret paradigme, hvor meget af det, der gik som såkaldte objektorienterede programmer, var lidt mere end omdøbt C-kode, der blev brugt >> i stedet for printf og klasse i stedet for struct. De programmer, vi skrev i disse dage, dumpede kerne rutinemæssigt på grund af aritmetiske markørfejl eller løb tør for hukommelse på grund af lækager. Kildekode kunne næppe overføres mellem forskellige versioner af Unix. At køre den samme binær på forskellige processorer og operativsystemer var en skør snak.

Java ændrede alt det. Mens platformafhængig, manuelt tildelt proceduremæssig C-kode fortsat vil være hos os i det mindste de næste 20 år, viste Java, at dette var et valg, ikke et krav. For første gang begyndte vi at skrive ægte produktionskode på et platform, indsamlet, objektorienteret sprog; og vi kunne lide det ... millioner af os. Sprog, der er kommet efter Java, især C #, har været nødt til at rydde den nye højere bjælke for udviklerproduktivitet, som Java etablerede.

James Gosling, Mike Sheridan, Patrick Naughton og de andre programmører på Sun's Green Project opfandt ikke de fleste af de vigtige teknologier, som Java bragte i udbredt anvendelse. De fleste af de nøglefunktioner, de inkluderede i det, der dengang var kendt som Oak, fandt dens oprindelse andre steder:

  • En grundlæggende objektklasse, hvorfra alle klasser stammer? Småsnak.
  • Stærk statisk typekontrol på kompileringstidspunktet? Ada.
  • Flere interface, arv med en enkelt implementering? Mål-C.
  • Integreret dokumentation? CWeb.
  • Virtuel maskine på tværs af platforme og bytekode med just-in-time kompilering? Smalltalk igen, især Suns selvdialekt.
  • Dagrenovation? Lisp.
  • Primitive typer og kontrolstrukturer? C.
  • System med dobbelt type med ikke-objekt primitive typer til ydeevne? C ++.

Java var dog banebrydende for nyt territorium. Intet som kontrollerede undtagelser er til stede på noget andet sprog før eller siden. Java var også det første sprog, der brugte Unicode i den indfødte strengtype og selve kildekoden.

Men Java's kernestyrke var, at det blev bygget til at være et praktisk værktøj til at få arbejdet gjort. Det populariserede gode ideer fra tidligere sprog ved at pakke dem om i et format, der var kendt for den gennemsnitlige C-koder, selvom Java (i modsætning til C ++ og Objective-C) ikke var et strengt supersæt af C. Faktisk var det netop denne vilje til ikke kun at tilføje men fjern også funktioner, der gjorde Java så meget enklere og lettere at lære end andre objektorienterede C-efterkommere.

Java havde ikke (og gør stadig ikke) structs, fagforeninger, skrifttyperog header filer. Et objektorienteret sprog, der ikke var bundet af et krav om at køre ældre kode, behøvede dem ikke. På samme måde udelukkede Java klogt ideer, der var blevet prøvet og fundet manglende på andre sprog: arv af flere implementeringer, markørregning og operatøroverbelastning mest mærkbart. Denne gode smag i starten betyder, at selv 20 år senere er Java stadig relativt fri for "her være drager" -advarsler, der strøer stilguiderne til sine forgængere.

Men resten af ​​programmeringsverdenen har ikke stået stille. Tusinder af programmeringssprog er steget, siden vi første gang begyndte at programmere Java, men de fleste opnåede aldrig mere end en lille brøkdel af kollektiv opmærksomhed, før de til sidst forsvandt. Hvad der solgte os på Java var applets, små programmer, der kørte inde på websider, der kunne interagere med brugeren og gøre mere end at vise statisk tekst, billeder og formularer. I dag lyder dette ikke meget, men husk - i 1995 eksisterede JavaScript og DOM ikke, og en HTML-form, der talte til et CGI-script på serversiden skrevet i Perl, var state of the art.

Det ironiske er, at applets aldrig fungerede særlig godt. De var helt isoleret fra indholdet på siden og kunne ikke læse eller skrive HTML, som JavaScript i sidste ende kunne. Sikkerhedsbegrænsninger forhindrede applets i at interagere med det lokale filsystem og tredjeparts netværksservere. Disse begrænsninger gjorde applets egnede til lidt mere end simple spil og animationer. Selv disse trivielle bevis for konceptet blev hæmmet af den dårlige ydeevne for tidlige browservirtuelle maskiner. Og da applets mangler blev rettet, var browsere og front-end-udviklere for længe siden gået Java forbi. Flash, JavaScript og senest HTML5 fangede vores øjne, da langt mere effektive platforme til levering af det dynamiske webindhold, Java havde lovet os, men ikke leverede.

Alligevel var applets det, der inspirerede os til at arbejde med Java, og hvad vi opdagede var et rent sprog, der udglattede mange af de uslebne kanter og smertepunkter, vi havde kæmpet med i alternativer som C ++. Automatisk affaldsindsamling alene var prisen for optagelse værd. Applets er muligvis blevet overhyped og underleveret, men det betød ikke, at Java ikke var et forbandet godt sprog til andre problemer.

Oprindeligt beregnet som et klientbibliotek på tværs af platforme, fandt Java reel succes i serverrummet. Servlets, Java Server Pages og en række virksomhedsfokuserede biblioteker, der med jævne mellemrum blev samlet og omdøbt i et forvirrende akronym eller et andet løste virkelige problemer for os og for erhvervslivet. Marketingfejl til side, Java opnåede næsten standardstatus i IT-afdelinger rundt om i verden. (Hurtig: Hvad er forskellen mellem Java 2 Enterprise Edition og Java Platform Enterprise Edition? Hvis du gætter på, at J2EE er efterfølgeren til JEE, har du det nøjagtigt bagud.) Nogle af disse virksomhedsfokuserede produkter var på den tunge side og inspirerede åben kildealternativer og kosttilskud som Spring, Hibernate og Tomcat, men disse er alle bygget oven på fundamentet Solnedgang.

Uden tvivl er det eneste vigtige bidrag fra open source til Java og det bredere programmeringshåndværk JUnit. Testdrevet udvikling (TDD) var blevet afprøvet tidligere med Smalltalk. Men ligesom mange andre nyheder på dette sprog opnåede TDD ikke bred varsel og vedtagelse, før det blev tilgængeligt i Java. Da Kent Beck og Erich Gamma udgav JUnit i 2000, steg TDD hurtigt fra en eksperimentel praksis med nogle få programmerere til den standard måde at udvikle software i det 21. århundrede på. Som Martin Fowler har sagt: "Aldrig inden for softwareudvikling skyldtes så mange af så mange til så få kodelinjer," og disse få kodelinjer blev skrevet i Java.

Tyve år siden starten blev Java ikke længere den skræmmende opstart. Det er blevet de forankrede etablerede andre sprog, der gør oprør mod. Lettere vægt-sprog som Ruby og Python har gjort betydelige indgreb i Java's område, især i opstartssamfundet, hvor udviklingshastigheden tæller for mere end robusthed og skala - en afvejning, som Java selv udnyttede i de tidlige dage, hvor ydeevne af virtuelle maskiner alvorligt forsinket kompileret kode.

Java står selvfølgelig ikke stille. Oracle fortsætter med at inkorporere velprøvede teknologier fra andre sprog såsom generiske, autoboxing, optællinger og senest lambda-udtryk. Mange programmører stødte først på disse ideer i Java. Ikke alle programmører kender Java, men uanset om de ved det eller ej, er hver programmør i dag blevet påvirket af det.

Relaterede artikler

  • Gennemgang: De store 4 Java IDE'er sammenlignet
  • Java for evigt! 12 nøgler til Java's vedvarende dominans
  • Java vs. Node.js: En episk kamp for udviklerens mind share