3. UNIVERSAL
PRAISE FOR
JAVASCRIPT..
Thursday, June 23, 2011
4. āI was convinced that
we needed to build-in
a programming
language, but the
developers, Tim ļ¬rst,
were very much
opposed. It had to
remain completely
declarative. Maybe, but
the net result is that
the programming-
vacuum ļ¬lled itself
with the most horrible
kludge in the history
of computing:
Javascript.ā
-Robert Cailliau
Thursday, June 23, 2011
6. WHY DID W E HATE
JAVASCRIPT SO MUCH?
Thursday, June 23, 2011
7. JAVASCRIPT...
THE BA D PARTS
ā¢ Incompatible Implementations (Not
mentioning anyone related to this
building)
ā¢ OO, but not a classical inheritance
ā¢ Initial Implementation were slow
ā¢ It looked like a silly toy next to Flash
ā¢ No AJAX to start with (while Flash did)
Thursday, June 23, 2011
8. THE B IGGEST R EASON:
ā¢ People didnāt know how to Program
in it.
ā¢ People didnāt know how to Program
large, well-designed systems in it
(And many didnāt think it was
possible)
Thursday, June 23, 2011
9. WHAT
CHANGED?
The āGmailā and āGoogle
Maps Eraā
starting in 2004-2005
People saw what you could
do with large scale systems
built primarily in
JavaScript
Thursday, June 23, 2011
10. WHAT
CHANGED?
Followed quickly by the
āFramework Eraā
2005-Today
Popular, well supported
frameworks that made writing
cross-browser, dynamic code a
breeze.
Prototype, YUI, GWT,
MooTools, and jQuery
Thursday, June 23, 2011
11. WHAT
CHANGED?
Finally the āChromeā era
Late 2008-Today
Chrome was released and
set a high bar for Javascript
performance w/ V8 that lit
a ļ¬re in other Browser
makers.
http://news.cnet.com/
8301-1001_3-10030888-92.html
Thursday, June 23, 2011
12. SOME A WESOME T HINGS YOU
CAN D O IN JAVASCRIPT...
ā¢ Dynamically Check and
Uncheck checkboxes
ā¢ Load HTML DYNAMICALLY
and Asynchronously via
A-J-A-X
ā¢ Load images with a āLightboxā
Eļ¬ect
Thursday, June 23, 2011
14. THE REA L AWESOM E THINGS
YOU CAN DO IN JAVASCRIPT...
ā¢ cross-browser, cross-platform Game Development.
(& interactive data visualization)
ā¢ Mobile + Desktop App Development
ā¢ Audio processing and rendering
ā¢ Hardware accelerated 3D in the Browser
ā¢ Oļ¬ine Applications
ā¢ Server Side Development
Thursday, June 23, 2011
15. THE ADVANTAGES
OF JAVASCRIPT
ā¢ Extremely low āCeremonyā language
ā¢ Most accessible language in world -
toolchain installed on almost 100% of
computers in the world.
ā¢ Hello World!
<script>
alert(āHello World!ā);
</script>
Thursday, June 23, 2011
16. ATWOODS LAW
āI propose a corollary ... I'll call
Atwood's Law: any application that
can be written in JavaScript, will
eventually be written in JavaScript.ā
-Jeļ¬ Atwood (2007)
Thursday, June 23, 2011
17. WE ARE ENTERING
THE āJAVASCR IPT AGEā
1991-1999: The HTML Age
2000-2009: The LAMP Age
2010-??: The Javascript Age
The Javascript age is about event streams. Modern web pages
are not pages, they are event-driven applications through which
information moves.
āThe Javascript age brings us closer to a web that is not a global
digital library, but a global digital nervous system, whose
implications we are only beginning to apprehend.ā
-http://metamarketsgroup.com/blog/node-js-and-the-javascript-
age/
Thursday, June 23, 2011
18. ACTUALLY A COR OLLARY TO
āTHE RULE OF LEAST POWERā
http://www.w3.org/2001/tag/doc/leastPower.html
Computer Science spent the last forty years making languages which were
as powerful as possible. Nowadays we have to appreciate the reasons for
picking not the most powerful solution but the least powerful. The less
powerful the language, the more you can do with the data stored in that
language. If you write it in a simple declarative from, anyone can write a
program to analyze it. If, for example, a web page with weather data has
RDF describing that data, a user can retrieve it as a table, perhaps average
it, plot it, deduce things from it in combination with other information. At
the other end of the scale is the weather information portrayed by the
cunning Java applet. While this might allow a very cool user interface, it
cannot be analyzed at all. The search engine ļ¬nding the page will have no
idea of what the data is or what it is about. The only way to ļ¬nd out what a
Java applet means is to set it running in front of a person.
Thursday, June 23, 2011
19. JAVASCRIPT IN
A NUTSHELL
ā¢ 5 Basic Types: Bool, Number
(ļ¬oat), String, Array, Object
ā¢ + Function as ļ¬rst class objects.
ā¢ Very loosely typed
ā¢ Easily meta-programmed
ā¢ Support for Closures (Great for
Async Development)
Thursday, June 23, 2011
20. DEBUGGING
JAVASCRIPT
ā¢ Aka Firebug + Built-in clones
ā¢ Now have an environment that
rivals the best IDEās
ā¢ Inspection, Console, Step
debugging, Network, Proļ¬ling
ā¢ http://cykod.github.com/
AlienInvaders/
Thursday, June 23, 2011
21. JAVASCRIPT IS A
LAX LANGUAGE - HOW
ABOUT SOME RIGOR?
Your javascript code will only be as
rigorous as you are.
Thursday, June 23, 2011
22. CONSIDER
LINTāING
http://javascriptlint.com/
http://jslint.com/
Browser (or Command line
tool by Matthias Miller)
built on the work done by
Douglas Crockford (āJS, the
good partsā)
Thursday, June 23, 2011
23. LEARNING
JAVASCRIPT
Start with your āCrockfordā
aka āJavascript: the Good
Partsā
JavaScript patterns builds
on the basics.
http://
javascript.infogami.com/
Javascript_in_Ten_Minutes
Thursday, June 23, 2011
24. AUTOMATED
TESTING
FRAMEWORKS
ā¢ QUnit - used in JQuery
ā¢ Jasmine - Created by Pivotal
Labs, Inspired by RSpec
Thursday, June 23, 2011
25. QUNIT
By John Resig, Founder of JQuery
http://docs.jquery.com/Qunit
test("a basic test example", function() {
ok( true, "this test is fine" );
var value = "hello";
equals( "hello", value, "We expect value to be hello" );
});
module("Module A");
test("first test within module", function() {
ok( true, "all pass" );
});
Thursday, June 23, 2011
26. JASMINE
From Pivotal Labs, Successor to JsUnit,
inspired (partly) by RSpec
http://pivotal.github.com/jasmine/
describe('Calculator', function () {
var counter = 0
it('can add a number', function () {
counter = counter + 2; // counter was 0 before
expect(bar).toEqual(2);
});
it('can multiply a number', function () {
counter = counter * 5; // counter was 2 before
expect(bar).toEqual(10);
});
});
Thursday, June 23, 2011
27. JAVASCRIPT
(AKA HTML5)
GAME
DEVELOPMENT
(Akihabara running on
iPhone, Android, Firefox, ...)
http://www.kesiev.com/
akihabara/demo/game-
solitude.html
Thursday, June 23, 2011
28. IMPACT.JS
NOW RUNS
BROWSER +
IOS NATIVE
Native Hardware-
Accelerated Compatibility
Layer.
Biolab Disaster is in the
App Store.
All Javascript.
Thursday, June 23, 2011
29. JAVASCRIPT
GAME DEV
ā¢ Cross browser, Cross
platform, game development
from a single codebase.
ā¢ No Curator (No App store)
ā¢ Web Sockets, Realtime
development
Thursday, June 23, 2011
30. Q1 2010 Q4 2010 Q2 2011
STATE O F HTML5 GAME DEV
Thursday, June 23, 2011
31. AUDIO
PROCESSING
ā¢ So far only FF4
ā¢ APIās for reading and writing audio
ā¢ Chrome developing a much more
feature-rich (& complicated)
version.
Thursday, June 23, 2011
33. 3 D IN THE BROWSEaRm/aquarium.html
u riu ooglecode.com/hg/aq
http://webglsamples.g oc ks/spacerocks.html
g lecode.com/hg/spacer
ht tp://webglsamples.goo
Thursday, June 23, 2011
34. WEBGL
(OPENGL ES2.0)
IS IN PRODUCTION
ā¢ Chrome Stable
ā¢ Firefox 4
ā¢ Webkit Nightlyās
ā¢ an Opera Preview Release
ā¢ No IE (Sorry) - Silverlight only
Thursday, June 23, 2011
35. MOBILE ā HTML5ā FE ATURES EC)
THA N JUST THE HTML5 SP
(HTML5 HAS COME TO MEAN A LOT MORE
ā¢ CSS3 - visual goodies, transitions
ā¢ Audio, Video (Limited)
ā¢ WebSockets
ā¢ Local Storage
ā¢ Oļ¬ine Storage
ā¢ Canvas, SVG
ā¢ New Events (touch, orientation, accel)
ā¢ Geolocation (via GPS)
ā¢ All supported on Mobile Webkit stack
Thursday, June 23, 2011
36. MOBILE
FRAMEWORKS
jQuery Mobile + Sencha
Touch are two methods of
creating a ānativeā feeling
experience.
Sencha:
http://bit.ly/jtWCxR
jQueryMobile:
http://bit.ly/mKBVgt
Thursday, June 23, 2011
37. OFFLINE APPL ICATIONS
ā¢ Google Gears had been around for
a while (where we got a lot of cool
stuļ¬ for HTML5)
ā¢ Replaced by HTML5 support for
cache manifest
ā¢ http://diveintohtml5.org/
oļ¬ine.html
Thursday, June 23, 2011
38. DESKTOP +
MOBILE APP IN JS?
REALLY?
ā¢ Yes, and it works,
reasonably well
ā¢ http://www.appcelerator.com/
ā¢ http://www.phonegap.com/
Thursday, June 23, 2011
39. TITANIUM / APPCELERATOR
ā¢ Build your UI in Javascript
ā¢ Assign properties like width, height, backgrounds,
etc.
ā¢ Access native functionality like camera, audio, etc.
ā¢ Releasing a Web/HTML5 version as well.
ā¢ A little Buggy, poorly docād.
ā¢ Slightly painful building UI components.
Thursday, June 23, 2011
41. PHO NE GAP
ā¢ Build normal HTML Apps
ā¢ Works well with Sencha Touch
and jQuery mobile.
ā¢ Access to native features via
javascript objects.
Thursday, June 23, 2011
42. JAVASCRIPT ON
THE SERVER
ā¢ Got a huge boost when Google
released V8 as an easily
embeddable server
ā¢ Node.js is the big project right
now.
ā¢ Single threaded, async framework
ā¢ Actually pretty Friggin fast.
Thursday, June 23, 2011
43. SIMPLE NODE.JS
SERVER
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');
Thursday, June 23, 2011
44. BONUS USE
CASE
ā¢ Browser plugins - just HTML,
CSS, and Javascript
ā¢ http://code.google.com/
chrome/extensions/
getstarted.html
Thursday, June 23, 2011
45. DEMO TIME
https://mozillademos.org/
demos/nocomply/
demo.html
Thursday, June 23, 2011