SlideShare a Scribd company logo
Get treated to white glove service
from a five-star innovator
www.provectus.com
A presentation of expertise we boast and services we render for
partners across the board, around the globe.
© Provectus, Inc.
Provectus
PHP Java .NET Java
Script
Cloud Services
iOS Android Ruby J2EE QA
Provectus – международная R&D компания, предоставляющая полный комплекс услуг по разработке
программного обеспечения для корпоративного сегмента, мобильных платформ и WEB по всему
миру.
О спикере
Ян Жабин
• Web разработчик. Люблю программировать.
www.provectus.com
Тема доклада
Разработка Desktop приложений на Node.js и HTML5
• “Чoooo за дичь?”. Аргументы почему это имеет право на жизнь

• Короткая история сабжа

• Доступные технологии на сегодня. Как сделать правильный выбор?

• API

• Фатальные недостатки

• Подводим итоги
www.provectus.com
Реакция “тру” разработчиков на технологию
www.provectus.com
А как насчет серьезных и популярных GUI Frameworks? 

QT5, GTK+, WPF, Windows Forms и т.п.
Десктопные приложения на JavaScript
Почему это имеет право на жизнь?
www.provectus.com
• Низкий порог вхождения. Ниже только дно

• Скорость разработки

• Кроссплатформенность (Windows, Mac, Linux и … Android,
iOS?)

• Дизайн приложения ограничен вашей фантазией.

• Хорошая производительность

• Возможность использовать нативные модули (nodegyp)

• Примеры успешных приложений
Десктопные приложения на JavaScript
www.provectus.com
Slack Popcorn Time Visual Studio Code Atom Editor
Web TorrentSimplenote KitematicNylas N1
Wire
Avocode
Вечер “интересных” историй
Круговорот JavaScript в природе
www.provectus.com
• 1995 г. - Брендан Эйх из Netscape написал клиентский язык
LiveScript который для хайпа назвали JavaScript

• 1996 г. - К сотрудникам Netscape приходит гениальная идея -
попробовать вынести JavaScript на сервер (Server-side JavaScript
— SSJS), но не взлетело.

• 2002 - 2004 - Netscape умер! Да здравствует Netscape Mozilla
Firefox

• 2008 - Google создает…. 

• 1999 - Microsoft создает Internet Explorer 5 c возможностью
сохранять и открывать страницы в формате веб-архива MHTML
и …………
Вечер “интересных” историй
Встречайте! HTA
www.provectus.com
HTML Application (HTA) - приложение Microsoft Windows, написанное на HTML или
Dynamic HTML. Бизнес логика на JavaScript и VBScript (VisualBasic Script)
Главная особенность - запуск безопасного (на 1999 год хм хм) приложения с
повышенными привилегиями, как CRUD файлов в файловой системе и доступ к
системному реестру.
Вечер “интересных” историй
www.provectus.com
<html>
<head>
<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="WMPTour"
BORDER="thin"
BORDERSTYLE="normal"
CAPTION="no"
maximizeButton="no"
minimizeButton="no"
ICON="img/wmptour.ico"
SHOWINTASKBAR="no"
SINGLEINSTANCE="yes"
SYSMENU="yes"
VERSION="1.0"
WINDOWSTATE="maximize">
</head>
<script language=“VBScript">
…
</script>
<body>
Текст страницы HTA-документа. Для выхода нажмите «Alt»+«F4»!
</body>
</html>
Вечер “интересных” историй
www.provectus.com
• 1999 г. - HTA

• 2008 г. - Google разработал JavaScript движок под
названием V8 и включил его в свежеиспеченный браузер
chromium.

• 2009 г. - Ничто не ново под солнцем. В этом году Райан
Дал таки запустил JavaScript (V8) на сервере и закончил
дело начатое когда-то Netscape. Добавил API и обозвал
свое поделие Node.js.

• 1 ноября 2011 г. …
Круговорот JavaScript в природе
Вечер “интересных” историй
1 ноября 2011 - родился Node Webkit
www.provectus.com
Roger Wang
Жил был себе веселый китаец по
имени Роджер и по фамилии Ванг. 

Работал себе Роджер тихонько в
Интеловоском Центре Опен Сурсных
Технологий и никого не трогал. 

Но однажды ему пришла идея ….
А что если Node.js засунуть
обратно
в chromium …и завертелось
Вечер “интересных” историй
…тем временем в Иране 1 апреля 2012 года
www.provectus.com
Morteza Milani

из Тегерана
Ali Farhadi

из Mashhad
Начали писать AppJS
Вечер “интересных” историй
Aпрель 2013
в гонку вступает GitHub
и создает AtomShell …
….а спустя 2 года
в апреле 2015
переименовывает проект в
Electron
www.provectus.com
P.S. Проект догнал NW.js за счет того, что первым
поддержал IO.js
Вечер “интересных” историй
Кто остался в живых к 2016?
www.provectus.com
NW.js (Node-Webkit) by Intel Electron.js by GitHub
Умерли или в состоянии “при смерти” - appJS и Tint2
Третий лишний
www.provectus.com
Третий лишний?
www.provectus.com
V8 Node.jsBlink
Сравнение Electron.js vs NW.js (1)
www.provectus.com
NW.js 0.17.3 Electron 1.4.0
Browser Runtime Chromium libchromiumcontent
Node.js Version Node 6.5.0 6.5.0
Chromium Version 53.0.2785.116 53.0.2785.113
V8 5.3.332.45 5.3.332.45
Entry Point HTML or JavaScript (Chrome Apps) JavaScript
Base Distribution Size 158MB (59MB zipped) 120MB (44MB zipped)
Architecture Support
32bit (Win), 64bit (Win/Mac, Linux) & arm (limited)
Windows XP Support - In LTS
version (0.14.x)
Windows 7+ (x86 and x64)
Mac OS X.6 - In LTS version (0.14.x) Mac OS X.9 +
Support of chrome.* APIs Yes No
Plugin Support NaCL, Pepper (PPAPI) Pepper (PPAPI)
Chrome Apps Support Yes No
http://tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition
Сравнение Electron.js vs NW.js (1)
www.provectus.com
NW.js 0.17.2 Electron 1.3.5
App signing Yes Yes
Source Code Protection V8 Snapshot
ASAR Archive Support 

(V8 snapshot coming soon)
Auto-update custom plugins? Mac/Win Yes
Crash Reporting No Yes
PDF Viewer Yes Using pdf.js
SSL Client Certificate Yes Partial
Print Preview Yes No
DevTools Extension
Support
Yes
Debugging DevTools + extensions Dedicated Devtron Module
Building tools Yes Yes
Open Codecs/Containers Vorbis, Theora, Opus, VP8, VP9, PCM, Ogg, WebM, WAV
Licensed Codecs MP3, MP4, H.264, AAC
Issue Resolution Time 7 days 1 day
Сравнение Electron.js vs NW.js
www.provectus.com
СКУЧНО!!!
Сравнение Electron.js vs NW.js
На первый взгляд
www.provectus.com
NW.js Electron.js
Сравнение Electron.js vs NW.js
Но не спешите с
выводами!
www.provectus.com
ЗНАТОКИ! ВНИМАНИЕ
ВОПРОС:

В чем кроется
причина такого
различия?
Сравнение Electron.js vs NW.js
ОТВЕТ
www.provectus.com
NW.js -> Chromium

Electron.js -> libchromiumcontent
libchromiumcontent - shared library.


Chromium Content module и все зависимости (как например Blink, V8, …)
Сравнение Electron.js vs NW.js
www.provectus.com
• Точка входа - NW.js ближе к браузерному подходу, точка входа html
файл. Electron.js ближе к nodejs - точка входа js файл. Загрузка html
через API.
• Сборка проекта - собрать весь chromium достаточно непросто. NW.js
полностью склонировал chromium. Electron.js использует специальную
библиотеку, позволяющую использовать только необходимые
зависимости и подключать функционал в виде модулей. Быстрая
сборка даже на средней машине.

• NodeJS интеграция - NW.js вынужден постоянно патчить chromium.
Electron нашел способ этого избежать по-своему подключив libuv loop.
• Multi-context - NW.js имеет 2 типа JS контекста Browser Context и
Node Context из за своей архитектуры (+web workers(browser) context).
Electron - использует “нодовксий” multi-context
Список ключевых отличий
NW.js
www.provectus.com
Немного о контексте
NW.js запускается в режиме Chrome App c протоколом chrome-extension://
Browser Context - по сути API которое предоставляет браузер как если бы вы
делали обычное web приложение в chrome. К этому контексту имеют доступ все
скрипты которые подключаются в index.html (точка входа). 

Node Context - по сути API Node.js. Пример: 

> global === window
> false
NW.js при старте по умолчанию автоматически загружает невидимую бекграунд
страницу и каждый модуль который вы подключаете через require() будет иметь
Node Context.


Некоторые обьекты из Node Context были скопированы в Browser Context. Но
само Web Api не доступно из Node Context.
Несмотря на все можно включить Mixed Context Mode.
Electron.js
www.provectus.com
Немного о контексте
> global === window
> true
* В рамках одного процесса
Архитектура Electron.js
Простая схема
www.provectus.com
Архитектура Electron.js
Подробная схема
www.provectus.com
API
некоторые примеры для Electron
www.provectus.com
• Frameless Window - можно задавать размер окна(мин, макс), включать и
выключать рамки. Изменять стиль titleBar под мак. Прозрачность
(артефакты под мак и линукс)

• Dialog - нативные диалоговые окна как открыть и сохранить файл, alert…

• Tray - возможность поместить иконку приложения в трей с возможностью
отображения меню по клику

• Menu и MenuItem - Возможность создать главное и контекстное меню с
вложенным меню

• globalShortcut - можно управлять глобальными хоткеями. (осторожно)

• clipboard - доступ к буферу обмена

• shell - модуль для глубокой desktop интеграции. Можно например показать
файл в папке, открыть ссылку, удалить файл в коризну или проиграть бип
звук

• crashReporter - отпрака отчетов о падениях приложения

• autoUpdater - модуль для обновления вашего приложения (quitAndInstall)
API
titleBar
www.provectus.com
VS
API
некоторые примеры для Electron
www.provectus.com
• Frameless Window - можно задавать размер окна(мин, макс), включать и
выключать рамки. Изменять стиль titleBar под мак. Прозрачность
(артефакты под мак и линукс)

• Dialog - нативные диалоговые окна как открыть и сохранить файл, alert…

• Tray - возможность поместить иконку приложения в трей с возможностью
отображения меню по клику

• Menu и MenuItem - Возможность создать главное и контекстное меню с
вложенным меню

• globalShortcut - можно управлять глобальными хоткеями. (осторожно)

• clipboard - доступ к буферу обмена

• shell - модуль для глубокой desktop интеграции. Можно например показать
файл в папке, открыть ссылку, удалить файл в коризну или проиграть бип
звук

• crashReporter - отпрака отчетов о падениях приложения

• autoUpdater - модуль для обновления вашего приложения (quitAndInstall)
Скучно!
www.provectus.com
Electron
Быстрый старт ч.1
www.provectus.com
# simple project structure

your-app/

── package.json

── main.js

└── index.html

# package.json

{

"name" : "your-app",

"version" : "0.1.0",

"main" : "main.js"

}
# Clone this repository

$ git clone https://github.com/electron/electron-quick-start

# Go into the repository

$ cd electron-quick-start

# Install dependencies and run the app

$ npm install && npm start
или
Electron
Быстрый старт ч.2
www.provectus.com
const {app, BrowserWindow} = require('electron')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win
function createWindow () {
win = new BrowserWindow({width: 800, height: 600})
// and load the index.html of the app.
win.loadURL(`file://${__dirname}/index.html`)
// Emitted when the window is closed.
win.on('closed', () => {
win = null
})
}
app.on('ready', createWindow)
Electron
Быстрый старт ч.3
www.provectus.com
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (win === null) {
createWindow()
}
})
Electron
Быстрый старт ч.4
www.provectus.com
$ electron .
Запуск и сборка (к примеру electron-builder)
"build": {
"appId": "your.id",
"category": "your.app.category.type",
"win": {
"iconUrl": "(windows-only) https link to icon"
}
}
"scripts": {
"pack": "build --dir",
"dist": "build"
}
Фатальные и не очень недостатки
www.provectus.com
• Размер имеет значение

• Скорость запуска и выполнения

• Темы оформления (windows live color themes, linux
themes)

• Баги на разных дистрибутивах linux

• Не поддерживает MacOs Vibrance effect (blur)

• Некоторые элементы дизайна не возможно правильно
реализовать

• Безопасность исходного кода

• JavaScript (Node.js)
Фатальные и не очень недостатки
www.provectus.com
Пример1
Фатальные и не очень недостатки
Пример 2
www.provectus.com
Итог
Мое ИМХО
www.provectus.com
• Оба проэкта имеют право на жизнь

• Выбирать в зависимости от нужной функциональности

• Недостатки есть, но их не так много.

• Преимущества превышают недостатки

• Я бы выбрал electron.
Спасибо за внимание!
Вопросы?
www.provectus.com
Ян Жабин
Skype: iyanello
Email: yzhabin@provectus-it.com
www.provectus.com
Контакты

More Related Content

What's hot

Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
Anton Piskunov
 
Redis varnish js
Redis varnish jsRedis varnish js
Redis varnish js
iliakan
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
OpenVZ
 
Скриншоты как сервис
Скриншоты как сервисСкриншоты как сервис
Скриншоты как сервис
Сергей Мелюков
 
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
Hassan Islamov
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
Vlad Savitsky
 
Применение графических ускорителей в браузерах
Применение графических ускорителей в браузерахПрименение графических ускорителей в браузерах
Применение графических ускорителей в браузерах
Alex Musayev
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QAFest
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
SpbDotNet Community
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
endeveit
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание среды
DrupalSib
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
Yandex
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup Minsk
MODX Беларусь
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
Yandex
 

What's hot (20)

Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Redis varnish js
Redis varnish jsRedis varnish js
Redis varnish js
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
Скриншоты как сервис
Скриншоты как сервисСкриншоты как сервис
Скриншоты как сервис
 
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
ChocoDevDay — Grunt - Advanced Tips (NIkita Bayev)
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 
Применение графических ускорителей в браузерах
Применение графических ускорителей в браузерахПрименение графических ускорителей в браузерах
Применение графических ускорителей в браузерах
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание среды
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup Minsk
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 

Viewers also liked

The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
Provectus
 
Leer inventando
Leer inventandoLeer inventando
Leer inventando
Claudia Valencia
 
Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0
Provectus
 
Museum and gallery events
Museum and gallery eventsMuseum and gallery events
Museum and gallery events
smellybottlenec93
 
Geolocation API実地試験
Geolocation API実地試験Geolocation API実地試験
Geolocation API実地試験
mikan_slide
 
Proof of Time Travel and Teleportation?
Proof of Time Travel and Teleportation?Proof of Time Travel and Teleportation?
Proof of Time Travel and Teleportation?
smellybottlenec93
 
Digital Strategy CIC StLouis_ClementeFarmer 2014
Digital Strategy CIC StLouis_ClementeFarmer 2014Digital Strategy CIC StLouis_ClementeFarmer 2014
Digital Strategy CIC StLouis_ClementeFarmer 2014Jennifer Clemente
 
Climate change
Climate changeClimate change
Sample Menu and Pricing Cards
Sample Menu and Pricing CardsSample Menu and Pricing Cards
Sample Menu and Pricing Cards
Jennifer Clemente
 
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)Jonathan Mohabir
 
Guest house
Guest houseGuest house
Guest house
MARIZZAALECK
 
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Provectus
 
Константин Макарычев (Provectus) - "Про Open Source"
Константин Макарычев (Provectus) - "Про Open Source"Константин Макарычев (Provectus) - "Про Open Source"
Константин Макарычев (Provectus) - "Про Open Source"
Provectus
 
Hackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffAppHackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffApp
Provectus
 

Viewers also liked (16)

The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
 
Erika Gonzalez
Erika GonzalezErika Gonzalez
Erika Gonzalez
 
Leer inventando
Leer inventandoLeer inventando
Leer inventando
 
Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0Альмеева Ляйсан - Android studio 2.0
Альмеева Ляйсан - Android studio 2.0
 
Museum and gallery events
Museum and gallery eventsMuseum and gallery events
Museum and gallery events
 
Geolocation API実地試験
Geolocation API実地試験Geolocation API実地試験
Geolocation API実地試験
 
Byson 2016_Web
Byson 2016_WebByson 2016_Web
Byson 2016_Web
 
Proof of Time Travel and Teleportation?
Proof of Time Travel and Teleportation?Proof of Time Travel and Teleportation?
Proof of Time Travel and Teleportation?
 
Digital Strategy CIC StLouis_ClementeFarmer 2014
Digital Strategy CIC StLouis_ClementeFarmer 2014Digital Strategy CIC StLouis_ClementeFarmer 2014
Digital Strategy CIC StLouis_ClementeFarmer 2014
 
Climate change
Climate changeClimate change
Climate change
 
Sample Menu and Pricing Cards
Sample Menu and Pricing CardsSample Menu and Pricing Cards
Sample Menu and Pricing Cards
 
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)
883 THISTLE DOWN CIRCLE - Sept 10 (EXISTING)
 
Guest house
Guest houseGuest house
Guest house
 
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
Ринат Ахметов: "Восстановление модели трехмерного объекта по видеопотоку"
 
Константин Макарычев (Provectus) - "Про Open Source"
Константин Макарычев (Provectus) - "Про Open Source"Константин Макарычев (Provectus) - "Про Open Source"
Константин Макарычев (Provectus) - "Про Open Source"
 
Hackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffAppHackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffApp
 

Similar to Desktop app based on node js and html5

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
IT-Доминанта
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
Alexander Demidov
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
Amasty
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация4ertenka
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация4ertenka
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
Alexey Bokov
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
Andrew Gubskiy
 
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
Constantin Kichinsky
 
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
Cisco Russia
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
Олег Винников
 
Browzer
BrowzerBrowzer
BrowzerIKTO
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5DevDay
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 

Similar to Desktop app based on node js and html5 (20)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
 
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
HTML5, WebRTC технологии для коммуникаций в режиме реального времени и Jabber...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
Browzer
BrowzerBrowzer
Browzer
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 

More from Provectus

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
Provectus
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Provectus
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
Provectus
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
Provectus
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
Provectus
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
Provectus
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Provectus
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Provectus
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
Provectus
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
Provectus
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
Provectus
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
Provectus
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
Provectus
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
Provectus
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
Provectus
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
Provectus
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
Provectus
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
Provectus
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
Provectus
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
Provectus
 

More from Provectus (20)

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
 

Desktop app based on node js and html5

  • 1. Get treated to white glove service from a five-star innovator www.provectus.com A presentation of expertise we boast and services we render for partners across the board, around the globe. © Provectus, Inc.
  • 2. Provectus PHP Java .NET Java Script Cloud Services iOS Android Ruby J2EE QA Provectus – международная R&D компания, предоставляющая полный комплекс услуг по разработке программного обеспечения для корпоративного сегмента, мобильных платформ и WEB по всему миру.
  • 3. О спикере Ян Жабин • Web разработчик. Люблю программировать. www.provectus.com
  • 4. Тема доклада Разработка Desktop приложений на Node.js и HTML5 • “Чoooo за дичь?”. Аргументы почему это имеет право на жизнь • Короткая история сабжа • Доступные технологии на сегодня. Как сделать правильный выбор? • API • Фатальные недостатки • Подводим итоги www.provectus.com
  • 5. Реакция “тру” разработчиков на технологию www.provectus.com А как насчет серьезных и популярных GUI Frameworks? QT5, GTK+, WPF, Windows Forms и т.п.
  • 6. Десктопные приложения на JavaScript Почему это имеет право на жизнь? www.provectus.com • Низкий порог вхождения. Ниже только дно • Скорость разработки • Кроссплатформенность (Windows, Mac, Linux и … Android, iOS?) • Дизайн приложения ограничен вашей фантазией. • Хорошая производительность • Возможность использовать нативные модули (nodegyp) • Примеры успешных приложений
  • 7. Десктопные приложения на JavaScript www.provectus.com Slack Popcorn Time Visual Studio Code Atom Editor Web TorrentSimplenote KitematicNylas N1 Wire Avocode
  • 8. Вечер “интересных” историй Круговорот JavaScript в природе www.provectus.com • 1995 г. - Брендан Эйх из Netscape написал клиентский язык LiveScript который для хайпа назвали JavaScript • 1996 г. - К сотрудникам Netscape приходит гениальная идея - попробовать вынести JavaScript на сервер (Server-side JavaScript — SSJS), но не взлетело. • 2002 - 2004 - Netscape умер! Да здравствует Netscape Mozilla Firefox • 2008 - Google создает…. • 1999 - Microsoft создает Internet Explorer 5 c возможностью сохранять и открывать страницы в формате веб-архива MHTML и …………
  • 9. Вечер “интересных” историй Встречайте! HTA www.provectus.com HTML Application (HTA) - приложение Microsoft Windows, написанное на HTML или Dynamic HTML. Бизнес логика на JavaScript и VBScript (VisualBasic Script) Главная особенность - запуск безопасного (на 1999 год хм хм) приложения с повышенными привилегиями, как CRUD файлов в файловой системе и доступ к системному реестру.
  • 10. Вечер “интересных” историй www.provectus.com <html> <head> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="WMPTour" BORDER="thin" BORDERSTYLE="normal" CAPTION="no" maximizeButton="no" minimizeButton="no" ICON="img/wmptour.ico" SHOWINTASKBAR="no" SINGLEINSTANCE="yes" SYSMENU="yes" VERSION="1.0" WINDOWSTATE="maximize"> </head> <script language=“VBScript"> … </script> <body> Текст страницы HTA-документа. Для выхода нажмите «Alt»+«F4»! </body> </html>
  • 11. Вечер “интересных” историй www.provectus.com • 1999 г. - HTA • 2008 г. - Google разработал JavaScript движок под названием V8 и включил его в свежеиспеченный браузер chromium. • 2009 г. - Ничто не ново под солнцем. В этом году Райан Дал таки запустил JavaScript (V8) на сервере и закончил дело начатое когда-то Netscape. Добавил API и обозвал свое поделие Node.js. • 1 ноября 2011 г. … Круговорот JavaScript в природе
  • 12. Вечер “интересных” историй 1 ноября 2011 - родился Node Webkit www.provectus.com Roger Wang Жил был себе веселый китаец по имени Роджер и по фамилии Ванг. Работал себе Роджер тихонько в Интеловоском Центре Опен Сурсных Технологий и никого не трогал. Но однажды ему пришла идея …. А что если Node.js засунуть обратно в chromium …и завертелось
  • 13. Вечер “интересных” историй …тем временем в Иране 1 апреля 2012 года www.provectus.com Morteza Milani из Тегерана Ali Farhadi из Mashhad Начали писать AppJS
  • 14. Вечер “интересных” историй Aпрель 2013 в гонку вступает GitHub и создает AtomShell … ….а спустя 2 года в апреле 2015 переименовывает проект в Electron www.provectus.com P.S. Проект догнал NW.js за счет того, что первым поддержал IO.js
  • 15. Вечер “интересных” историй Кто остался в живых к 2016? www.provectus.com NW.js (Node-Webkit) by Intel Electron.js by GitHub Умерли или в состоянии “при смерти” - appJS и Tint2
  • 18. Сравнение Electron.js vs NW.js (1) www.provectus.com NW.js 0.17.3 Electron 1.4.0 Browser Runtime Chromium libchromiumcontent Node.js Version Node 6.5.0 6.5.0 Chromium Version 53.0.2785.116 53.0.2785.113 V8 5.3.332.45 5.3.332.45 Entry Point HTML or JavaScript (Chrome Apps) JavaScript Base Distribution Size 158MB (59MB zipped) 120MB (44MB zipped) Architecture Support 32bit (Win), 64bit (Win/Mac, Linux) & arm (limited) Windows XP Support - In LTS version (0.14.x) Windows 7+ (x86 and x64) Mac OS X.6 - In LTS version (0.14.x) Mac OS X.9 + Support of chrome.* APIs Yes No Plugin Support NaCL, Pepper (PPAPI) Pepper (PPAPI) Chrome Apps Support Yes No http://tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition
  • 19. Сравнение Electron.js vs NW.js (1) www.provectus.com NW.js 0.17.2 Electron 1.3.5 App signing Yes Yes Source Code Protection V8 Snapshot ASAR Archive Support (V8 snapshot coming soon) Auto-update custom plugins? Mac/Win Yes Crash Reporting No Yes PDF Viewer Yes Using pdf.js SSL Client Certificate Yes Partial Print Preview Yes No DevTools Extension Support Yes Debugging DevTools + extensions Dedicated Devtron Module Building tools Yes Yes Open Codecs/Containers Vorbis, Theora, Opus, VP8, VP9, PCM, Ogg, WebM, WAV Licensed Codecs MP3, MP4, H.264, AAC Issue Resolution Time 7 days 1 day
  • 20. Сравнение Electron.js vs NW.js www.provectus.com СКУЧНО!!!
  • 21. Сравнение Electron.js vs NW.js На первый взгляд www.provectus.com NW.js Electron.js
  • 22. Сравнение Electron.js vs NW.js Но не спешите с выводами! www.provectus.com ЗНАТОКИ! ВНИМАНИЕ ВОПРОС: В чем кроется причина такого различия?
  • 23. Сравнение Electron.js vs NW.js ОТВЕТ www.provectus.com NW.js -> Chromium Electron.js -> libchromiumcontent libchromiumcontent - shared library. Chromium Content module и все зависимости (как например Blink, V8, …)
  • 24. Сравнение Electron.js vs NW.js www.provectus.com • Точка входа - NW.js ближе к браузерному подходу, точка входа html файл. Electron.js ближе к nodejs - точка входа js файл. Загрузка html через API. • Сборка проекта - собрать весь chromium достаточно непросто. NW.js полностью склонировал chromium. Electron.js использует специальную библиотеку, позволяющую использовать только необходимые зависимости и подключать функционал в виде модулей. Быстрая сборка даже на средней машине. • NodeJS интеграция - NW.js вынужден постоянно патчить chromium. Electron нашел способ этого избежать по-своему подключив libuv loop. • Multi-context - NW.js имеет 2 типа JS контекста Browser Context и Node Context из за своей архитектуры (+web workers(browser) context). Electron - использует “нодовксий” multi-context Список ключевых отличий
  • 25. NW.js www.provectus.com Немного о контексте NW.js запускается в режиме Chrome App c протоколом chrome-extension:// Browser Context - по сути API которое предоставляет браузер как если бы вы делали обычное web приложение в chrome. К этому контексту имеют доступ все скрипты которые подключаются в index.html (точка входа). Node Context - по сути API Node.js. Пример: > global === window > false NW.js при старте по умолчанию автоматически загружает невидимую бекграунд страницу и каждый модуль который вы подключаете через require() будет иметь Node Context. Некоторые обьекты из Node Context были скопированы в Browser Context. Но само Web Api не доступно из Node Context. Несмотря на все можно включить Mixed Context Mode.
  • 26. Electron.js www.provectus.com Немного о контексте > global === window > true * В рамках одного процесса
  • 29. API некоторые примеры для Electron www.provectus.com • Frameless Window - можно задавать размер окна(мин, макс), включать и выключать рамки. Изменять стиль titleBar под мак. Прозрачность (артефакты под мак и линукс) • Dialog - нативные диалоговые окна как открыть и сохранить файл, alert… • Tray - возможность поместить иконку приложения в трей с возможностью отображения меню по клику • Menu и MenuItem - Возможность создать главное и контекстное меню с вложенным меню • globalShortcut - можно управлять глобальными хоткеями. (осторожно) • clipboard - доступ к буферу обмена • shell - модуль для глубокой desktop интеграции. Можно например показать файл в папке, открыть ссылку, удалить файл в коризну или проиграть бип звук • crashReporter - отпрака отчетов о падениях приложения • autoUpdater - модуль для обновления вашего приложения (quitAndInstall)
  • 31. API некоторые примеры для Electron www.provectus.com • Frameless Window - можно задавать размер окна(мин, макс), включать и выключать рамки. Изменять стиль titleBar под мак. Прозрачность (артефакты под мак и линукс) • Dialog - нативные диалоговые окна как открыть и сохранить файл, alert… • Tray - возможность поместить иконку приложения в трей с возможностью отображения меню по клику • Menu и MenuItem - Возможность создать главное и контекстное меню с вложенным меню • globalShortcut - можно управлять глобальными хоткеями. (осторожно) • clipboard - доступ к буферу обмена • shell - модуль для глубокой desktop интеграции. Можно например показать файл в папке, открыть ссылку, удалить файл в коризну или проиграть бип звук • crashReporter - отпрака отчетов о падениях приложения • autoUpdater - модуль для обновления вашего приложения (quitAndInstall)
  • 33. Electron Быстрый старт ч.1 www.provectus.com # simple project structure your-app/ ── package.json ── main.js └── index.html # package.json { "name" : "your-app", "version" : "0.1.0", "main" : "main.js" } # Clone this repository $ git clone https://github.com/electron/electron-quick-start # Go into the repository $ cd electron-quick-start # Install dependencies and run the app $ npm install && npm start или
  • 34. Electron Быстрый старт ч.2 www.provectus.com const {app, BrowserWindow} = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let win function createWindow () { win = new BrowserWindow({width: 800, height: 600}) // and load the index.html of the app. win.loadURL(`file://${__dirname}/index.html`) // Emitted when the window is closed. win.on('closed', () => { win = null }) } app.on('ready', createWindow)
  • 35. Electron Быстрый старт ч.3 www.provectus.com // Quit when all windows are closed. app.on('window-all-closed', () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (win === null) { createWindow() } })
  • 36. Electron Быстрый старт ч.4 www.provectus.com $ electron . Запуск и сборка (к примеру electron-builder) "build": { "appId": "your.id", "category": "your.app.category.type", "win": { "iconUrl": "(windows-only) https link to icon" } } "scripts": { "pack": "build --dir", "dist": "build" }
  • 37. Фатальные и не очень недостатки www.provectus.com • Размер имеет значение • Скорость запуска и выполнения • Темы оформления (windows live color themes, linux themes) • Баги на разных дистрибутивах linux • Не поддерживает MacOs Vibrance effect (blur) • Некоторые элементы дизайна не возможно правильно реализовать • Безопасность исходного кода • JavaScript (Node.js)
  • 38. Фатальные и не очень недостатки www.provectus.com Пример1
  • 39. Фатальные и не очень недостатки Пример 2 www.provectus.com
  • 40. Итог Мое ИМХО www.provectus.com • Оба проэкта имеют право на жизнь • Выбирать в зависимости от нужной функциональности • Недостатки есть, но их не так много. • Преимущества превышают недостатки • Я бы выбрал electron.
  • 42. Ян Жабин Skype: iyanello Email: yzhabin@provectus-it.com www.provectus.com Контакты