Automated mobile application porting


Published on

MobFest @ Microsoft Office, 18th Feb 09
7pm to 10pm

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Automated mobile application porting

  1. 1. MobFest February 2009 Aaron Chan Business Developer Cross Platform Development & Porting
  2. 2. The causes What causes fragmentation? The Fragmentation Problem
  3. 3. The causes What causes fragmentation? Hardware differences, models & markets Verification of handsets /java New JSRs and APIs The speed of the standards process Manufacturer differentiation Handset customization Handset variation & language differences Why fragmentation?
  4. 4. Strategies How to deal with fragmentation (1) <ul><li>A) The brute force method </li></ul><ul><li>Create reference versions </li></ul><ul><li>Create 10-15 primary ports </li></ul><ul><li>Create 50-100 secondary ports </li></ul><ul><li>Involves code washing, pre-processing search & replace expressions, various manual adjustment. </li></ul><ul><li>Typical for Java applications deployment </li></ul>How to deal with fragmentation
  5. 5. Strategies <ul><li>B) The transcoding method </li></ul><ul><li>Create reference versions </li></ul><ul><li>Create a port for each OS </li></ul><ul><li>For each phone in each group, carry out transcoding using device profiles </li></ul><ul><li>Normally, the source code is often sent elsewhere for treatment </li></ul>Or use transcoding
  6. 6. Strategies <ul><li>C) Advanced compiler technology </li></ul><ul><li>Make the code: </li></ul><ul><li>Transformable </li></ul><ul><li>able to carry out complex analysis </li></ul><ul><li>able to perform static checks </li></ul><ul><li>form an application syntax tree </li></ul><ul><li>A compiler back-end for each OS, adapted to optimally output code for each target platform, in analogy to GCC technology and its back-end(s) </li></ul>Which is what we’re gonna be showing you here today! Or transform
  7. 7. MoSync MoSync a cross platform (Symbian, J2ME, Windows Mobile and others) tool that makes it easy to port, update and create applications from one mobile platform to another . MoSync removes bottlenecks in developing and deploying and allows dynamic services to be created simply . Mobile development has never been easier and porting is history! The solution
  8. 8. One source code direct to Symbian, Java and Windows Mobile <ul><li>Pre-processer directives </li></ul><ul><li>Abstraction layer </li></ul><ul><li>Device analysis </li></ul><ul><li>Time to demo! </li></ul>
  9. 9. <ul><li>The Eclipse IDE </li></ul><ul><li>Project window </li></ul><ul><li>Building the project </li></ul><ul><li>Testing in the emulator </li></ul>Demo “Simple application”
  10. 10. Other examples “advanced application” <ul><li>With permission from with author Eric Chahi </li></ul><ul><li>Source interpreter </li></ul><ul><li>SDL stub ported in 4 hours </li></ul>Porting Another World* into MoSync * The game is known as Out of this World in the US and Outer World ( アウターワールド ) in Japan
  11. 11. “ Building Ruby” <ul><li>Ruby for Symbian, Windows Mobile (and java) </li></ul><ul><li>Open source language </li></ul><ul><li>Ported in 1,5 days </li></ul>A Ruby interpreter built on MoSync
  12. 12. How to automatically port to hundreds of phones The solution <ul><li>Single projects vs. multiple projects </li></ul><ul><li>Building for many devices and O S s </li></ul><ul><li>Using the Finalizer </li></ul><ul><ul><li>generating scripts/criteria </li></ul></ul><ul><ul><li>running script </li></ul></ul><ul><ul><li>defines, pre- and post-steps </li></ul></ul><ul><ul><li>output structure </li></ul></ul><ul><ul><li>saved-in project </li></ul></ul>
  13. 13. Developing for Symbian devices w/o C++ <ul><li>N e w technology means new languages </li></ul><ul><li>Different front-ends </li></ul><ul><li>C/C++ </li></ul><ul><ul><li>J ava </li></ul></ul><ul><ul><li>Objective C </li></ul></ul><ul><ul><li>Fortran/ADA/Small Talk/Erlang/ </li></ul></ul><ul><ul><li>n ew </li></ul></ul><ul><li>Scripting languages (python, ruby) </li></ul><ul><li>Different back-ends </li></ul><ul><ul><li>iPhone </li></ul></ul><ul><ul><li>Android </li></ul></ul><ul><ul><li>Moblin </li></ul></ul><ul><ul><li>Flash/ECMA script/weird </li></ul></ul><ul><ul><li>new </li></ul></ul>
  14. 14. Download your copy today from Thank you! Mobile Sorcery AB Aaron Chan, business developer a [email_address]