SlideShare a Scribd company logo
JavaScript на сервере: стандарты и технологии Олег Подсечин, 04.06.2011
InfoWorld — JavaScript conquers the server Metamarkets — Node.js and the JavaScript age
 
Преимущества JavaScript на сервере Не сковывает, позволяет использовать разные методы программирования процедурный, объектно ориентированный и функциональный Динамический язык, обработка JSON метапрограммирование, не нужен маршалинг значительно снижает объем кода, но не усложняет его чтение Язык браузера  повторное использование кода, легче переключится конкуренция среди поставщиков, быстрые движки  Доступен всем веб разработчикам Lingua franca вебa, доступен начинающим разработчикам
Происхождение Server Side JavaScript Brendan Eich из Netscape создал язык для браузера  практически один, за очень короткое время Netscape LiveWire, 1996 всё новое - хорошо забытое староеhttp://docsrv.sco.com/INT_LiveWire/CONTENTS.html  Браузер на Java - плохая идея, породила Rhino JavaScript движок на JVM
Хронология недалекого прошлого 1998 Helma 2005 CouchDB 2006 Scripting JSR 2007 AppJet 2008 HelmaNG (RingoJS) 2009 CommonJS, Narwhal 2009 NodeJS
Движки 1996 SpiderMonkey (Mozilla) 1998 Rhino (Mozilla) 2008 Nitro/SquirrelFish (Apple) 2008 V8 (Google) 2011 Chakra (Microsoft)
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
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 ???
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;], }
Будущее 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 Narwhal (Rhino, V8, SpiderMonkey) 2009 NodeJS (V8) 2010 Akshell (V8) 2011 Wakanda (Nitro) Всего около 30http://wiki.commonjs.org/wiki/Implementations
RingoJS Rhino, Java библиотеки  CommonJS Modules, Packages CommonJS Console, System, Unit Testing,  Binary/B, IO/A, Filesystem/A, JSGI/0.3 Sync I/O, поддерживает async
RingoJS пример new (require('ringo/httpserver').Server)({    app:  function(req) {      return {status: 200,               headers: {},               body: ['Hello World']};    } }).start();
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'); } ).listen(8080);
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 Engine
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, function(response2) { var bit2 = response2.data; callback(bit1 + bit2); } } }
Тренды Web IDE AppJet, Akshell, Cloud9 JavaScript как платформа для других языков CoffeeScript, AltJS Interop Node on Rhino/SpiderMonkey Sync CommonJS on Node
Тренды Новые платформы PalmOS, Windows 8? Расширяемые приложения, краудсорсинг функционала Locker project
Вопросы и Комментарии @olegpodsechin
Ad

Recommended

PDF
Современный фронтенд за 30 минут.
Vladimir Malyk
 
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
MoscowJS
 
PDF
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
QADay
 
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
PDF
Фронтенд разработка без боли
Anton Piskunov
 
PDF
Алексей Фомкин, Практическое применение Web Workers
Aleksey Fomkin
 
PPTX
Знакомство с WebAssembly
Nikita Zimin
 
PDF
Проблемы при работе с разными версиями Ruby и разными gem
Александр Ежов
 
PDF
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest
 
PDF
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
GeeksLab Odessa
 
PDF
Java script и frontend завтра - Kharkiv JS 2013
Andrey Listochkin
 
PPTX
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Ontico
 
PPTX
Вредные советы для разработчиков
ITCrowd Almaty
 
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
PDF
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
Hassan Islamov
 
PDF
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
PDF
Разработка API для большого, нагруженного сервиса
endeveit
 
PDF
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 
PDF
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
PDF
JS Lab2017_Сергей Селецкий_System.js и jspm
GeeksLab Odessa
 
ODP
Python & Web: От простого к сложному
Ilya Bolkhovsky
 
PDF
"Vue.js или как наконец отказаться от React"
Fwdays
 
PDF
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Ontico
 
PDF
WebAssembly
Sergey Rubanov
 
PDF
Javascript frameworks
sigmaray
 
PDF
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
PPTX
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
 
PPT
Node.JS: возможности для РНР-разработчика
Alexei Smolyanov
 
PDF
Introduction in Node.js (in russian)
Mikhail Davydov
 

More Related Content

What's hot (20)

PDF
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest
 
PDF
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
GeeksLab Odessa
 
PDF
Java script и frontend завтра - Kharkiv JS 2013
Andrey Listochkin
 
PPTX
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Ontico
 
PPTX
Вредные советы для разработчиков
ITCrowd Almaty
 
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
PDF
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
Hassan Islamov
 
PDF
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
PDF
Разработка API для большого, нагруженного сервиса
endeveit
 
PDF
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 
PDF
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
PDF
JS Lab2017_Сергей Селецкий_System.js и jspm
GeeksLab Odessa
 
ODP
Python & Web: От простого к сложному
Ilya Bolkhovsky
 
PDF
"Vue.js или как наконец отказаться от React"
Fwdays
 
PDF
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Ontico
 
PDF
WebAssembly
Sergey Rubanov
 
PDF
Javascript frameworks
sigmaray
 
PDF
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
PPTX
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
GeeksLab Odessa
 
Java script и frontend завтра - Kharkiv JS 2013
Andrey Listochkin
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Ontico
 
Вредные советы для разработчиков
ITCrowd Almaty
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
Hassan Islamov
 
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
Разработка API для большого, нагруженного сервиса
endeveit
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
JS Lab2017_Сергей Селецкий_System.js и jspm
GeeksLab Odessa
 
Python & Web: От простого к сложному
Ilya Bolkhovsky
 
"Vue.js или как наконец отказаться от React"
Fwdays
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Ontico
 
WebAssembly
Sergey Rubanov
 
Javascript frameworks
sigmaray
 
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
 

Similar to Current State of Server Side JavaScript (20)

PPT
Node.JS: возможности для РНР-разработчика
Alexei Smolyanov
 
PDF
Introduction in Node.js (in russian)
Mikhail Davydov
 
ODP
Server Side Javascript (ru)
Bakyt Niyazov
 
PDF
Devcamp nodejs-2010
Antono Vasiljev
 
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
PPTX
What do you MEAN? или введение в Fullstack JavaScript
Vasiliy Teliatnikov
 
PPT
Server-side JavaScript
Media Gorod
 
PDF
Серверный JavaScript: NodeJS и CouchDB
Stepan Stolyarov
 
PDF
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest
 
PDF
JavaScript Базовый. Занятие 09.
Igor Shkulipa
 
PPT
Node.js (RichClient)
Serge Shirokov
 
PDF
Марат Абдуллин "Хроники серверного Жаваскрипта"
Yandex
 
PPTX
Full Stack разработка на JavaScript
Олег Шерыхалин
 
PPTX
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
tfmailru
 
PPT
Drupal and NodeJS.
DrupalForumZP2012
 
PDF
JavaScript on frontend and backend (in Russian
Mikhail Davydov
 
PPT
Типичный стек технологий для использования с Node.js
Serge Shirokov
 
PPTX
Pavel Rumantsev - Java Script
beloslab
 
PPTX
введение в Javascript
inqubick
 
PDF
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Node.JS: возможности для РНР-разработчика
Alexei Smolyanov
 
Introduction in Node.js (in russian)
Mikhail Davydov
 
Server Side Javascript (ru)
Bakyt Niyazov
 
Devcamp nodejs-2010
Antono Vasiljev
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
What do you MEAN? или введение в Fullstack JavaScript
Vasiliy Teliatnikov
 
Server-side JavaScript
Media Gorod
 
Серверный JavaScript: NodeJS и CouchDB
Stepan Stolyarov
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest
 
JavaScript Базовый. Занятие 09.
Igor Shkulipa
 
Node.js (RichClient)
Serge Shirokov
 
Марат Абдуллин "Хроники серверного Жаваскрипта"
Yandex
 
Full Stack разработка на JavaScript
Олег Шерыхалин
 
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
tfmailru
 
Drupal and NodeJS.
DrupalForumZP2012
 
JavaScript on frontend and backend (in Russian
Mikhail Davydov
 
Типичный стек технологий для использования с Node.js
Serge Shirokov
 
Pavel Rumantsev - Java Script
beloslab
 
введение в Javascript
inqubick
 
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Ad

More from Oleg Podsechin (14)

PDF
Why SaaS (in Helsinki)?
Oleg Podsechin
 
PDF
Staying safe in the cloud
Oleg Podsechin
 
PDF
Tips from angular js users anonymous
Oleg Podsechin
 
PPT
AngularJS - the folly of choice
Oleg Podsechin
 
PDF
Lean and mean MongoDB
Oleg Podsechin
 
PPT
RingoJS
Oleg Podsechin
 
PPT
JS everywhere 2011
Oleg Podsechin
 
PPT
What every developer can learn from startups
Oleg Podsechin
 
PPT
Server side JavaScript: going all the way
Oleg Podsechin
 
PPT
On Platforms
Oleg Podsechin
 
PPT
Common Node
Oleg Podsechin
 
PPT
The future of server side JavaScript
Oleg Podsechin
 
PPT
RingoJS
Oleg Podsechin
 
PPT
Grid and Cloud Computing Intro
Oleg Podsechin
 
Why SaaS (in Helsinki)?
Oleg Podsechin
 
Staying safe in the cloud
Oleg Podsechin
 
Tips from angular js users anonymous
Oleg Podsechin
 
AngularJS - the folly of choice
Oleg Podsechin
 
Lean and mean MongoDB
Oleg Podsechin
 
JS everywhere 2011
Oleg Podsechin
 
What every developer can learn from startups
Oleg Podsechin
 
Server side JavaScript: going all the way
Oleg Podsechin
 
On Platforms
Oleg Podsechin
 
Common Node
Oleg Podsechin
 
The future of server side JavaScript
Oleg Podsechin
 
Grid and Cloud Computing Intro
Oleg Podsechin
 
Ad

Current State of Server Side JavaScript

  • 1. JavaScript на сервере: стандарты и технологии Олег Подсечин, 04.06.2011
  • 2. InfoWorld — JavaScript conquers the server Metamarkets — Node.js and the JavaScript age
  • 3.  
  • 4. Преимущества JavaScript на сервере Не сковывает, позволяет использовать разные методы программирования процедурный, объектно ориентированный и функциональный Динамический язык, обработка JSON метапрограммирование, не нужен маршалинг значительно снижает объем кода, но не усложняет его чтение Язык браузера повторное использование кода, легче переключится конкуренция среди поставщиков, быстрые движки Доступен всем веб разработчикам Lingua franca вебa, доступен начинающим разработчикам
  • 5. Происхождение Server Side JavaScript Brendan Eich из Netscape создал язык для браузера практически один, за очень короткое время Netscape LiveWire, 1996 всё новое - хорошо забытое староеhttp://docsrv.sco.com/INT_LiveWire/CONTENTS.html Браузер на Java - плохая идея, породила Rhino JavaScript движок на JVM
  • 6. Хронология недалекого прошлого 1998 Helma 2005 CouchDB 2006 Scripting JSR 2007 AppJet 2008 HelmaNG (RingoJS) 2009 CommonJS, Narwhal 2009 NodeJS
  • 7. Движки 1996 SpiderMonkey (Mozilla) 1998 Rhino (Mozilla) 2008 Nitro/SquirrelFish (Apple) 2008 V8 (Google) 2011 Chakra (Microsoft)
  • 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
  • 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 ???
  • 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 <[email protected]>&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;], }
  • 11. Будущее CommonJS http://groups.google.com/group/commonjs ??? Node игнорирует CommonJS AMD implement UncommonJS
  • 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
  • 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
  • 14. RingoJS пример new (require('ringo/httpserver').Server)({   app:  function(req) {      return {status: 200,              headers: {},              body: ['Hello World']};    } }).start();
  • 15. Node.JS V8, C++ библиотеки CommonJS Modules, Packages CommonJS Console, System, Unit Testing Async I/O
  • 16. Node.JS пример require('http').createServer( function (req, res) { res.writeHead(200, {}); res.end('Hello World'); } ).listen(8080);
  • 17. Akshell V8 CommonJS Modules, Packages (coming) JSGI/0.3 Async I/O
  • 18. CouchDB CouchApps SpiderMonkey CommonJS Modules (views)
  • 19. Хостинг Akshell — akshell.com CouchApps — IrisCouch Node.JS — no.de, Heroku, Nodester, Nodejitsu RingoJS — Erbix, App Engine
  • 20. Sync vs. Async http.get(url1) + http.get(url2)
  • 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); } } }
  • 22. Тренды Web IDE AppJet, Akshell, Cloud9 JavaScript как платформа для других языков CoffeeScript, AltJS Interop Node on Rhino/SpiderMonkey Sync CommonJS on Node
  • 23. Тренды Новые платформы PalmOS, Windows 8? Расширяемые приложения, краудсорсинг функционала Locker project