Upgrade to Pro — share decks privately, control downloads, hide ads and more …



A review of a rhodes, a cross platform mobile development platform, that has since been acquired by Motorola

Jonathan Wallace

April 13, 2011

More Decks by Jonathan Wallace

Other Decks in Programming


  1. About Rhodes Tuesday, February 5, 13 let’s talk about rhodes:

    cross platform smart phone app development framework but first! a quick tangent
  2. cross-platform!!!!!!! Tuesday, February 5, 13 you can build on mac,

    windows or linux. to build for specific devices, you have to have the device SDK installed. in other words, you must have xcode, and therefore mac os x, installed for an iphone build targeted towards enterprise apps. what’s that mean? its not good for games or graphic intensive apps or platform-specific native UI controls. if you were planning to build the next angry birds, you can leave now.
  3. Required software • Ruby 1.8.6 or 1.8.7 • RubyGems 1.3.5

    or greater • GNU make 3.8 Tuesday, February 5, 13 what extensions need to be built?
  4. Web server in an app! • MVC • user interface

    is HTML/CSS • UI rendered in native browser UI control embedded in your phone app Tuesday, February 5, 13 wehn you run the rake task to build your application, you get a web server in an app
  5. What you need to know • html • css •

    javascript • ruby Tuesday, February 5, 13 so i’m telling you that you only need to know web development skills to build an iphone, android, or windows mobile app?
  6. What’s it mean to be native? Tuesday, February 5, 13

    talk about how you can have a link on your iphone screen to a web app
  7. Native App Cons • sign up for each app marketplace

    Tuesday, February 5, 13 this also means you need an computer environment to set up the SDK. i.e., mac for iphone, windows for windows mobile, etc.
  8. Details • blackberry: compiled to Java bytecode • iPhone, Android,

    and Windows Mobile: compiled to ruby 1.9 bytecode; small ruby executor included w/app • Rhodes ruby is a subset of 1.9 Tuesday, February 5, 13
  9. NO EVAL • why? • iPhone App Store’s Rule 3.3.2

    • “An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and built-in interpreter(s).” (www.rhomobile.com/blog/2009/05/29/iphone-app-store- rules-and-guidelines-on-use-of-frameworks/) Tuesday, February 5, 13
  10. Differences from Rails • no model directory; each model is

    its own directory • no validations • must compile code and run in a simulator/ device to execute it • much smaller and simpler Tuesday, February 5, 13
  11. RHOM • mini object-mapper • “property bag” database • local

    device-side db like SQLite or HSQLDB Tuesday, February 5, 13
  12. Example Tuesday, February 5, 13 Pros • Simple to use,

    it doesn’t require specifying attributes. • Data migrations are not necessary. • Attributes can be added or removed without modifying the database schema. Cons: • db size: For some applications, the database size may be significantly larger than fixed schema. This is because each attribute is indexed for fast lookup. • slower Sync: process may be slightly slower because inserts are performed at attribute level.
  13. Fixed Schema features http://docs.rhomobile.com/rhodes/rhom Tuesday, February 5, 13 Fixed Schema

    Advantages • Smaller database size, indexes can be specified only on specific attributes. • Sync process may perform faster because whole objects are inserted at a time. Fixed Schema Disadvantages • Schema changes must be handled with data migrations. • Database performance may be slow unless you specify proper indexes. When the application starts the first time after an update, the database will be (re)created if theapp_db_version in rhoconfig.txt is different from what existed before. If the database is recreated, the existing database is removed along with all data. on_migrate_source(old_version, new_src)
  14. Rhom API • CRUD (create, update, destroy, delete_all, update_attributes, save)

    • paginate • find(*args) (:all, :first, :count, :conditions, :order, :orderdir, :select, :per_page, :offset) • find_by_sql <-- only for fixed schema Tuesday, February 5, 13 find_by_sql is SLOW! only works for fixed schema
  15. Rhom API Sync • sync • set_notification callback • can_modify

    <-- per object • changed? <-- per object • clear_notification <-- per object Tuesday, February 5, 13
  16. Web services? • Oh yes, use RhoSync • or direct

    via: • JavaScript • Ruby net/http • Rho:AsyncHttp Tuesday, February 5, 13 • <-- how you gonna handle the response w/native controls? • <-- not reasonable
  17. Threading? • Three main threads • Main UI thread •

    Ruby thread • Sync thread • Auxiliary threads (notifications, geolocation, client registration and push) ^-- short lived Tuesday, February 5, 13
  18. The View • Uses a layout.erb like rails • Custom

    CSS framework • Modified JQTouch (version 1, beta 2) Tuesday, February 5, 13
  19. Let’s look at some code and talk about: • App

    initialization • App structure • Views Tuesday, February 5, 13
  20. Credits • http://en.wikipedia.org/wiki/Cross-platform • http://www.apress.com/9781430228684 ^--- pro smartphone cross platform

    development • http://www.san-smith.com/ • http://docs.rhomobile.com/ Tuesday, February 5, 13