Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010

15,498 views
15,157 views

Published on

slides of a presentation about cross-platform mobile app development I gave at MobileTechCon 2010 in Mainz (Germany).

Links and additional information on the related blog post at http://HeikoBehrens.net/2010/10/11/cross-platform-app-development-for-iphone-android-co-—-a-comparison-i-presented-at-mobiletechcon-2010/

Published in: Technology
3 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
15,498
On SlideShare
0
From Embeds
0
Number of Embeds
244
Actions
Shares
0
Downloads
344
Comments
3
Likes
5
Embeds 0
No embeds

No notes for slide

Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010

  1. 1. Heiko Behrens | itemis AG Plattformübergreifende App-Entwicklung – ein Vergleich
  2. 2. eBay aims for $1.5 billion in mobile sales in 2010 internet retailer, Q1 2010 mobile download revenue exceeded $29.5 billion by 2013 Gartner, Q2 2010 07/Q2 07/Q4 08/Q2 08/Q4 09/Q2 09/Q4 10/Q2 10/Q4
  3. 3. I want an iPhone App !
  4. 4. diversity of platforms
  5. 5. 94 App Stores
  6. 6. two categories
  7. 7. How can we address this diversity?
  8. 8. You can write amazing web apps that look exactly and behave exactly like apps on the iPhone Steve Jobs, WWDC 2007
  9. 9. WEB APPS
  10. 10. demo
  11. 11. apple.com/webapps openappmkt.com
  12. 12. what’s that native thing?
  13. 13. demo
  14. 14. Unreal Tech Demo demo
  15. 15. <div class=”light”></div> <div id=”floor” class=”reflection”></div>
  16. 16. the User’s perspective on Apps
  17. 17. Experience
  18. 18. pre-installed downloaded online native website W3C widget hybrid interpreted generated
  19. 19. web apps
  20. 20. HTML5 cache manifest, local storage, forms, geo location CSS3 animation, transitions, 3D transformation Resolution css media queries, reference, categories, float layout URLs mails, telephone, sms, maps, youtube, etc.
  21. 21. Web Frameworks iWebKit, iUI, jQTouch Sencha Touch 2010 Q4: JQuery mobile framework
  22. 22. Sencha Touch MIT License GPL Dual License declarative + JQuery programmatically focus on iPhone aims at cross platform simple complex See also iWebKit, iUI, jQTouch, JQuery Mobile (2010 Q3)
  23. 23. development easy effort known technology + processes monetization bad for user experience experience fancy UI possible, but platform specific hardware very limited offline generally possible
  24. 24. hybrid apps
  25. 25. Request Interception demo
  26. 26. MIT License See also QuickConnect, Big5 (discontinued)
  27. 27. development as with web effort known technology + processes monetization app stores experience as with web hardware mostly accessible offline as with web
  28. 28. interpreted apps
  29. 29. – HTML & CSS =
  30. 30. Apache 2 License JS programmatically native controls iPhone, iPad, Android BlackBerry (soon)
  31. 31. demo
  32. 32. MonoTouch Rhodes starts at 399 USD MIT License .net runtime ruby C/S on the device iOS only iPhone, Windows Mobile 6, BlackBerry, Symbian and Android
  33. 33. Screen Flow Interpreters The aim of XXX is to screen the programmer completely out from the mobile platform itself, and transfer the entire application logic to central application server level.
  34. 34. development heavy API, but only once effort barely any tooling monetization app stores experience native hardware mostly accessible offline native
  35. 35. generated apps
  36. 36. XMLVM — A CrossCompiler
  37. 37. Java (input) public class HelloWorld { static public void main(String[] args) { System.out.println("Hello World"); } }
  38. 38. XML (model) <vm:xmlvm xmlns:vm="http://xmlvm.org" xmlns:jvm="http://xmlvm.org/jvm"> <vm:class name="HelloWorld" extends="java.lang.Object"> <vm:method name="main" isPublic="true" isStatic="true" stack="2" locals="1"> <vm:signature> <vm:return type="void" /> <vm:parameter type="java.lang.String[]" /> </vm:signature> <vm:code> <jvm:var name="args" id="0" type="java.lang.String[]" /> <jvm:getstatic class-type="java.lang.System" type="java.io.PrintStream" field="out" /> <jvm:ldc type="java.lang.String" value="Hello World" /> <jvm:invokevirtual class-type="java.io.PrintStream" method="println"> <vm:signature> <vm:return type="void" /> <vm:parameter type="java.lang.String" /> </vm:signature> </jvm:invokevirtual> <jvm:return /> </vm:code> </vm:method> </vm:class> </vm:xmlvm>
  39. 39. XSLT (generator) <xsl:template match="jvm:irem"> <xsl:text> _op2.i = _stack[--_sp].i; // Pop operand 1 _op1.i = _stack[--_sp].i; // Pop operand 2 _stack[_sp++].i = _op1.i % _op2.i; // Push remainder </xsl:text> </xsl:template> typedef union { id o; int i; float f; double d; } XMLVMElem;
  40. 40. Output + (void) main___java_lang_String_ARRAYTYPE :(NSMutableArray*)n1 { XMLVMElem _stack[2]; XMLVMElem _locals[1]; int _sp = 0; XMLVMElem _op1, _op2, _op3; int _i; for (_i = 0; _i <1; _i++) _locals[_i].o = nil; NSAutoreleasePool* _pool = [[NSAutoreleasePool alloc] init]; _locals[0].o = n1; _op1.o = [java_lang_System _GET_STATIC_java_lang_System_out]; _stack[_sp++].o = _op1.o; _stack[_sp++].o = @"Hello World"; _sp -= 2; [((java_io_PrintStream*) _stack[_sp].o) println___java_lang_String:_stack[_sp + 1].o]; [_pool release]; return; }
  41. 41. custom solution «Xpand»
  42. 42. own generator for Mobile Apps
  43. 43. demo
  44. 44. development huge one-time invest effort easy for aimed cases, easy to extend monetization app stores experience native hardware native offline native
  45. 45. cross platform ?
  46. 46. web hybrid interpreted generated development effort monetization experience hardware offline
  47. 47. another perspective
  48. 48. native own language own culture own ecosystem field skills promotion: watch avatar - the movie!
  49. 49. not-so-native economic objectives establishment “natives are endangered” promotion: watch avatar - the movie
  50. 50. twitter @HBehrens blog http://HeikoBehrens.net mail Heiko.Behrens@itemis.de xing http://www.xing.com/profile/Heiko_Behrens linkedin http://www.linkedin.com/in/HeikoBehrens

×