Download - How Do I Code Thee? Let Me Count The Ways
![Page 1: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/1.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 1/56
![Page 2: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/2.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 2/56
How Do I Code Thee?
Let Me Count The Ways.Dan MorrillGoogle Developer Relations
![Page 3: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/3.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 3/56
What is Android?
![Page 4: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/4.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 4/56
The Layer Cake
4
Linux Kernel
Libraries Android Runtime
Application Framework
Applications
![Page 5: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/5.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 5/56
What is Android?
![Page 6: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/6.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 6/56
A chunk of code for making phone calls
6 Image by Evi Christodoulou; http://www.flickr.com/search/?q=startac&l=comm&ct=0Licensed under Creative Commons Attribution-Share Alike
![Page 7: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/7.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 7/56
A robust network stack and Internet client
7
![Page 8: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/8.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 8/56
A Platform for Running Code
8 Image by sludgegulper; http://www.flickr.com/photos/sludgeulper/3441498831/Licensed under Creative Commons Attribution-Share Alike
![Page 9: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/9.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 9/56
A Platform for Running Code
• Android has an application platform, true
• But we didn’t create Android in an attempt to “own mobile”
• Android is a framework for interacting components – Apps can pull in pieces of other apps, the web, or even native
9 Image by genvessel; http://www.flickr.com/photos/genvessel/177133869/Licensed under Creative Commons Attribution
![Page 10: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/10.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 10/56
"Give me your compiled, your ARM, your huddledbytecodes yearning to run free, the wretched refuse of
your teeming store. Send these, the threadless, scriptedstuff to me, I lift my lamp beside the coder’s door."
10
![Page 11: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/11.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 11/56
![Page 12: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/12.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 12/56
Anti-Agenda
• I will not...
– Teach you how to write apps – Rehash stuff that’s covered elsewhere
– Pass judgment
12
![Page 13: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/13.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 13/56
Three Delicious Flavors
![Page 14: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/14.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 14/56
The (current) Three Kinds of Android Code
• Managed Code
• Ajax
• Native Code
14 Images by Sharon Mollerus (http://www.flickr.com/photos/clairity/3229586543/) and Gemma Vittoria (http://www.flickr.com/photos/ggvic/3255129747/)Licensed under Creative Commons Attribution
![Page 15: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/15.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 15/56
Dalvik Code
![Page 16: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/16.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 16/56
Wait Wait, Hold Up
![Page 17: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/17.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 17/56
I Need a Victim
• Interesting but computationally significant
• Efficiently externalizable
• Must make for an interesting visualization
17
![Page 18: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/18.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 18/56
How about.... k-means clustering?
• Used to identify clusters in sets of points
• We’ll use a simple 2D version – 500 randomly-generated points
– 6 clusters (ROYGBV)
• Easy to visualize on screen
• 3 implementations – “Pure” Dalvik app (i.e. 100% Java source code)
– Same visualization code with C algorithm implementation
– JavaScript
18
![Page 19: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/19.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 19/56
K-Means Clustering in 2,000 Words
19
Source: http://en.wikipedia.org/wiki/K-means_clustering
![Page 20: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/20.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 20/56
Dalvik Code
![Page 21: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/21.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 21/56
Dalvik - Overview
• Dalvik is a virtual machine, similar to the JVM or .Net CLR
• Memory-protected, garbage-collected, & lifecycle-managed
• Optimized for embedded machines – Built to reduce much of the need for a JITC
• Custom bytecode format; included translator from Java bytecode
21 Image by damon brunson; http://www.flickr.com/photos/blackdudemedia/2495758057/Licensed under Creative Commons Attribution
![Page 22: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/22.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 22/56
Dalvik - Writing Apps
• Apps run on Dalvik, which provides core framework APIs
• APIs are backed by system infrastructure in native code – e.g. OpenGL, Binder IPC, media, etc.
• Popular tools are supported, and an Eclipse plugin is available
22
![Page 23: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/23.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 23/56
![Page 24: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/24.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 24/56
![Page 25: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/25.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 25/56
Dalvik - Demo
![Page 26: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/26.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 26/56
Dalvik - Examples
• Core system apps
• Currently (nearly) all apps on the Android Market
26
![Page 27: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/27.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 27/56
Dalvik - Future
• Improved (faster, better) garbage collection
• Just-In-Time compilation• Optimizations in core libraries
• Additional APIs -- Bluetooth, P2P, and more
27 Image by the Seattle Municipal Archives; http://www.flickr.com/photos/seattlemunicipalarchives/2680241972/Licensed under Creative Commons Attribution
![Page 28: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/28.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 28/56
Ajax (Web) Apps
![Page 29: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/29.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 29/56
Ajax - Overview
• Apps are broken up into convenient declarative layouts & code
• JavaScript code mutates the DOM to create UI effects• Network access is available via XMLHttpRequest
• Recently, <canvas> allows JavaScript to do direct painting
29 Image by henrybloomfield; http://www.flickr.com/photos/henrybloomfield/2929756532/Licensed under Creative Commons Attribution-No Derivative Works
![Page 30: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/30.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 30/56
Ajax on Android - Overview
• Android’s Browser is based on WebKit + SquirrelFish
• WebKit v528.5, equivalent to Safari 4 beta – Reports as 3.1.2 in the user-agent string -- oops!
• Includes Gears 0.5.17.0 (including location)
• Includes support for the <canvas> tag
30
![Page 31: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/31.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 31/56
Ajax - What Can You Do?
• Old sk00l
– You can, of course, just build static web page apps
31 Image by Jason Rogers; http://www.flickr.com/photos/restlessglobetrotter/434218278/Licensed under Creative Commons Attribution
![Page 32: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/32.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 32/56
Ajax - What Can You Do?
• But you can also build dynamic UIs, via DOM or <canvas>
• You can fetch & store data on your origin server • With HTML5, you can also: – Access location
– Run code outside the main thread
– Store data & pages locally
32
![Page 33: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/33.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 33/56
Ajax on Android - What Can’t You Do?
• Android doesn’t currently support HTML5, but does have Gears
• Background processing – Code only runs when Browser is open and your page is loaded
• Access system & framework APIs [1]
33
[1] - Hold that thought, though.
![Page 34: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/34.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 34/56
Ajax - Demo
![Page 35: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/35.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 35/56
Ajax - Examples
• Google Reader for mobile
• Gmail (web version)• Many mobile web apps (of various fruit flavors)
35
![Page 36: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/36.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 36/56
Ajax - Future
• HTML5 will keep getting better
• Android will continue to include a world-class browser – Gears today, HTML5 in the future
– Plans to upgrade to an even faster JSVM
• Who knows what else? I hear the future is a crazy place
36
![Page 37: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/37.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 37/56
• Augmented Ajax
D a
l v i k
Ajax - What Else Can You Do?
37
JavaObject
JavaObject
JavaObject
WebView
addJavaScriptInterface
Image by Luis Villa del Campo; http://www.flickr.com/photos/maguisso/271623867/Licensed under Creative Commons Attribution
![Page 38: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/38.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 38/56
Augmented Ajax
• Inject functionality into JavaScript
38 Image by Andres Lueda Lopez; http://www.flickr.com/photos/andresrueda/2983149263/Licensed under Creative Commons Attribution-No Derivative Works
![Page 39: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/39.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 39/56
Native Code
![Page 40: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/40.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 40/56
Native - Overview
• Launched as a Dalvik application
• Loads a dynamic library (.so, ARM ELF, linked against Bionic)• Makes calls into native code via JNI for heavy lifting
• .so files are created using the NDK complement to the SDK
• Work-in-progress NDK added to donut branch in git
40 Image by Thomas; http://www.flickr.com/photos/tomsaint/2678120228/Licensed under Creative Commons Attribution
![Page 41: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/41.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 41/56
![Page 42: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/42.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 42/56
Native - What Can’t You Do?
• Current set of APIs is limited to libm and libc
• More will be added over time• h@x0r the system -- sandboxing still applies
42
![Page 43: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/43.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 43/56
![Page 44: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/44.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 44/56
![Page 45: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/45.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 45/56
Native - Future
• Add additional libraries, but which? TBD.
– Let us know!• No plans to make native code a fully-independent app model
– ...but there’s no reason to prevent developers from doing stuff
45
![Page 46: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/46.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 46/56
Bonus Demo
![Page 47: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/47.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 47/56
![Page 48: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/48.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 48/56
Some Data
48
Modality Total RenderingTime PercentRendering
Dalvik 614 16 2.6%
JavaScript 936 303 32.4%
Native 127 15 11.2%
![Page 49: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/49.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 49/56
Some Data
49
Modality Total RenderingTime PercentRendering
Dalvik 614 16 2.6%
JavaScript 936 303 32.4%
Native 127 15 11.2%
![Page 50: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/50.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 50/56
![Page 51: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/51.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 51/56
What’s that mean?
• Dalvik is very competitive with other pure-interpreted VMs
• Dalvik, as a front-end for native code, usually beats JavaScript – But clearly, there are use cases where that doesn’t matter
• And of course, custom native code will always win the speed test
51
![Page 52: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/52.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 52/56
Groundbreaking, Dynamo-Interactive Flowchart
52
RESTService
Do you
have anexisting website?
Is itAjax?
Doyou need
a website?
Why not?
You shouldgo make itAjaxy.
Doesyour app
need to be reallyfast?
Seriously,now. Really
REALLY
fast?
Yeah, that’swhat I
thought.
DalvikAjax
Okayfine,
Native
Hmm,hold on. Do
you need tightintegration with
system?
AugmentedAjax
Hey,what
languages doyou even
know?
C/C++Java
JavaScriptHaven’t we been
here before?
Ugh, Ihave a
headache.
![Page 53: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/53.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 53/56
The Bottom Line
• There’s more than one way to do it
• We aren’t out to shove a paradigm down your throat (ouch?)
53 Image by i_yudai; http://www.flickr.com/photos/y_i/2330044065/Licensed under Creative Commons Attribution
![Page 54: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/54.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 54/56
The Bottom Line
• The “centroid” of your app can be anywhere
– Dalvik apps can embed the web; web apps can call to Dalvik – Apps can include native code pieces for better performance
• Understand your app, & decide based on your app’s needs – If you’re doing lots of drawing, use Dalvik
– If you have a web presence already, use (Dalvik-enhanced?) Ajax – If you have large, slow algorithms, use Dalvik + native code
– Your skills do mean something: go with what you know!
54
![Page 55: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/55.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 55/56
![Page 56: How Do I Code Thee? Let Me Count The Ways](https://reader031.vdocuments.us/reader031/viewer/2022021405/577dabe41a28ab223f8d1dc9/html5/thumbnails/56.jpg)
8/14/2019 How Do I Code Thee? Let Me Count The Ways
http://slidepdf.com/reader/full/how-do-i-code-thee-let-me-count-the-ways 56/56