3
votes

I'd like to develop an application with versions both for PCs (Windows, Mac, Linux etc) and mobile devices (iPhone, Android etc). I would like to share/reuse code between these platforms as much as possible below the GUI layer. The GUI layer itself may be specific or shared between some platforms. I'd like to use web technologies where possible, so prefer to do shared code in JavaScript and at least PC GUI in HTML.

There are no fancy GUI requirements, but focus is rather on synchronizing and storing/searching a lot of data (possibly gigabytes) and receiving notifications about updates on it.

What (set of) application development stacks would you suggest?

Update: Specifically, I'm looking for the tools or libraries that:

  1. Can produce installable applications on each platform (installable exe, apk etc).
  2. Allow the applications to run completely offline using synced data.
  3. Minimize the number of different APIs and implementations my shared code needs to worry about (same database API, as few different DOM implementations as possible, etc).

F ex, I could make an HTML-based Adobe Air application for PCs and then use PhoneGap on mobile. Or are there better offerings for my use case?

1
I haven't used but I would suggest you take a look at Mono, it's available on all these platforms.Marcio Covre
Thanks, looks good! Too bad I'm more of a Java guy than .NET... :-(mikewse
You should learn .NET then... its not too dissimilar.Thomas Clayson
Just discovered that the price tag doesn't look good :-Pmikewse

1 Answers

0
votes

Web is your friend. You're going to need a web-based api and a web-based database. Presumably you're going to be creating a web site as well, so as you're creating the web site you should be looking to put all of your business logic into an API (or creating controllers which can output to either XML/JSON as well as HTML for your front end website).

This way the GUI can be created natively on each platform, and most of the "business logic" goes through the server.

You could even create one GUI (web-based) which can be "responsive" (i.e. changes depending on the device you're viewing it on.. see Twitter's Bootstrap for inspiration) and all you would need to create natively is a web browser/web view based app which would be a window onto your website.

If you're set on cross platform dev then Mono looks like your best bet. It claims to be cross platform onto Windows, PC, Linux, iOS and Android - although as you already suspect you will be creating separate apps for all. You might be able to package the business logic into frameworks or plugins which can be shared across all the platforms which might suit your needs. Its expensive though - for a company it'll be fine, but if this is just a "side project" then it might be a bit too pricey.