in native apps allen pike steamclock software build delightful - - PowerPoint PPT Presentation

in native apps
SMART_READER_LITE
LIVE PREVIEW

in native apps allen pike steamclock software build delightful - - PowerPoint PPT Presentation

in native apps allen pike steamclock software build delightful apps. embed a javascript runtime. embrace our platforms. enable tinkering. render native opengl. mix javascript and native. share javascript in native apps. build


slide-1
SLIDE 1

in native apps

allen pike steamclock software

slide-2
SLIDE 2
slide-3
SLIDE 3

build

delightful

apps.

slide-4
SLIDE 4

embed a

javascript runtime.

slide-5
SLIDE 5

embrace our

platforms.

slide-6
SLIDE 6

enable tinkering.

slide-7
SLIDE 7

render

native

  • pengl.
slide-8
SLIDE 8

mix

javascript

and native.

slide-9
SLIDE 9

share

javascript

in native apps.

slide-10
SLIDE 10

build

delightful

apps.

slide-11
SLIDE 11
slide-12
SLIDE 12
slide-13
SLIDE 13
slide-14
SLIDE 14

Blow people’s minds.

slide-15
SLIDE 15

embed a

javascript runtime.

slide-16
SLIDE 16

git clone git://github.com/v8/v8.git

slide-17
SLIDE 17
slide-18
SLIDE 18

Note: The handle stack is not part of the C++ call stack, but the handle scopes are embedded in the C++ stack. Handle scopes can only be stack- allocated, not allocated with new.

slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24
slide-25
SLIDE 25
slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28

JavaScriptCore.framework

slide-29
SLIDE 29

let be

slide-30
SLIDE 30

var multiply = function(arg1, arg2) { return arg1 * arg2; }

In JavaScript In Objective-C

slide-31
SLIDE 31

var multiply = function(arg1, arg2) { return arg1 * arg2; } [jsContext evaluateScript:jsFile]; JSValue* jsMultiply = jsContext[@"multiply"]; JSValue* jsResult = [jsMultiply callWithArguments:@[@5, @17]];

In JavaScript In Objective-C

slide-32
SLIDE 32

int (^multiply)(int, int) = ^(int arg1, int arg2) { return arg1 * arg2; }; jsContext[@"multiply"] = multiply;

In Objective-C In JavaScript

slide-33
SLIDE 33

int (^multiply)(int, int) = ^(int arg1, int arg2) { return arg1 * arg2; }; jsContext[@"multiply"] = multiply;

In Objective-C In JavaScript

var result = multiply(1, 2);

slide-34
SLIDE 34

JSContext

Load a JavaScript VM

slide-35
SLIDE 35

JSExport

Objective-C to JavaScript

slide-36
SLIDE 36

JSValue

JavaScript to Objective-C

slide-37
SLIDE 37

JavaScriptCore WebView Nice bridging More flexibility Reference cycles

  • +

+ + Delightful possibilities =

slide-38
SLIDE 38

embrace our

platforms.

slide-39
SLIDE 39

blue text you can click focus on images white backgrounds type-heavy layouts flat rectangles

slide-40
SLIDE 40

highly responsive touch gorgeous scrolling physics-based gestures beautiful 3d real-time blur

slide-41
SLIDE 41
slide-42
SLIDE 42

“A 500 lb. monolith

  • f Eclipse and licensing”

211 MB

slide-43
SLIDE 43

rewritium

slide-44
SLIDE 44

enable tinkering.

slide-45
SLIDE 45
slide-46
SLIDE 46
slide-47
SLIDE 47
slide-48
SLIDE 48
slide-49
SLIDE 49

show them

the demo

now allen.

slide-50
SLIDE 50

wow, a calculator.

github.com/SteamClock/JSCalc

slide-51
SLIDE 51

render

native

  • pengl.
slide-52
SLIDE 52
slide-53
SLIDE 53
slide-54
SLIDE 54

mix

javascript

and native.

slide-55
SLIDE 55

node Java UIKit Android UI Objective-C

slide-56
SLIDE 56

node UIKit Android UI logic logic

slide-57
SLIDE 57

node Java Objective-C HTML HTML

slide-58
SLIDE 58

node Java UIKit Droid Obj-C HTML HTML

slide-59
SLIDE 59

Java UIKit Droid Obj-C HTML HTML node Brainfuck OpenGL Text WebObjects logic

slide-60
SLIDE 60

share

javascript

in native apps.

slide-61
SLIDE 61

a wild

rhino

appears!

slide-62
SLIDE 62

embed a

javascript runtime.

slide-63
SLIDE 63

go build

delightful apps.

apike steamclock.com