Your SlideShare is downloading. ×
0
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Cross-Platform, Native Mobile Development with a DSL
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cross-Platform, Native Mobile Development with a DSL

1,768

Published on

You can build native apps for iOS, Android, Windows Phone 7, and web apps from a single source with tools of the Eclipse ecosystem. We will present a domain-specific language we used to create …

You can build native apps for iOS, Android, Windows Phone 7, and web apps from a single source with tools of the Eclipse ecosystem. We will present a domain-specific language we used to create data-oriented apps and avoid manually porting applications to other platforms. Still, you get fully readable, extensible source code of the respective target such as Objective-C, Java, C# or Python.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,768
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
73
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Heiko Behrens, Peter Friese Cross-Platform, Native Mobile Development with a DSLDienstag, 13. September 2011
  2. Cross-Platform, Native Mobile Development with a DSL @HBehrens @PeterFrieseDienstag, 13. September 2011
  3. @moskovich: “Your mobile phone has more computing power than all of NASA in 1969. NASA put a man on the moon...Dienstag, 13. September 2011
  4. ...we put a bird into pigs.”Dienstag, 13. September 2011
  5. countless devicesDienstag, 13. September 2011
  6. diversity of platformsDienstag, 13. September 2011
  7. Java public class SpeakersList extends GenericListActivity<Speaker> { List<Speaker> speakers; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("Speakers"); speakers = getItemsFromProvider(); ArrayList<AbstractRowAdapter> rowAdapters = new ArrayList<AbstractRowAdapter>(); Iterable<Speaker> items1 = speakers; for (Speaker i : items1) rowAdapters.add(new Cell1(i)); setListAdapter(new GenericItemAdapter(this, rowAdapters)); finishCreation(); }Dienstag, 13. September 2011
  8. C# public partial class SpeakerDetailsDetailsView : PhoneApplicationPage { public SpeakerDetailsDetailsView() { InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { string selectedIndex = ""; if (NavigationContext.QueryString.TryGetValue("itemByIndex", out selectedIndex)) { int index = int.Parse(selectedIndex); DataContext = App.RootViewModelProvider.BlogpostsModelProvider().BlogItems[index]; } } }Dienstag, 13. September 2011
  9. Objective-C @implementation SpeakersListViewController - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(section == 0) { return [[[contentProvider valueForKeyPath:@"content"] asArray] count]; } else return 0; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { id item = [self.items objectAtIndex: indexPath.row]; IPContentProvider *provider = [(itemisAppProviders*)contentProvider.providers providerForSpeakerByName: [item valueForKeyPath:@"name"]]; SpeakerDetailsViewController *controller = [[SpeakerDetailsViewController alloc] init]; controller.contentProvider = provider; [self.navigationController pushViewController: controller animated: TRUE]; [controller release]; }Dienstag, 13. September 2011
  10. HTML {% extends "generated/application.html" %} {% block title%}Speakers{% endblock %} {% block content_class %}table list{% endblock %} {% block content %} <ul> {% for s in data|to_list %} <li> {% url views.SpeakerDetailsBySpeakerByName s.name|urlencode as url %} <a href="{{ url }}"> <div class="cell_text">{{s.name|safe}}</div> </a> </li> {% endfor %} </ul> {% endblock %}Dienstag, 13. September 2011
  11. server-side web Web Server executes application logic Web Browser Files Database Device BackendDienstag, 13. September 2011
  12. server-side web 5 Things your Company can do to speed up Tuesday its mobile Website 11.45 Thomas Schlagenhaufer Gutenbergsaal III Geräte, Plattformen,Versionen - Tuesday neue Herausforderungen im mobilen Markt 15.00 Jan Webering, Roland Gülle Gutenbergsaal IIIDienstag, 13. September 2011
  13. client-side web Web Browser JavaScript executes application logic Files Database Device BackendDienstag, 13. September 2011
  14. client-side web JavaScript Data Binding mit jQuery Mobile Wednesday Tobias Bosch, Stefan Scheidt 10.00 Watfordsaal Lessons Learned: Mobile Business- Wednesday Webanwendungen mit jQuery Mobile 17.15 Timo Elbert WatfordsaalDienstag, 13. September 2011
  15. hybrid app Native App Interpreter Request Interceptor JavaScript Bridge Browser executes JavaScript Device BackendDienstag, 13. September 2011
  16. hybrid app Cross-Plattform Mobile Development mit Wednesday Sencha Touch und PhoneGap 16.00 Stefan Kolb WatfordsaalDienstag, 13. September 2011
  17. interpreted app Native App interpreter Database Application Script Files Device BackendDienstag, 13. September 2011
  18. hybrid appDienstag, 13. September 2011
  19. generated app Generator Generator Input Native App Logic Logic Model describes logic and Database Database complete system Files Files Files Database Device BackendDienstag, 13. September 2011
  20. App Anatomy 101Dienstag, 13. September 2011
  21. Views Session Cells title room Navigation Entities ContentProvidersDienstag, 13. September 2011
  22. DSL for mobile tabbarApplication itemisApp { button { title="News" icon="calendar.png" view=EventList( CurrentTimeline() ) } button { title= "itemis" icon= "itemis.png" view= OfficeList( CompanyDescription() ) } button { title= "Carreer" icon= "trophy.png" view= CareerView( CareerData() ) } }Dienstag, 13. September 2011
  23. Demo :)Dienstag, 13. September 2011
  24. «Xpand»Dienstag, 13. September 2011
  25. developer’s point of view Simulator Objective-C Device DSL describes application Simulator Java DeviceDienstag, 13. September 2011
  26. toolsmith’s point of view «Xpand» Parser Templates Templates iPhone Android Grammar Editor describes DSL EMF MMDienstag, 13. September 2011
  27. applause http://applause.github.com Simulator «Xpand» Objective-C Device Parser Templates Templates iPhone Android Grammar Editor DSL describes DSL describes application EMF MM Simulator Java DeviceDienstag, 13. September 2011
  28. reduced complexity user interaction action = { log(“before”); UpdateWorkflow(item.Box.JobId, userInput("Cancel")); refresh(); log(“after”); } server round tripDienstag, 13. September 2011
  29. action = { log(“before”); UpdateWorkflow(item.Box.JobId, userInput("Cancel")); refresh(); log(“after”); } [functions log: @"before"]; [provider userInputOn:@"Cancel" promises:^(id promise){ IPContentProvider *provider = [providers providerForUpdateWorkflow:content.Box.JobId andUserComment:promise]; [functions provider: provider promises:^(id promise){ [functions refreshPromises:^(id promise){ [functions log: @"after"]; }]; }]; }];Dienstag, 13. September 2011
  30. paradigm agnosticDienstag, 13. September 2011
  31. More Demo :))Dienstag, 13. September 2011
  32. twitter @HBehrens twitter @PeterFriese blog http://HeikoBehrens.net blog http://PeterFriese.de CEO/Founder getBeamApp.comDienstag, 13. September 2011

×