35
Web technologies for desktop development Darko Kukovec

Web technologies for desktop development @ berlinjs apps

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Web technologies for desktop development @ berlinjs apps

Web technologies for desktop development

Darko Kukovec

Page 2: Web technologies for desktop development @ berlinjs apps

Hybrid apps

• Web technologies + native wrapper!

• Mobile hybrid apps!

• PhoneGap!

• Custom!

• Desktop

Page 3: Web technologies for desktop development @ berlinjs apps

Why hybrid desktop applications?

Page 4: Web technologies for desktop development @ berlinjs apps

Multi-platform development

• Java!

• .NET + mono!

• QT!

• Hybrid app

Page 5: Web technologies for desktop development @ berlinjs apps

You already know JavaScript(and HTML and CSS)

Page 6: Web technologies for desktop development @ berlinjs apps

Wrappers

Page 7: Web technologies for desktop development @ berlinjs apps

Adobe Air

• Slow!

• Limited developer tools!

• HTML5 + ActionScript!

• Distribution: Executable file

Page 8: Web technologies for desktop development @ berlinjs apps

QT• Custom wrapper!

• HTML5 + native code!

• C++!

• Python!

• JavaScript!

• Distribution: Executable file

Page 9: Web technologies for desktop development @ berlinjs apps

Chrome Apps

• HTML5 + Chrome APIs!

• 50+ APIs!

• Distribution: Chrome Web Store

Page 10: Web technologies for desktop development @ berlinjs apps

app.js

• webkit + node.js!

• Slow development!

• HTML5 + node.js!

• Distribution: Executable file

Page 11: Web technologies for desktop development @ berlinjs apps

node-webkit• Chromium + node.js!

• Fast development (Intel)!

• Chromium 32!

• node.js 0.11.9!

• HTML5 + node.js!

• Distribution: Executable file

Page 12: Web technologies for desktop development @ berlinjs apps

brackets-shell

• HTML5 + some v8 extensions (e.g. file access)!

• Made by Adobe for the Brackets code editor!

• “Note: The brackets-shell is only maintained for use by the Brackets project.”!

• Distribution: Executable file

Page 13: Web technologies for desktop development @ berlinjs apps

TideSDK

• HTML5 + PHP/Ruby/Python!

• Distribution: Executable file

Page 14: Web technologies for desktop development @ berlinjs apps

node-webkit

Page 15: Web technologies for desktop development @ berlinjs apps

Hello world!

• What you need:!

• node-webkit!

• manifest (package.json)!

• HTML, JS

Page 16: Web technologies for desktop development @ berlinjs apps

Running & testing• Running!

• If nw is in the Terminal path: nw .!

• alias nw='open -a node-webkit'

• Testing!

• Chromedriver!

• Selenium

Page 17: Web technologies for desktop development @ berlinjs apps

Debugging

• Chrome Dev Tools!

• DevTools Jail!

• Remote debugging!

• Sublime Text console

Page 18: Web technologies for desktop development @ berlinjs apps

Packaging & distribution• package.nw or package.json in the same

folder as the node-webkit executable!

• Packaging into the executable file!

• Windows and Linux - make a package.nw file and run one command from the console!

• OS X - copy the package to Content/Resources/app.nw inside of the app

Page 19: Web technologies for desktop development @ berlinjs apps

Native elements• File dialogs!

• Files and folders!

• Opening URLs in the default browser!

• Opening files in the default app or in the file manager!

• Menu bar / status bar!

• Clipboard access!

• Kiosk mode!

• Frameless mode

Page 20: Web technologies for desktop development @ berlinjs apps

Tech stuff

Page 21: Web technologies for desktop development @ berlinjs apps

• global window!

• Chromium console instead of the node.js console!

• Conflicts!

• node.js require and RequireJS!

• underscore

Node.js changes

Page 22: Web technologies for desktop development @ berlinjs apps

Node.js modules• Builtin!

• require!

• JavaScript!

• Local install (node_modules)!

• require!

• C/C++!

• nw-gyp!

• Platform dependent!

• node-webkit version dependent

Page 23: Web technologies for desktop development @ berlinjs apps

DOM changes

• iframe!

• Disable security!

• Node.js!

• Top!

• DevTools Jail

Page 24: Web technologies for desktop development @ berlinjs apps

Code protection• v8 snapshot!

• Can hide a part (tens of KB) of the code into a binary file!

• Platform & node-webkit version dependent!

• Little slower, loaded at startup

Page 25: Web technologies for desktop development @ berlinjs apps

Our node-webkit experience

My code is compiling

Page 26: Web technologies for desktop development @ berlinjs apps

Infinum• Three node-webkit project in the last year!

• Two kiosk mode apps for Windows!

• Desktop app for Windows and OSX

Page 27: Web technologies for desktop development @ berlinjs apps

Crypto• Decrypting about 50x faster than Adobe Air!

• Tens of ms instead of a few seconds per photo

Page 28: Web technologies for desktop development @ berlinjs apps

Optical media

• Detection!

• Windows: periodically check all the letters!

• OSX: Watch /Volumes!

• File access!

• fs module

Page 29: Web technologies for desktop development @ berlinjs apps

Auto update• Not supported out of the box!

• Our own update detection & downloading!

• Windows: Installation wizard is downloaded!

• OSX: All the app files can be replaced while the app is running

Page 30: Web technologies for desktop development @ berlinjs apps

What else is node-webkit used for

Page 31: Web technologies for desktop development @ berlinjs apps

• Gifrocket

• Creating gif animations from videos

• Ambiance

• Code editor with support for modules (npm)

• Arduinoscope

• Osciloscope for Arduino

• Hardware access

Page 32: Web technologies for desktop development @ berlinjs apps

What is possible

Page 33: Web technologies for desktop development @ berlinjs apps

Node.js + Chromium

• Atwood’s Law:!

• “any application that can be written in JavaScript, will eventually be written in JavaScript.”!

• http://www.reddit.com/r/atwoodslaw/

Page 34: Web technologies for desktop development @ berlinjs apps

Node.js + Chromium

Page 35: Web technologies for desktop development @ berlinjs apps

Any questions, Dave?

Thank you!