Hur JavaScript hjälpte till att omvandla webben
NyheterGanska mycket var du än går online nu, använder du en webbsida med viss intelligens bakom den.
Det kan vara något så enkelt som att registrera det faktum att du tittar på sidan, det kan spåra dina gillar och ogillar, eller det kan ge en animering för att göra upplevelsen av att visa sidan bättre och mer interaktiv.
Oavsett vad som händer under huven är det troligtvis JavaScript-kod som gör jobbet.
Projektmocka
Tillbaka 1995 anställde Netscape Brendan Eich, då vid MicroUnity Systems Engineering, för att hjälpa till med ett nytt projekt som heter Mocha för nästa version av Netscape Navigator-webbläsaren. Sun Microsystems hade bara nyligen lanserat Java-applets - små program som kunde köras i en webbläsare - men det behövde någon form av "limkod" för att webbläsaren skulle tillåta dem att springa.
Eich bestämde sig för att ett enkelt skriptspråk skulle vara svaret. Han valde för enkelhet, för att han insåg att det troligtvis inte skulle vara programmerare som skapar en webbsida med Java-appletar, men webbdesigners. Dessa designers skulle använda Java-appletter som svarta lådor som de skulle behöva enkelt binda in på sidan.
Han började arbeta på ett löst skrivet tolkat språk som han så småningom kallade LiveScript. Eftersom hans avsedda användare inte var programmerare undvikde han standardutvecklingsnätverk som kompilatorer och ett formellt objektorienterat system och gjorde språket förlåtande av mindre misstag att ett mer formellt språk skulle signalera som fel och vägra att springa.
Han lade också till krokar för kod skrivet på språket för att interagera med sidans HTML-markup så att konstruktörer kunde manipulera former, bilder och liknande.
Strax före Sun Microsystems och Netscape tillkännagav det nya språket i december 1995, döptes det till "JavaScript" i ett marknadsföringsförsök för att starkare betona att dess syfte var att vara värd för Java-appletter. Detta var, för att uttrycka det mildt, katastrofalt: JavaScript är inte Java och, förutom vissa ytliga synaktiska likheter, fungerar inte som Java.
Det här namngivningsbeslutet har lett till fler problem för programmerare än någon annan, eftersom de har förväntan på att "Java" i JavaScript betyder Java som de brukar använda på serverns sida. Beslutet var också en katastrof eftersom webdesigners och programmerare ganska ignorerade Java-appletar, och istället använde JavaScript för att manipulera element på sidan (och det måste sägas att det i de tidiga dagarna mestadels var bildbyte: återgivningsmotorn i äldre webbläsare var inte upp till uppgiften att snabbt göra dynamiska element).
Eftersom det inte var något behov av en kompilator, i kombination med det faktum att du kunde kopiera och klistra in skript från andra webbplatser till dig själv med ganska mycket inga ändringar, och att testa ett skript var så enkelt (ladda bara sidan, i huvudsak) menade att JavaScript tog en häpnadsväckande grad.
"Real" programmerare avskedade det som en leksak först - ZX81 på webben - men det blev snart allestädes närvarande, särskilt när Microsoft kom in på spelet.
Microsoft wades in
Microsofts svar var typiskt för tiden: det släppte ett skriptspråk baserat på Visual Basic kallat VBScript. Det var starkt knutet till Internet Explorer och till Windows.
Eftersom det inte var för allas smak (Netscape Navigator vann vinnarkrigarna vid den tiden) introducerade Microsoft sin egen version av JavaScript, kallad, av varumärkesskäl, JScript. JavaScript var ett varumärke som tillhör Sun Microsystems vid den tiden och ägs nu av Oracle Corporation.
Problemet var att Netscape styrde webbläsarutrymmet och var berömd för att snabbt och tydligt introducera nya funktioner och alternativ. Från den tiden har vi själva JavaScript, cookies, ramar och dåligt genomtänkt HTML-markup (vem kan glömma attributet "blink"?).
Fram till IE3 spelade Microsoft uppspelning i JavaScript-rymden. Så småningom, med push från IE3-användare, var Netscape och Sun tvungna att söka hjälp av European Computer Manufacturers Association (ECMA) för att standardisera språket, så webbutvecklare och designers skulle ha ett visst hopp om att skriva kod och köra det utan förändringar i de stora två webbläsarna. Det ledde till ECMAScript-standarden 1997 (den tredje versionen, som publicerades 1999, varade i ca 10 år). Ja, JavaScript är också känt som ECMAScript.
Dynamisk HTML
Nästa problem att drabbas av JavaScript och webbläsarens utrymme var Dynamic HTML (DHTML) och Document Object Model, eller DOM.
När Netscape och Microsoft släppte version 4.0 av sina respektive webbläsare gav de bättre tillgång till attribut och element på en webbsida. Denna åtkomst gjordes genom ett bibliotek som kallades DOM, en hierarkisk träddatastruktur som representerade webbsidan som en uppsättning objekt där vissa är syskon till andra och andra är barn (eller alternativt föräldrar) till andra element.
Figuren ovan visar ett enkelt HTML-dokument som representeras som ett DOM-träd. Här kan du se att elementet "huvud" och "kropp" är syskon, medan "h1" -elementet är ett barn av "kropp" (och därför är "kropp" förälder till "h1"). Textnoden längst ner är också en del av DOM, om än inte exakt som HTML-element.
Tyvärr, trots att de allmänna idéerna om hierarkin och DOM-elementnamnen var gemensamma över IE och Navigator, skilde Microsoft och Netscape sig på hur attributen för element skulle nås. Även om alla nu var ganska överens om hur skriptspråket fungerade, visade det sig att det var en mardröm som använde DHTML med det, det är fortfarande med oss idag.
Den som någonsin har skrivit javascript-koden med webbläsare känner till den konstiga vägen för inkompatibilitet mellan webbläsarens DOM. När Internet Explorer och Netscape 4.0 kom ut, kan du snart få bibliotek som försökte göra Netscape agera som IE och vice versa.
Andra utvecklare släppte bibliotek som inkapslade gemensamheten mellan DOM, men det innebar i allmänhet att man försvann några av de bättre delarna av varje DOM. Denna delning mellan DOM: erna ledde till webbplatser som fungerade bra i en webbläsare och mindre i den andra.
Webbläsarkrigen intensifierades som Microsoft, Netscape och andra, tillsammans med webbstandardkroppen W3C, försökte standardisera DOM. Processen var lång, och långsamt men säkert blev Microsofts Internet Explorer den framträdande webbläsaren.
Sedan IE levererades som en del av Windows, ledde det också till monopolförsök mot Microsoft, och uppkomsten av Mozilla och andra webbläsare som Firefox och Opera. JavaScript själv stannar ganska konstant under hela denna period av förankring och konsolidering sedan den tredje upplagan av ECMAScript (som alla använde) visade sig vara mycket stabil.
Det fanns stora förhoppningar om den fjärde versionen av JavaScript, inklusive en "riktig" objektorienterad klassmodell, men i slutändan visade planerna sig för ambitiösa och de tappades för en enklare femte upplaga - ECMAScript 5 - som integreras i webbläsare tolkar (Firefox 4 och IE9 båda stöder ECMAScript 5).