views:

75

answers:

3

I'm just getting started with this field,

so any information is appreciated!

+1  A: 

You say in a comment that you want to support as many platforms as possible, this isn't really going to happen if C is a requirement.

A majority of platforms have C++ or Java APIs. Qt is a very portable C++ API you may want to look at. You really need to identify target platforms, porting is inevitable if you want to support many.

Steven Jackson
Can you also recommend a simulator? BTW, isn't Java supposed to be cross-platform, do I need porting if I use Java?
httpinterpret
It's only cross-platform as far as the JVM is supported. For a lot of mobile platforms Java isn't an ideal choice anyway as there isn't fine enough control over freeing resources. There is a Symbian S60 emulator with their SDK. Android has a simulator and I believe the iPhone SDK also has one.
Steven Jackson
A: 

First of all, you aren't going to find a simulator that can simulate multiple phone operating systems. Windows mobile has its own simulator, Android has its own simulator, and the iPhone SDK has its own simulator.

You also aren't going to be able to find a framework in C which lets you target multiple mobile phone platforms. It just doesn't exist.

Unfortunately when it comes to mobile platforms writing portable code that can run on multiple systems is not easy. You can write your core model and business logic as shared code, but the UI and other phone-specific stuff will have to be rewritten for each platform you want to target.

People like Adobe are trying to create tools that let you deploy flash-based applications to multiple phone platforms, but the iPhone SDK terms do not allow this kind of cross-platform application and I'm guessing iPhone OS would be something you want to target.

Mike Weller
Java is known as a cross-platform language, why it's hard to make it work on multiple system,can you elaborate?
httpinterpret
Because running a java app requires a java runtime on the device (iPhone doesn't have a JVM), and it requires a java library or framework that supports the phone or device you are targeting. I don't know of any such java frameworks.
Mike Weller
A: 

I suspect that the best C framework for portable mobile phone apps is OpenKODE.

That's not to say it's very good for general app programming, or very portable. It's primarily intended for games and media (hence, no windowing toolkit) on reasonably high-end devices (hence OpenGLES is the only graphics API, although for 2D stuff that can just give you a surface) and doesn't have a lot of traction at the moment (hence is a lot more portable in theory than in practice).

But it is based on C.

Apple makes it difficult for any portable framework to truly span all significant mobile devices, unless you'd count an in-browser javascript framework. Even if the technology was there for compiled apps, dynamically linking to a framework on iPhone is out of the question, and it's conceivable that they'd forbid even a static-linked framework that they didn't like (as happened with the Flash-iPhone compiler).

That's not to say that everything was portable and lovely before Apple came along - of course it wasn't - but AFAIK Steve Jobs is the one to come out and say that total portability is bad, he's working to prevent it, and that each mobile platform should have its own framework that app-writers address directly. Previously there was a more ad hoc kind of fragmentation, that I think was more down to luck than judgement.

Steve Jessop