3. Why JavaScript matters Large pool of programmers Large corporations throw a lot of money at making it more efficient. V8 (in Google Chrome) is one of the fastest dynamic engines. Universal language (every web programmer knows it - ruby, python, php etc.)
4. Node.JS It is a set of non-blocking APIs for the OS, built on top of V8 interpreter. It is a command line tool, mostly for Linux. You download a tarball, compile and install the source. It let's you run JavaScript programs by typing 'node my_app.js' in your terminal. HTTP/S is a first-class citizen. CommonJS module system.
5. Asynchronous, Event-based JavaScript is single threaded Everything runs in parallel, except your code. You don't have to worry about code accessing the same data structures at the same time. Node.JS uses async mechanisms of the underlying OS (epoll, libeio) It’s natural to write it in JS (closures, etc).
7. Why it’s good It’s JavaScript – mentioned before + Code reuse (shared codebase with client side) Modern, unified language CommonJS module system Large, easily accessible library of modules
8. Why it’s good Efficiency (time+memory): no thread switching/process switching costs + epoll + libev + libeio Conceptually easier - no multithreading issues. Massive concurrency.
9.
10. Fast development pace Large active community 1754 packages/libraries in popular package manager ~150 coders in Russia
12. Most notable modules npm: packager connect/express/ejs/jade/stylus: web stack socket.io: real-time communication with browser (WebSockets, etc) coffee-script: JavaScript 2.0 jsdom+vows+zombie: Unit tests + browser emulation
13. Socket.IO Library to simplify implementation of realtime communication with different browsers. WebSockets Flash Long polling Polling Users don’t need to know about it. A lot of connections can be kept due to Node.
14. Unsolved problems No complete easy, standard solution for servers Single thread -> single core. No standard solution for CPU-intensive tasks.