GO BIG! Using JavaScript in Today’s World Sudar Muthu Research Engineer Yahoo! Labs http://sudarmuthu.com http://twitter.com/sudarmuth u
May 10, 2015
GO BIG!
Using JavaScript in Today’s WorldSudar MuthuResearch EngineerYahoo! Labs
http://sudarmuthu.comhttp://twitter.com/sudarmuthu
What is JavaScript?
Drag picture to placeholder or click icon to add
World’s most popular programming
language
Douglas Crockford - http://javascript.crockford.com/popular.html
Drag picture to placeholder or click icon to add
World’s most misunderstood programming
language
Douglas Crockford - http://javascript.crockford.com/popular.html
Who am I?
To talk about JavaScript
Drag picture to placeholder or click icon to add
Fan of Douglas Crockford
http://wp.me/p4WjA-pe
The JavaScript wedding invitation guy
;)http://wp.me/p4WjA-rK
Using JavaScript in the browser
Options
Drag picture to placeholder or click icon to add
• YUI• jQuery• MooTools• Backbone.js• Knockout.js• .. and a million others
When to use YUI
• You already know what JavaScript is
• To build full-fledged websites that have numerous components with interdependent dependencies
• You need lot of build-in widgets• Need to use design patterns• Need to have a maintainable
code
When to use jQuery
• If you are new to JavaScript• Want something that is light• Have a simple website with
lesser number of components• Need a quick solution and want
something that is easier to learn
When to use backbone.js
• Decouple data from the UI• Use a full fledged MVC in the
client side as well• Want to have multiple
views/clients (mobile, desktop, tablets etc)
• You have a clear understanding of JavaScript and also the MVC concepts
Drag picture to placeholder or click icon to add
Other special purpose libraries
Drag picture to placeholder or click icon to add
• Lime.js – HTML5 based game framework
• Processing.js – Data visualizations and interactive animations
• flot – JavaScript plotting library• Raphael – Vector graphics library
Using JavaScript in the server
Why JavaScript on the server
Drag picture to placeholder or click icon to add
• Homogenous Programming Experience
• Easy meta programming• Easy reflection• Object literals• Interpreted Langauge
What is node.js
• Event-driven• Non-blocking I/O• Asynchronous• Single-threaded• Light weight and efficient
Why node.js
Code like this
var result = db.query("select..");// use result
either blocks the entire process orimplies multiple execution stacks (threads).
Drag picture to placeholder or click icon to add
Why node.js
But a line of code like this
db.query("select..", function (result){ // use result});
allows the program to return to theevent loop immediately. No moreunnecessary threads.
Drag picture to placeholder or click icon to add
Demo
Demo of callback
// execute the callback after 2 secondssetTimeout(function () { console.log("World!");}, 2000);
// print in consoleconsole.log("Hello");
https://github.com/sudar/jsfoo/blob/master/callback.js
Demo of a server in node.jsvar http = require('http'); // require the http module
// create a serverhttp.createServer(function (req, res) { // call this function when a request is received res.writeHead(200, { 'Content-Type': 'text/plain' }); // send this as part of the response res.end('Hello World\n');}).listen(1337, "127.0.0.1"); // listen on port 1337
// debug informationconsole.log('Server running at http://127.0.0.1:1337/');
https://github.com/sudar/jsfoo/blob/master/http-server.js
When to use node.js
Drag picture to placeholder or click icon to add
• Writing highly concurrent server applications
• Sharing application logic between server and client
• Peer-to-peer web applications using websockets
• And node.js is available in Azure
Other options to consider
Drag picture to placeholder or click icon to add
• Rhino• Spidermonkey• Narwhal• Nitro
Using JavaScript in mobile applications
PhoneGap
HTML5 app platform that allows you to write native mobile applications using web technologies like HTML and JavaScript
Yes it works in Windows Phone 7 as well
When to use it?
Drag picture to placeholder or click icon to add
If you need to have one code base and develop mobile applications for
• Android• iOS• Blackberry• Window Phone• etc
Using JavaScript in desktop applications
Some options to consider
Drag picture to placeholder or click icon to add
• Windows metro apps• Yahoo Konfabulator• Cappuccino• Titanium• Couch DB
Other exoctic use cases
Drag picture to placeholder or click icon to add
• Control USB hid devices – node-hid
• Control Serial devices – node-serialport
• Control Arduino – noduino• Control Powerpoint presentations
Well, it’s all fine, but I don’t like
JavaScript Syntax
Then use
CoffeeScript
Demo
QuestionsSudar Muthu
http://sudarmuthu.comhttp://twitter.com/sudarmuthu