20. Building UI in Code
Presentation Layer
implemented in Javascript
Application Logic
Javascript
Native APIs
Native
@jhugman
21. Titanium
• The big hitter
• Implement everything in Javascript
• Execute UI in native
@jhugman
22. Titanium
+ Good coverage of native APIs
+ Reasonable docs
- Implement UI in JS, so crappy tools
- Lists are hard to get right
- Not easy to style
@jhugman
23. Ejecta
• HTML <canvas> and <audio> APIs
• Implement in Javascript
• Executed using native OpenGL and
OpenAL
@jhugman
24. Ejecta
+ Lots of existing libraries (e.g.
Three.js, processing.js)
+ Faster than WebView’s <canvas>
- Incomplete APIs for Graphics &
Audio
- iOS and Web only
@jhugman
30. Calatrava
• Application logic in Javascript
• Rubyist & Web developers version
• Progressively enhance screens
@jhugman
31. Calatrava
+ Start with HTML. Switch to native
when needed.
- Limited interaction between JS &
Native
- Not very extensible
- Limited access to APIs
- Bundles a JS engine per app
@jhugman
32. Shared App Logic
Your Obj-C Your Java
Calatrava
Your Shared
Javascript
@jhugman
33. Shared App Logic
Your Obj-C Your Java
Kirin
Your Shared
Javascript
@jhugman
34. Kirin
• Native mobile developers version
• Designed for multi-disciplinary
teams
• Designed to be friendly to both
ecosystems
@jhugman
35. Kirin
+ Very extensible
+ Built on top of node.js and npm.
- Limited access to APIs (currently)
@jhugman
37. j2ObjC
• Java -> Objective C compiler
• Google 20% project
• Write in Java, execute natively on
two platforms
@jhugman
38. j2ObjC + GWT
+ Great tooling
+ Very extensible
- Alpha release; Buggy
- Not a tool suite
@jhugman
39. Predictions
• HTML5 on mobile will get better,
slowly
• Good but not great cross-platform
solutions continue in small shops
• Building multiple native clients will
be accepted as the cost of doing
business
@jhugman
40. Summary
• Business need will drive cross-
platform
• HTML UIs still difficult to make nice
• Fertile ground for experimentation
@jhugman
This year, has been different. Both sides has given ground to the other, but most importantly the users needs have been taken into consideration\n
Where is 3d printing? Drones?\nAugmented Reality, HTML5? \n\nMention \nFinancial Times measured success.\nfacebook HTML5 failure\n
\n
All with implementation languages/tools of HTML, CSS, JS.\nAll with execution languages of HTML, CSS, JS.\n\nVery popular, due to low barrier to entry. \n
Are web UIs for mobile ready for building non-trivial apps yet?\n * Webkit fragmentation still a problem\n * Webkit on desktop browsers really good, so easy to mistake.\n * Touch events are still horrible\n * position: fixed still not widely implemented.\n * High profile failures. (Facebook)\n
* UI metaphors differ between platforms.\n * Despite what your boss thinks, users notice and dislike this.\n * It's confusing. \n * It's jarring. \n * It says "We don't care enough^H^H^H^H about *you*". \n * It's nothing positive.\n * This is a problem if you have a Buy button anywhere in your app.\n
* Users will forgive stylised web pages \n * if web metaphors are very well established (e.g. document focused), and \n * the users'/client's care about utility above every else. i.e. "good enough" is "good enough".\n e.g. Google Maps versus iOS6 Maps. \n e.g. Any website you don&#x2019;t care enough about their app.\n * Or you're building a game.\n * Or maybe your brand is so strong.\n
\n
* First generation Cross platform, including html\n\n
\n
\n
Implementation Language: What language/tools does the app dev use? \ne.g. You write Titanium apps&#x2019; UI in Javascript \nExecution Language: What language/tools does the underlying implementation use\ne.g. Ti UIs are rendered natively.\n
All of these projects make claims about how much time\n
Optimizes for javascript access. \nOften at the expense of the other language.\n
UIs Implemented in code: \nPoor tooling compared to native.\n- e.g. Easy to get wrong for different screen sizes\nLots of traffic between JS & native; either slow, or prone to memory leaks.\n
\n
Any time you&#x2019;re implementing in JS, lists will be hard to get right.\nPromises WORA, although doesn&#x2019;t do a great job\n\n\n
\n
This is really just for Games.\nPossible to extend, but not for the faint hearted.\nNo text. \n\nEarly days for the project.\n
\n
\n
Stretch the skills of a single developer.\n
Realistic \n
\n
Named after Santiago Calatrava, famous for his bridges.\n
Very early stages of development\nDocs are not very good.\n\nContributions welcome.\n
Calatrava is a very web centric.\n \nCurrently a very limited javascript to native bridge\nNeeds changes to the core to add extra features that use the bridge\n\nThis will make device access slow to add.\n
Much more generalized js to native bridge.\n
Named after the river creature from Japanese myth. A chimera with the body of dragon and a tail of a deer.\n
Documentation lacking.\nContributions welcome.\n
Realistic \n
\n
Currently a standalone compiler. Not a tool suite.\n