"There and back again"

A javascript Tale

https://slides.com/rkiel/deck-5/live

1995

1995

1995

Part 1

The client side

1995

Marc Andreesen

Brendan EicH

under pressure

May 1995

  • Mocha prototyped in 10 days
  •  Integrated into Navigator
  • Renamed to LiveScript

December 1995

  • Netscape & Sun close the Java deal
  • Renamed to JavaScript
  • "small client-side tasks in the browser"
  • competing browsers needed a working solution

enter MICROSOFT

Improving Javascript

part 2
The language

Standardization

ECMA making Progress

  • June 1997 --  ECMAScript 1
    • NO regexp, NO JSON, NO exceptions, missing some important built-ins
  • June 1998 -- ECMAScript 2
    • fixed some inconsistencies in the spec
  • December 1999 -- ECMAScript 3
    • big changes
    • regexp, exceptions, and some built-ins
    • wide acceptance by all the major browsers

AJAX

ecmascript 4

Doug Crockford

ECMAscript 3.1 5

Harmony

ecmascript 6 2015

  • let & const
  • arrow functions
  • Promises
  • Classes & Modules
  • Template strings
  • Object literal
  • Default parameters
  • Destructuring
  • and much more...

the tC-39 process

Stage Purpose
0 Strawman Allow input into the specification
1 Proposal Make the case for the addition
2 Draft Precisely describe the syntax and semantics using formal spec language
3 Candidate Indicate that further refinement will require feedback from implementations and users
4 Finished Indicate that the addition is ready for inclusion in the formal ECMAScript standard

ecmascript 2016

  1. Array.prototype.includes
  2. Exponentiation Operator

ecmascript 2017

  1. Async/Await Functions

  2. Shared memory and atomics

  1. Object.values/Object.entries

  2. String padding

  3. Object.getOwnPropertyDescriptors

  4. Trailing commas in function parameter lists and calls

part 3
the server side

ryan dahl

flickr

file upload progress

chrome V8 Engine

node.js

Node Release Cycle

npm -- npmjs.org

part 4
back to the client

Problems building client-side applications

  • Limited ways of running code in the browser
    • <script>alert();</script>
    • <script src="foo.js" />
       
  • Not setup for large scale development
     
  • No way to use npm packages
     
  • Cross-browser support limits language to ES 5

the early frameworks

Packaging

packaging

compilers

the newer frameworks

epilogue

1998

1 step surety

netscape enterprise server

server side javascript

resources

Primary source

History of node

history of javascript

Javascript at 20

questions?

History of JavaScript

By Rober Kiel

History of JavaScript

  • 407