views:

345

answers:

3

I was trying to compare the three above mentioned platforms and what considerations one needs to think about when programming in order to create some kind of code base that could run on all three.

This is what I have collected for the iPhone - it would be great if somebody else could write something similar for the other two.

  1. Only one application can run at any given time. i.e. that is why the SQLLite database is loaded as a file into the app instead of as traditionally having some kind of server to connect to.
  2. Only one fixed size window 480x320 pixels
  3. Runs in a sandbox, when the app is deployed a sandbox is created "around" the app, the app can only read/write files from within that area. Also low-level access to the phone is restricted.
  4. Since a program can be stopped at any time (see point 1) this needs to be considered when designing the app, at any time must the app be able to write its current state to disk so that it can resume later. If this takes longer than five seconds the app will be aborted.
  5. 128MB RAM, about half of that 64MB is available to the app. There is typicall 4GB storage (depends on model), no virtual memory, if memory is running out the app may be aborted.

Edit: just to be clear, I am not after which platform/os is best for the developer, I am just interested in spec. comparison to know what can be expected if one has three target platforms and using native language for each (not web apps), what the memory and other considerations are.

Edit: removed language as its assumed that native language for the platform will be used.

+1  A: 

For Windows Mobile I want to add:

  • Windows Mobile in comparison to iPhone allows multiple applications to run at same time.
  • It comes with variable screen sizes and has different sdks ( Windows Mobile Professional for 'Windows Phones' (smartphones) with touchscreens and Windows Mobile Standard for 'Windows Phones' with regular screens)
  • The framework which is generally used is .Net Compact Framework besides some people also prefer open-net which is a open source framework.
  • Unlike in iPhone, Windows Mobile has no private api's which means it gives more power to developers.
  • The memory size allowed for a program is 32 mb
  • You do not need a developer license for developing and shipping applications on windows mobile although windows mobile itself prompts you to avoid installing apllications which are from unknown publishers.( which is more interesting unlike in iPhone you need to have a license while you only want to debug your applcation on your device(not for the jailbroken devices.))

And for some bad things about windows mobile, see this link.

Thanks,

Madhup

Madhup
Since the poster is targeting all platforms simultaneously, he doesn't need to know the ways in which Windows Mobile is less restrictive than the iPhone, he needs to know in what ways it is more restrictive. The screen one is relevant - cannot assume a screen size in the app. Memory as well.It's also impossible that WinMo has no private APIs.
Ken
Since there is no restriction on app distribution for WM, there essentially are no privateAPI's in the way you would think about iPhone development. There may well be non-published API's you might not want to call because your app is more brittle, but nothing prevents you from doing so and distributing the app.Of course, this reponse only enumerates the lesser restrictions of distribution, ignoring the greater restrictions of developing on a mobile platform without a lot of the libraries like CoreData and CoreAnimation the iPhone has...
Kendall Helmstetter Gelner
all information is welcome, does windows mobile have virtual mem? or is the 32Mb a fixed size. I am not after which platform is best I am just interested in the comparison to know any hurdles if one needs to maintain three platforms using native language for each.
Anders K.
+1  A: 

I feel like the final list will be of little use, as all data points collected will differ substantially in content apart from your last one. Some corrections to your iPhone list:

1) Local databases such as SQLLite are"not traditionally" implemented as a server on other mobile platforms either (they also use various file-oriented DB's).

2) Very soon that single fixed size assumption may well be inaccurate.

3) The App is in a sandbox but can write to some areas outside of the sandbox via API calls (for instance, photo library or address book).

5) That number varies between 3Gs and 3G/2G/Touch (the older models have half the memory)

6) Monotouch is available, but I'm not sure there's anything that far along for Java based iPhone development. There's also a Flash compiler from Adobe.

Basically if you are thinking cross platform, memory/screen size/system access/common databases will all differ - so the whole thing boils down to language AND LIBRARIES. And that is where you really have an issue with a cross-platform approach, because the libraries are very different per system... in the end you MIGHT be able to share data structures and some pure data processing code across the platform binaries, with very different GUI code for each system. But is it really worth it to constrain the development of each client?

On a side-note Blackberry is Java-based, so it presents yet another hurdle for such an attempt.

If you really want to see what cross platform ends up looking like, take a look at the codebase for Waze - a cross-platform open source navigation app:

http://www.waze.com/wiki/index.php/Source_code

Client source for iPhone and Windows Mobile lives there.

Kendall Helmstetter Gelner
2) u mean if the table rumor is true?
Anders K.
generally speaking I was just trying to figure out the lcd for all three platforms since it would influence the architecture, that is the reason for my question. I am aware of that its a complex task and not very straightforward given the different languages and OS.
Anders K.
*tablet, not table doh :-)
Anders K.
The problem is, there's really no LCD between the devices you list. There barely is between Windows Mobile and the iPhone, but only because of MonoTouch... basically my position always has been, you short-change yourself by not coding the best application you can for any given platform. Or why are you not coding Java applications for desktops at this point so you can run on Mac and PC?
Kendall Helmstetter Gelner
imo one can keep a certain part of the application more general and have one part that is more native like GUI/OS then its useful to know for instance how much memory is available at a minimum for all three or some other specs. This is what I mean with LCD. Not the language, maybe I shouldn't mentioned the language in the question to be clear.
Anders K.
But I am saying there's not enough you can keep general to make the effort worth it. Even if the data model is the same how much effort is involved in creating the objects? An hour? There's just not enough there to warrant the level of effort required to try and make compatible binaries across platforms, unless you want to use some kind of cross-platform library - and then invariably you are shortchanging yourself on the system frameworks you can realistically access.
Kendall Helmstetter Gelner
+2  A: 

There is an excellent article on Codeproject which would be of benefit to your question. Head on over here to read it.

Hope this helps, Best regards, Tom.

tommieb75