SlideShare a Scribd company logo
1 of 37
Download to read offline
JAVASCRIPT




Monday, April 11, 2011
Me, Myself and I


               Mobisoft / StrataGen / DDS           TUT
               Senior Software Architect      Researcher
                                            Ph.D. student




Monday, April 11, 2011
JavaScript




                           Groke




                         Frameworks




Monday, April 11, 2011
JavaScript:
                         The World's Most Misunderstood
                             Programming Language




Monday, April 11, 2011
“JavaScript is the most popular programming language
            in the world”




Monday, April 11, 2011
“JavaScript is the most popular programming language
            in the world”

            ...“but it’s also the least popular programming language
            in the world”

                                            - Douglas Crockford




Monday, April 11, 2011
The (mis)conception
                         “It’s a toy language”

                                                 “Even designers can do it”

                “What good is a scripting language anyway”




Monday, April 11, 2011
The (mis)conception
                         “It’s a toy language”

                                                 “Even designers can do it”

                “What good is a scripting language anyway”




                             Strong Typing vs. Strong Testing


Monday, April 11, 2011
The Culprit




Monday, April 11, 2011
“Programmers are artists and they
                          don’t want anybody to mandate
                              which language to use”




Monday, April 11, 2011
“Programmers are artists and they
                          don’t want anybody to mandate
                              which language to use”


                              “Lisp in C’s Clothing”




Monday, April 11, 2011
“Programmers are artists and they
                          don’t want anybody to mandate
                              which language to use”


                              “Lisp in C’s Clothing”


                              Pitfalls in the Language




Monday, April 11, 2011
“Programmers are artists and they
                          don’t want anybody to mandate
                              which language to use”


                              “Lisp in C’s Clothing”


                              Pitfalls in the Language


                                   Typecasting



Monday, April 11, 2011
The Jungle

                           ECMAScript

                            JavaScript

                             JScript

                           ActionScript

                              Huh?


Monday, April 11, 2011
The Jungle
                                      ECMAScript


                         JavaScript     JScript    ActionScript




Monday, April 11, 2011
Mocha




Monday, April 11, 2011
Mocha

                         LiveScript




Monday, April 11, 2011
Mocha

                         LiveScript

                         JavaScript




Monday, April 11, 2011
Mocha

                         LiveScript

                         JavaScript

                                      JScript




Monday, April 11, 2011
Mocha

                                      LiveScript

                                      JavaScript

                         ECMAScript                JScript




Monday, April 11, 2011
Mocha

                                      LiveScript

                                      JavaScript

                         ECMAScript                JScript
                            1,2,3




Monday, April 11, 2011
Mocha

                                       LiveScript

                                       JavaScript

                         ECMAScript                  JScript
                            1,2,3
                                      ActionScript




Monday, April 11, 2011
Mocha

                                       LiveScript

                                       JavaScript

                         ECMAScript                  JScript
                            1,2,3
                                      ActionScript
                            ES4?




Monday, April 11, 2011
Mocha

                                          LiveScript

                                          JavaScript

                           ECMAScript                   JScript
                              1,2,3
                                         ActionScript
                                  ES4?
                         ES 3.1      ES Harmony




Monday, April 11, 2011
JavaScript as a general-
                          purpose programming
                               language?



Monday, April 11, 2011
Monday, April 11, 2011
The Pioneers
                                 Helma
                                Phobos
                                 Jaxer
                             KDE scripting
                         Mac Dashboard widgets
                         Google Desktop gadgets




Monday, April 11, 2011
The Pioneers
                                 Helma
                                Phobos
                                 Jaxer
                             KDE scripting
                         Mac Dashboard widgets
                         Google Desktop gadgets




Monday, April 11, 2011
DOM        Rhino        V8
                           JS             JS     JS



                                   Java        C++



                         Browser     JVM         OS




Monday, April 11, 2011
Common Ground?




Monday, April 11, 2011
Common Ground?
                                 January 29th, 2009




Monday, April 11, 2011
Common Ground?
                                     January 29th, 2009



                              ServerJS




Monday, April 11, 2011
Common Ground?
                                     January 29th, 2009



                              ServerJS



                             CommonJS



Monday, April 11, 2011
CommonJS
                         Module system (exports/require)
                                   Package system
                          Module APIs (file, socket, binary, ...)
                             Web server interface - JSGI
                                      Promises
                                      Workers




Monday, April 11, 2011
Implementations
                               Narwhal
                              CouchDB
                              Persevere
                               RingoJS
                             SproutCore
                               node.js
                                 v8cgi
                              Flusspferd




Monday, April 11, 2011
Why should I care?

                  A single programming language for the client and the
                  server
                  Code reuse and testing
                  Many developers are already familiar with JavaScript
                  The browser wars has spawned extremely fast
                  JavaScript interpreters



Monday, April 11, 2011
Further


                  JavaScript: The Good Parts
                  http://wiki.commonjs.org/wiki/CommonJS
                  http://narwhaljs.org/




Monday, April 11, 2011

More Related Content

Similar to JavaScript Landscape

3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time Pascal Rettig
 
Introduction to JavaScriptMVC
Introduction to JavaScriptMVCIntroduction to JavaScriptMVC
Introduction to JavaScriptMVCPedro Pimentel
 
HTML XHTML HTML5
HTML XHTML HTML5HTML XHTML HTML5
HTML XHTML HTML5timstone
 
10 Web Development Concepts a Designer Should Know
10 Web Development Concepts a Designer Should Know10 Web Development Concepts a Designer Should Know
10 Web Development Concepts a Designer Should KnowRachel Andrew
 
Ruby hollywood
Ruby hollywoodRuby hollywood
Ruby hollywoodehuard
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5Tim Wright
 
Carton CPAN dependency manager
Carton CPAN dependency managerCarton CPAN dependency manager
Carton CPAN dependency managerTatsuhiko Miyagawa
 
The Digital Toolbox - a discussion -Science Online '11
The Digital Toolbox - a discussion -Science Online '11The Digital Toolbox - a discussion -Science Online '11
The Digital Toolbox - a discussion -Science Online '11Kaitlin Thaney
 
Slides for millfield
Slides for millfieldSlides for millfield
Slides for millfieldjuliancoultas
 
node.js for front-end developers
node.js for front-end developersnode.js for front-end developers
node.js for front-end developersGarann Means
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
Koss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsKoss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsEvil Martians
 
Pluggable Django Application Patterns PyCon 2011
Pluggable Django Application Patterns PyCon 2011Pluggable Django Application Patterns PyCon 2011
Pluggable Django Application Patterns PyCon 2011Corey Oordt
 
Node js techtalksto
Node js techtalkstoNode js techtalksto
Node js techtalkstoJason Diller
 
Business of APIs Conference 2011 - YourTrove
Business of APIs Conference 2011 - YourTroveBusiness of APIs Conference 2011 - YourTrove
Business of APIs Conference 2011 - YourTroveMashery
 

Similar to JavaScript Landscape (20)

3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
 
Introduction to JavaScriptMVC
Introduction to JavaScriptMVCIntroduction to JavaScriptMVC
Introduction to JavaScriptMVC
 
HTML XHTML HTML5
HTML XHTML HTML5HTML XHTML HTML5
HTML XHTML HTML5
 
Tim stone.html5.rjug.20110316
Tim stone.html5.rjug.20110316Tim stone.html5.rjug.20110316
Tim stone.html5.rjug.20110316
 
10 Web Development Concepts a Designer Should Know
10 Web Development Concepts a Designer Should Know10 Web Development Concepts a Designer Should Know
10 Web Development Concepts a Designer Should Know
 
Ruby hollywood
Ruby hollywoodRuby hollywood
Ruby hollywood
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5
 
Carton CPAN dependency manager
Carton CPAN dependency managerCarton CPAN dependency manager
Carton CPAN dependency manager
 
The Digital Toolbox - a discussion -Science Online '11
The Digital Toolbox - a discussion -Science Online '11The Digital Toolbox - a discussion -Science Online '11
The Digital Toolbox - a discussion -Science Online '11
 
Slides for millfield
Slides for millfieldSlides for millfield
Slides for millfield
 
What's Cooking in Xtext 2.0
What's Cooking in Xtext 2.0What's Cooking in Xtext 2.0
What's Cooking in Xtext 2.0
 
MILOFest 2010
MILOFest 2010MILOFest 2010
MILOFest 2010
 
node.js for front-end developers
node.js for front-end developersnode.js for front-end developers
node.js for front-end developers
 
clrh56
clrh56clrh56
clrh56
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
Koss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsKoss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser apps
 
Pluggable Django Application Patterns PyCon 2011
Pluggable Django Application Patterns PyCon 2011Pluggable Django Application Patterns PyCon 2011
Pluggable Django Application Patterns PyCon 2011
 
Node js techtalksto
Node js techtalkstoNode js techtalksto
Node js techtalksto
 
Business of APIs Conference 2011 - YourTrove
Business of APIs Conference 2011 - YourTroveBusiness of APIs Conference 2011 - YourTrove
Business of APIs Conference 2011 - YourTrove
 

JavaScript Landscape

  • 2. Me, Myself and I Mobisoft / StrataGen / DDS TUT Senior Software Architect Researcher Ph.D. student Monday, April 11, 2011
  • 3. JavaScript Groke Frameworks Monday, April 11, 2011
  • 4. JavaScript: The World's Most Misunderstood Programming Language Monday, April 11, 2011
  • 5. “JavaScript is the most popular programming language in the world” Monday, April 11, 2011
  • 6. “JavaScript is the most popular programming language in the world” ...“but it’s also the least popular programming language in the world” - Douglas Crockford Monday, April 11, 2011
  • 7. The (mis)conception “It’s a toy language” “Even designers can do it” “What good is a scripting language anyway” Monday, April 11, 2011
  • 8. The (mis)conception “It’s a toy language” “Even designers can do it” “What good is a scripting language anyway” Strong Typing vs. Strong Testing Monday, April 11, 2011
  • 10. “Programmers are artists and they don’t want anybody to mandate which language to use” Monday, April 11, 2011
  • 11. “Programmers are artists and they don’t want anybody to mandate which language to use” “Lisp in C’s Clothing” Monday, April 11, 2011
  • 12. “Programmers are artists and they don’t want anybody to mandate which language to use” “Lisp in C’s Clothing” Pitfalls in the Language Monday, April 11, 2011
  • 13. “Programmers are artists and they don’t want anybody to mandate which language to use” “Lisp in C’s Clothing” Pitfalls in the Language Typecasting Monday, April 11, 2011
  • 14. The Jungle ECMAScript JavaScript JScript ActionScript Huh? Monday, April 11, 2011
  • 15. The Jungle ECMAScript JavaScript JScript ActionScript Monday, April 11, 2011
  • 17. Mocha LiveScript Monday, April 11, 2011
  • 18. Mocha LiveScript JavaScript Monday, April 11, 2011
  • 19. Mocha LiveScript JavaScript JScript Monday, April 11, 2011
  • 20. Mocha LiveScript JavaScript ECMAScript JScript Monday, April 11, 2011
  • 21. Mocha LiveScript JavaScript ECMAScript JScript 1,2,3 Monday, April 11, 2011
  • 22. Mocha LiveScript JavaScript ECMAScript JScript 1,2,3 ActionScript Monday, April 11, 2011
  • 23. Mocha LiveScript JavaScript ECMAScript JScript 1,2,3 ActionScript ES4? Monday, April 11, 2011
  • 24. Mocha LiveScript JavaScript ECMAScript JScript 1,2,3 ActionScript ES4? ES 3.1 ES Harmony Monday, April 11, 2011
  • 25. JavaScript as a general- purpose programming language? Monday, April 11, 2011
  • 27. The Pioneers Helma Phobos Jaxer KDE scripting Mac Dashboard widgets Google Desktop gadgets Monday, April 11, 2011
  • 28. The Pioneers Helma Phobos Jaxer KDE scripting Mac Dashboard widgets Google Desktop gadgets Monday, April 11, 2011
  • 29. DOM Rhino V8 JS JS JS Java C++ Browser JVM OS Monday, April 11, 2011
  • 31. Common Ground? January 29th, 2009 Monday, April 11, 2011
  • 32. Common Ground? January 29th, 2009 ServerJS Monday, April 11, 2011
  • 33. Common Ground? January 29th, 2009 ServerJS CommonJS Monday, April 11, 2011
  • 34. CommonJS Module system (exports/require) Package system Module APIs (file, socket, binary, ...) Web server interface - JSGI Promises Workers Monday, April 11, 2011
  • 35. Implementations Narwhal CouchDB Persevere RingoJS SproutCore node.js v8cgi Flusspferd Monday, April 11, 2011
  • 36. Why should I care? A single programming language for the client and the server Code reuse and testing Many developers are already familiar with JavaScript The browser wars has spawned extremely fast JavaScript interpreters Monday, April 11, 2011
  • 37. Further JavaScript: The Good Parts http://wiki.commonjs.org/wiki/CommonJS http://narwhaljs.org/ Monday, April 11, 2011