Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The rise of server-side JavaScript

The rise of server-side JavaScript

A look at the history of SSJS, all the way from Netscape Enterprise Server to Node.JS and beyond

Guillermo Rauch

June 10, 2012
Tweet

More Decks by Guillermo Rauch

Other Decks in Programming

Transcript

  1. “Netscape Enterprise Server is the first Web server to support

    the Java and JavaScript programming languages, enabling the creation, delivery and management of live online applications” Sunday, June 10, 12
  2. “Netscape Enterprise Server […] supports JavaScript, which enables users to

    build applications that run on either the client or server anywhere on the network” Sunday, June 10, 12
  3. <html> <head> <title> Hello World </title> </head> <body> <h1> Hello

    World </h1> <p>Your IP address is <server>write(request.ip);</server> Sunday, June 10, 12
  4. Very similar to PHP: request = $_POST + $_SERVER client

    = $_SESSION server = $_SERVER Sunday, June 10, 12
  5. My name is John My name is John User A

    User B Sunday, June 10, 12
  6. My name is John My name is John User A

    User B #1 #1 Sunday, June 10, 12
  7. My name is John My name is John User A

    User B #1 #1 concurrently Sunday, June 10, 12
  8. My name is John My name is John User A

    User B #1 #1 concurrently My name is John Hello Sunday, June 10, 12
  9. My name is John My name is John User A

    User B #1 #1 concurrently My name is John Hello My name is John Doe Sunday, June 10, 12
  10. My name is John My name is John User A

    User B #1 #1 concurrently My name is John Hello My name is John Doe 1. Go to position 0 and remove 10 characters Sunday, June 10, 12
  11. My name is John My name is John User A

    User B #1 #1 concurrently My name is John Hello My name is John Doe 1. Go to position 0 and remove 10 characters 2. Add “Hello” at position 0 Sunday, June 10, 12
  12. My name is John My name is John User A

    User B #1 #1 concurrently My name is John Doe { “rev”: 1, “ops“: [ { “type“: “delete”, “pos”: 0, “length”: 10 } , { “type“: “add”, “pos”: 0, “text”: “Hello” } ]} Sunday, June 10, 12
  13. My name is John My name is John User A

    User B #1 #1 concurrently { “rev”: 1, “ops“: [ { “type“: “delete”, “pos”: 0, “length”: 10 } , { “type“: “add”, “pos”: 0, “text”: “Hello” } ]} { “rev”: 1, “ops“: [ { “type“: “add”, “text”: “ Doe”, “pos”: 15 } ]} Sunday, June 10, 12
  14. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position 15 Sunday, June 10, 12
  15. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 1. Add “ Doe” at position 15 || Sunday, June 10, 12
  16. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position 10 Sunday, June 10, 12
  17. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position (15 - 10 + 5) Sunday, June 10, 12
  18. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position (15 - 10 + 5) 1 Sunday, June 10, 12
  19. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position (15 - 10 + 5) 2 Sunday, June 10, 12
  20. 1. Go to position 0 and remove 10 characters 2.

    Add “Hello” at position 0 3. Add “ Doe” at position 10 Sunday, June 10, 12
  21. Node eventually surpasses Rails in numbers of followers on GH,

    then the most watched project Sunday, June 10, 12
  22. Flexibility, leanness and abundance of choice can make the task

    of choosing the best modules hard Sunday, June 10, 12
  23. Others introduce “transpilers” that add new operators to make async

    code more readable (IcedCoffeeScript) Sunday, June 10, 12
  24. Node clones continue to appear in other languages: Lua, C++11,

    Java, Haskell, PHP (!) Sunday, June 10, 12
  25. Node clones continue to appear in other languages: Lua, C++11,

    Java, Haskell, PHP (!) Sunday, June 10, 12