JavaScript на сервере: стандарты и технологии Олег Подсечин, 04.06.2011
InfoWorld — JavaScript conquers the server Metamarkets — Node.js and the JavaScript age
 
Преимущества JavaScript на сервере <ul><li>Не сковывает, позволяет использовать разные методы программирования </li></ul><...
Происхождение Server Side JavaScript <ul><li>Brendan Eich из Netscape создал язык для браузера  </li></ul><ul><ul><li>прак...
Хронология недалекого прошлого 1998 Helma 2005 CouchDB 2006 Scripting JSR 2007 AppJet 2008 HelmaNG (RingoJS) 2009 CommonJS...
Движки 1996 SpiderMonkey (Mozilla) 1998 Rhino (Mozilla) 2008 Nitro/SquirrelFish (Apple) 2008 V8 (Google) 2011 Chakra (Micr...
CommonJS Modules - 1.0,  1.1,  Async/A Packages - 1.0,  1.1 Console System Unit Testing -  1.0 Binary - A,  B , C, D, E, L...
CommonJS Modules // math.js exports.add = function(a, b) {  return a + b; } // server.js var add = require('math').add; co...
CommonJS Packages // package.json { &quot;name&quot;: &quot;hello&quot;, &quot;version&quot;: &quot;0.1.0&quot;, &quot;des...
Будущее CommonJS http://groups.google.com/group/commonjs ??? Node игнорирует CommonJS AMD implement UncommonJS
Платформы 1998 Helma (Rhino) 2007 AppJet (Rhino) 2008 CouchDB / Couch Apps (SpiderMonkey) 2008 RingoJS (Rhino) 2009 Narwha...
RingoJS Rhino, Java библиотеки  CommonJS Modules, Packages CommonJS Console, System, Unit Testing,  Binary/B, IO/A, Filesy...
RingoJS пример new (require('ringo/httpserver').Server)({    app:  function(req) {      return {status: 200,              ...
Node.JS V8, C++ библиотеки  CommonJS Modules, Packages CommonJS Console, System, Unit Testing Async I/O
Node.JS пример require('http').createServer( function (req, res) { res.writeHead(200, {}); res.end('Hello World'); } ).lis...
Akshell V8 CommonJS Modules, Packages (coming) JSGI/0.3 Async I/O
CouchDB CouchApps SpiderMonkey CommonJS Modules (views)
Хостинг Akshell — akshell.com CouchApps — IrisCouch Node.JS — no.de, Heroku, Nodester, Nodejitsu  RingoJS — Erbix, App Eng...
Sync  vs. Async http.get(url1) + http.get(url2)
Sync vs.  Async function addbits(callback) { http.get(url1, function(response1) { var bit1 = response1.data; http.get(url2...
Тренды <ul><li>Web IDE </li></ul><ul><ul><li>AppJet, Akshell, Cloud9 </li></ul></ul><ul><li>JavaScript как платформа для д...
Тренды <ul><li>Новые платформы </li></ul><ul><ul><li>PalmOS, Windows 8? </li></ul></ul><ul><li>Расширяемые приложения, кра...
Вопросы и Комментарии @olegpodsechin
Upcoming SlideShare
Loading in …5
×

Current State of Server Side JavaScript

1,586 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,586
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Current State of Server Side JavaScript

  1. 1. JavaScript на сервере: стандарты и технологии Олег Подсечин, 04.06.2011
  2. 2. InfoWorld — JavaScript conquers the server Metamarkets — Node.js and the JavaScript age
  3. 4. Преимущества JavaScript на сервере <ul><li>Не сковывает, позволяет использовать разные методы программирования </li></ul><ul><ul><li>процедурный, объектно ориентированный и функциональный </li></ul></ul><ul><li>Динамический язык, обработка JSON </li></ul><ul><ul><li>метапрограммирование, не нужен маршалинг </li></ul></ul><ul><ul><li>значительно снижает объем кода, но не усложняет его чтение </li></ul></ul><ul><li>Язык браузера </li></ul><ul><ul><li>повторное использование кода, легче переключится </li></ul></ul><ul><ul><li>конкуренция среди поставщиков, быстрые движки </li></ul></ul><ul><li>Доступен всем веб разработчикам </li></ul><ul><ul><li>Lingua franca вебa, доступен начинающим разработчикам </li></ul></ul>
  4. 5. Происхождение Server Side JavaScript <ul><li>Brendan Eich из Netscape создал язык для браузера </li></ul><ul><ul><li>практически один, за очень короткое время </li></ul></ul><ul><li>Netscape LiveWire, 1996 </li></ul><ul><ul><li>всё новое - хорошо забытое староеhttp://docsrv.sco.com/INT_LiveWire/CONTENTS.html </li></ul></ul><ul><li>Браузер на Java - плохая идея, породила Rhino </li></ul><ul><ul><li>JavaScript движок на JVM </li></ul></ul>
  5. 6. Хронология недалекого прошлого 1998 Helma 2005 CouchDB 2006 Scripting JSR 2007 AppJet 2008 HelmaNG (RingoJS) 2009 CommonJS, Narwhal 2009 NodeJS
  6. 7. Движки 1996 SpiderMonkey (Mozilla) 1998 Rhino (Mozilla) 2008 Nitro/SquirrelFish (Apple) 2008 V8 (Google) 2011 Chakra (Microsoft)
  7. 8. CommonJS Modules - 1.0, 1.1, Async/A Packages - 1.0, 1.1 Console System Unit Testing - 1.0 Binary - A, B , C, D, E, Lite, F IO - A , B, C Filesystem - A , B JSGI - 0.2, 0.3 HTTPClient – A , B
  8. 9. CommonJS Modules // math.js exports.add = function(a, b) { return a + b; } // server.js var add = require('math').add; console.log(add(2, 2)); // client.js ???
  9. 10. CommonJS Packages // package.json { &quot;name&quot;: &quot;hello&quot;, &quot;version&quot;: &quot;0.1.0&quot;, &quot;description&quot;: &quot;Hello world package&quot;, &quot;keywords&quot;: [&quot;hello&quot;, &quot;world&quot;], &quot;author&quot;: &quot;John Smith <john@smith.com>&quot;, &quot;main&quot;: &quot;./lib/hello.js&quot;, &quot;dependencies&quot;: {&quot;whatever&quot; : &quot;1&quot;}, &quot;engines&quot; : [&quot;v8&quot;, &quot;node&quot;, &quot;rhino&quot;], }
  10. 11. Будущее CommonJS http://groups.google.com/group/commonjs ??? Node игнорирует CommonJS AMD implement UncommonJS
  11. 12. Платформы 1998 Helma (Rhino) 2007 AppJet (Rhino) 2008 CouchDB / Couch Apps (SpiderMonkey) 2008 RingoJS (Rhino) 2009 Narwhal (Rhino, V8, SpiderMonkey) 2009 NodeJS (V8) 2010 Akshell (V8) 2011 Wakanda (Nitro) Всего около 30http://wiki.commonjs.org/wiki/Implementations
  12. 13. RingoJS Rhino, Java библиотеки CommonJS Modules, Packages CommonJS Console, System, Unit Testing, Binary/B, IO/A, Filesystem/A, JSGI/0.3 Sync I/O, поддерживает async
  13. 14. RingoJS пример new (require('ringo/httpserver').Server)({   app:  function(req) {      return {status: 200,              headers: {},              body: ['Hello World']};    } }).start();
  14. 15. Node.JS V8, C++ библиотеки CommonJS Modules, Packages CommonJS Console, System, Unit Testing Async I/O
  15. 16. Node.JS пример require('http').createServer( function (req, res) { res.writeHead(200, {}); res.end('Hello World'); } ).listen(8080);
  16. 17. Akshell V8 CommonJS Modules, Packages (coming) JSGI/0.3 Async I/O
  17. 18. CouchDB CouchApps SpiderMonkey CommonJS Modules (views)
  18. 19. Хостинг Akshell — akshell.com CouchApps — IrisCouch Node.JS — no.de, Heroku, Nodester, Nodejitsu RingoJS — Erbix, App Engine
  19. 20. Sync vs. Async http.get(url1) + http.get(url2)
  20. 21. Sync vs. Async function addbits(callback) { http.get(url1, function(response1) { var bit1 = response1.data; http.get(url2, function(response2) { var bit2 = response2.data; callback(bit1 + bit2); } } }
  21. 22. Тренды <ul><li>Web IDE </li></ul><ul><ul><li>AppJet, Akshell, Cloud9 </li></ul></ul><ul><li>JavaScript как платформа для других языков </li></ul><ul><ul><li>CoffeeScript, AltJS </li></ul></ul><ul><li>Interop </li></ul><ul><ul><li>Node on Rhino/SpiderMonkey Sync CommonJS on Node </li></ul></ul>
  22. 23. Тренды <ul><li>Новые платформы </li></ul><ul><ul><li>PalmOS, Windows 8? </li></ul></ul><ul><li>Расширяемые приложения, краудсорсинг функционала </li></ul><ul><ul><li>Locker project </li></ul></ul>
  23. 24. Вопросы и Комментарии @olegpodsechin

×