11. COMMUNAUTÉ
• Nombreux Groupes d’utilisateurs
• Nombreuses Conférences
• Nombreux Blogs et livres
• Large documentation
• Langageaussi utilisé par les
développeurs venant d’autres
technologies
12. COMMUNAUTÉ
• Nombreux Groupes d’utilisateurs
• Nombreuses Conférences
• Nombreux Blogs et livres
• Large documentation
• Langageaussi utilisé par les
développeurs venant d’autres
technologies
13. LIBRAIRIES & FRAMEWORKS
• JavaScript
est le language le
plus populaire sur GitHub
• Nombreuses librairies
• Nombreux framework
https://github.com/languages/JavaScript
http://javascriptlibraries.com/
14. ENVIRONNEMENT DE
DEVELOPEMENT
• Visual Studio
• XCode
• Eclipse
• NetBeans
• Wakanda Studio
• Cloud9
15. DÉBOGUEURS
• Client-side
• Firebug *
• Web Inspector *
• Dragonfly
• Server-side
• Wakanda Debugger *
• Cloud9 Debugger *
* via standard protocols, some debugger can debug JS code running anywhere (server, desktop, mobile, ...)
22. EVERYWHERE
-> Widgets/Gadgets : Yahoo Widgets, Microsoft Gadgets, Google Desktop Gadgets, & Dashboards widgets;
-> Windows: WSH (Windows Script Host), JScript.Net, Managed JScript, and Windows 8 Metro Applications
-> PAC files for automatique proxy sélection;
-> Acrobat for interactive PDF forms;
-> XUL applications and Jetpack (as Firefox addons);
-> Open Office macros;
-> QtScript for QT;
-> Apple Cocoa (JSCocoa);
-> JetC (JavaScript Embedded Toolkit in C) allow to provide embedded application with JavaScript;
-> Pronto Philips products (programmable touchscreen remote controls) use ProntoScript based on JS 1.6;
-> but also : PHP (J2PA), Apache (mod_js), Ruby (Johnson), Python, Perl (JE), …
31. COMMON JAVASCRIPT
• Working Groups:
- CommonJS
- WHATWG
- W3C
- ECMA TC39
• L’ubiquité au delà d’ECMAScript
• la spécification HTML5 se faisait aussi appeler:
“Web Applications 1.0”
http://www.whatwg.org/specs/web-apps/current-work/
• Asynchronous & Synchronous APIs
32. INTEGRATION-ORIENTED
• Rhino
- Interaction with Java (APIs and objects)
- Helma, Persevere, Narwhal, RingoJS, Sun Phobos...
• JScript .Net
- Interaction with MS .NET (APIs and objects)
- IronJS, Node.NET
•But also from
- PHP (J2PA), Ruby (Johnson), Perl (JE), …
33. ASYNC. EVENT-BASED
Node.js like
• Browser Event-Loop on the Server
• An Event Loop in one single thread
• Cooperative («one at a time») with async. callbacks
• Node.js (V8), SpiderNode, RhiNodeII, Node.NET
34. SINGLE & MULTI THREADING
One context per thread
SINGLE MULTI
• Low memory usage • Vertical scalability (multi-core)
• Potentially handle lot of requests • Thread-safety for concurrent access
• Cooperative • Preemptive: Parallel code execution
• Shared context • Allow Synchronous APIs
• Use mostly one core* • Uses easily all available cores
Notes:
- an event loop can generate some other threads which could use other cores
- multi-thread architectures can run event loops in some of their threads
35. DATABASE-DRIVEN
• Document Store
- CouchDB, MongoDB
• Key/value Store
- Riak
• Object Store
- Wakanda
• Push Store
- APE
When we started to define the Wakanda project, we did a lot of research and tests before concluding what would be the best language for it on the server and with which engine. We then decided to share with the others what we knew and what we learned. And here come this presentation.\n
\n
Brendan Eich creates JavaScript for NetScape.\n1 year after, he puts it on the server.\nEach time Microsoft followed just one year after.\nThe Server-Side JavaScript is 15 years old.\nBackend developers were not much convinced and mostly choose to ignore it.\n
JavaScript long growing maturity.\nMozilla Rhino and Microsoft IIS were the only ones running JavaScript/JScript on the server.\nJavaScript finally had respected standards, development tools, libraries, frameworks, performances.\n\n
Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side & client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side & client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side & client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
\n
\n
\n
\n
\n
\n
\n
\n
Spidermonkey now looks more C++ now but its API are still in C\nComplex Webkit naming\nTrident: Windows only\n
The growth of WebApps with Ajax Frameworks requires more powerful engines \n-> Browsers War II.\n
Ici, on compare JS avec d’autres technologies : Persevere et son js faisaient plus de req/s que php par exemple\n
\n
\n
Juste en travaillant sur le moteur lui même a fait d’énormes gains jusque la 185, puis en ajoutant leur JIT, hop, ils divisent les temps d’exéc. par 4.\n\n“les autres ont fait pareil dans le même temps etc...” (next slide)\n
The core engines running on the server have finally reach acceptable performances, with quite comparable results.\nThey all actively continue their own performance enhancement.\nECMAScript 5 in strict mode also help to provide better internal optimizations.\n \n
\n
“JavaScript” is available in all modern mobile phones, tablets, Internet box, and even some remote control and TVs.\n- It is quite everywhere, but, back on the server, the JS engines only provide the Core of the language, mostly as defined by ECMAScript with ongoing features. \n- Ajax, Web 2.0, & HTML5 provided a very large & active open source community (first community on Github)\n- At least 4 important Working Groups are doing their best to make it better and better.\n- Common JavaScript oriented implementations want to enhance interoperability between each of them, hopefully more quickly than how it came on client-side.\n
These solutions were mostly the ones which made JavaScript survive on the server\nAll missing stuff were covered by the environment in which they are running.\nIt’s then easy to make it’s application platform dependent which often what front-end JavaScript developers want to prevent.\n-> so then came the work on standards for the “missing stuff” ;-)\n
\n
\n
\n
\n
\n
\n
\n
\nNPM: Author ?\nCPM: by Kris Zyp\nPINF: by Christoph Dorn\n