Development Investment differences between iPhone and Symbian - iphone

Which one is cheaper: to develope on top of Symbian or on top of iPhone? Both direct $-figures and time-to-market figures are warmly welcome.

It's probably also worth noting here that the Symbian developer experience is in the middle of a massive overhaul. If you want to start developing native apps on Symbian, then learning Symbian C++ now would be a little crazy. Qt is the new application framework for future Symbian devices (and can be installed to current ones). IMO, Qt is an even nicer framework than Cocoa.
Regarding whether the investment will pay off, the jury is still out. It's fair to say that MOST iPhone developers don't make money - the store is too crowded and the number of junk apps is incredibly high. Symbian app stores like Nokia's Ovi are too new to have meaningful stats, but so far it seems average selling prices are a bit higher. In the medium term, the addressable market for Symbian devices through app stores is going to be much higher, as iPhone is ultra-high-end only, but those consumers are also the ones with most cash to burn on junky apps. So if you want to write gimmicky novelty apps then iPhone is probably best. If you've got a genuinely useful service to deliver, I expect you'll make more money on Symbian.

It depends what you want to do and what you already have.
If you already have a MAC desktop or laptop computer and an iPhone with its monthly contract, then, yes, developing for the iPhone is very cheap.
If, like the majority of people, you already have one computer running windows but no smartphone yet, then the initial cost of developing for Symbian will be much lower because the tools are free and most Symbian phones are less expensive than the iPhone.
It is still currently easier to make money (to offset cost) out of an iPhone application than a Symbian application but the Apple store doesn't quite seem an income stream you can plan to rely on if you are a complete beginner.
Keep in mind that way more people use fairly recent Symbian phones than iPhones worlwide and the distribution channels available to Symbian phones are coming right now.
Most people looking into Symbian development get very afraid very fast because they only see native Symbian OS C++ and how hard it can be.
The major advantage of Symbian is that you can pretty much choose the runtime you like: Python, J2ME, QT, .NET, Ruby... They all have different strengths and weaknesses, different costs, different times-to-market.
EDIT: Justine Pratt at Creative Algorithms wrote an article comparing platform development cost. It's not necessarily highly scientifical or all-inclusive but it does contain good information.

It is way cheaper to develop for iPhone, than Symbian.
The development tools for iPhone are way more competent, with a everything you need from a very accurate simulator, visual debugging, and very nice profiling tools. Symbian simple do not stand a chance when it comes to tool support.
Also when it comes to the frameworks and programming language Symbian stands in the shadow. Symbian have a quite convoluted C++ variant, that takes quite some time to learn, and even more time to master.
On the iPhone you have Objective-C that is quite different from pretty much everything, but still much easier to learn than the Symbian C++ variant. The Symbian frameworks feels very dated compared to to the Cocoa Touch frameworks on the iPhone. Anything that requires two or three lines of code on iPhone, can easily become 30 lines or more with the Symbian frameworks. The more modern GTK API:s is better, but still maybe 15 lines of code, so no match yet.
The Cocoa Frameworks also gives you allot for free, anything from cut and paste to implicit animations for all common tasks. All this will require explicit extra code on Symbian.
In short, you will be able to write an iPhone application with:
Much less code = less bugs.
In a fraction of the time.
With more features.

Related

Best Solution, framework or technology to make apps for android and iphone

I want to make app for android and iphone "writing once" and run in both.
Despite hardware, OS and native interface differences between this two platforms there is a special technology to make this easy, or I need to think in web apps with only html5, for example?
I read a bit material related with rhodes, titanium app and a others frameworks, but I don't know if is better to spend time studying the sdks and native tools or to invest in only solution. It's worthwhile?
If you are doing a one off app and wont be doing a series of apps in different areas (games, content/music, LBS etc) then you are better off with using an existing framework. Otherwise you may want to build a platform of reusable components that you can leverage to quickly create apps.
I've tried to use Titanium - once you get past a certain level of complexity you really are much better off making a native program. Its like desktop cross platform toolkits (Qt, Wx) - it never looks quite right on different platforms - multiply this x 100 for mobile, with a huge performance loss.
Both Android and iPhone support C, with POSIXy standard stuff (especially sockets, etc). You can do your logic in C/C++ and UI in ObjC/Java. Games are better off in C/C++ anyway due to performance. The user visible part "works right", while your "business logic" is identical across platforms.
PhoneGap - http://phonegap.com/ is a very popular solution to your problem.
Single code base for iOS/Android/BB/etc.

Beginning Phone Applications Development

I've been developing applications for a long time now, but now I want to jump into Phone applications development. There are four main candidates:
Nokia's Symbian
Apple's iPhone
Google's Android
Microsoft Windows Mobile Phone
Can anyone suggest one, considering documentation, market, samples and availabilty of emulators, I'm not a millionaire so I can't buy it unless I know it would mean profits!
I don't have much preferences as for languages, but to stay within C# would be nice, however I've been thru Assembler for a long time, so it's hard to scare me :)
There are many factors to consider such as where the biggest market is, and so on. But ignoring those factors and thinking just about technical and money issues, the clear answer is start with Android.
The Android SDK is totally free. The iPhone dev tools need a Mac, so if you're not a Mac user, you need to buy a Mac. If you're not a Mac user, then it's probably a safe bet that you don't already know Objective C, which you'll need for iPhone. You don't even need a phone, there is an emulator that works wonderfully. It's very rare that I've made something that works in the emulator but doesn't work or works differently on a real phone. So the emulator is quite excellent.
Android programming is Java, and is very similar to C#.
Android development is much more approachable and easy for development (for getting started at least) than Objective C and iPhone.
There are many online resources available, but the book "Hello, Android" is actually very good. It's dated, though, goes back to version 1.5 of the SDK and we're at 2.2 today, but the fundamentals for getting started are pretty much the same.
You may decide to go another way, but in a handful of hours you can be writing your first Hello World program on Android free of charge. Even if you decide to start on another platform, you can hardly go wrong by giving Android a shot first.
Another thing that's worth noting is that Android is way easier to sell and distribute your apps than iPhone, making it a better place to start. There is no app approval process with the Android marketplace, so you can have your app posted for sure without wondering whether the powers that be will approve your first app for sale or to give away.
It bears mentioning that if you go the Microsoft route, your C# experience will transfer almost completely, and you'll be amazed at how close the compact SDK is to writing plain Windows apps. (At least, it was in 2007, the last time I wrote a Microsoft phone app.) But forget I brought this up-- if you want to be a serious phone developer for consumers, I recommend you forget about Microsoft at least for now.
If your plan is to create and market Paid apps, versus just free ones, don't forget to also consider and evaluate potential revenues and existing competition, instead of just your development cost of entry.
My local, and not necessarily statistically significant, sample shows a larger number of iPhone developers making more money than Android developers. The amount of money to be made, if you produce an app just near the top 10% of apps in many categories, may be well over enough to amortize the higher initial costs of a development system, certificates and testing with iOS devices.
However, for iPhone development, you may have to create a stand-out app, as many app niches in the App store are already filled with several dozens of apps. The absolute number of potential competing apps in the Android store is far lower in many areas. You will need to evaluate the competition in your area of expertise or interest.
First, you forgot RIM (Blackberry's OS). You will find this graph usefull to analyzie your audience (I think the graph is for the USA only): Source of the image
Microsoft Phone 7 will soon reach the market with new devices so it is hard to tell what market share they will take. Their IDE for Windows Phone 7 is free and it supports C#.
Can't say much about the other OSs other than the fact that iOS has the most extensive store and fanatic fans that are willing to buy those apps- but that info is only from what I read on the net and see from friends around me.
You may find the beginning-phone-applications-development question helpful as well.
Windows Phone 7's API will be based on C#, but most of the other stuff about it is still speculation.
Android has the lowest cost of entry, essentially free - and will use Java (which is very similar to C#).
The iPhone has a higher cost of entry - you need to own a Mac (or somewhat less legally, a hacked together OSX install). Plus once you've devloped your app it costs $99 per year to become a registered developer, allowing you to put the app on actual phones, and sell through the App Store. You'll also need to learn Objective-C, which uses a syntax which is a little different to C# and Java.
On the flip side to this, the iPhone tools are very good, and the market is huge, there are also some good online free courses (including the videos of the Stanford course available on iTunes).
Don't know much about the Nokia toolset, and I wouldn't start developing for old-school Windows Mobile now - it's a dead-end.
Some thoughts:
If you have a mac then the choice is certainly the iPhone since all the development tools are free.
AFAIK the Android SDK is an Eclipse extension and can run on pretty much any environment, and is also free.
Mirosoft charges for its IDE, and probably has the smallest audience.
I am pretty sure you will find more community support for iPhone or Android development too.
There are also cross platform options, such as PhoneGap, which may be worth your consideration.
With all technical considerations being roughly equivelant, the most "profitable" platform would have to be the one with the largest untapped consumer base for the particular app(s) you intend to develop.
Two factors come into play which you can assess
Size and growth potential of the market. There are plenty of charts and opinion articles around on this to allow you to make an assessment. If you can't find them, just drop those 4 topics you listed into google alerts and watch the incoming articles to your mailbox for a while.
Saturation of the app marketplace, in particular in the markets your app addresses. Your own market research would be best at identifying this.
The only other consideration which may apply to specific types of apps would be if there is a fundamental feature your app requires of the platform, and whether respective platforms support it. For example you won't get far making a flash based player on iPhone.

Dev efforts for different mobile platforms

I'm in the middle of development of a client-server "socializing" that is supposed to run on several mobile devices. The project is pretty complex, involving networking, exchanging media, using geolocation services, and nice user UI.
In terms of development efforts, technical risks and extensibility what is the best platform to start with? Taking into the account that the goal is go "live" as fast as possible with the mobile version. And second goal is to cover most users (but first is more important).
iPhone (iPod iPad)
Android
BlackBerry
Java ME,
Symbian
I realize that there are limitations on every platform, and there are different aspects to take into the account (for example iPhone has better developer's community then Android, J2ME runs in a terrible sandbox but covers most devices).
Please share your pros and cons. I have the experience only with J2ME, unfortunately I can't evaluate other platforms.
If you're looking at native applications on the platforms you list, then the development effort required in order from least to most is:
iPhone
Android
Blackberry
Java ME
Symbian
Development effort is largely governed by language/libraries, tooling and fragmentation. Hence iPhone wins (good language & libraries, excellent tooling, little/no fragmentation). Symbian comes last (C++ with limited libraries, poor tools, large fragmentation). Android beats Blackberry on libraries and fragmentation, and Blackberry beats Java ME on fragmentation.
The counterpoint to this is market size, especially among your target user base - Java ME reaches far more devices than any other platform, whereas the Android installed base is still the smallest of the 5.
There's no one right answer, but if reach is important then Java is a good place to start, if time-to-market and user experience are the keys then iPhone makes sense.
It's also worth looking at how easy/difficult it would be to port across to other platforms. There are various cross-platform libraries around such as Airplay or J2ME Polish that might reduce the costs - provided you can implement your application on the cross-platform part.
I'd like to speak up for Maemo/Meego(Nokia's/Intel's mobile Linux). While it is in a state of transition and currently Maemo 5 has only one good phone(and a couple of cheap Chinese ones), but I feel that it will soon be big(I like many people believe that Meego will be Nokia's high end strategy and Nokia is the biggest phone maker in the world). Plus the N900 is the coolest phone around.
Also their it basically an open Linux device (pretty similar to standard desktop Linux). The ide QT Creator is great and cross-platform(comes with embedded visual designer and nice documentation broser) but you don't have to use it, there is some support for using your own text editor or ide.
There is no sort of signing key nonsense(I did a student project for the blackberry and have been quite annoyed by keys). Other things I didn't like about the blackberry: windows only eclipse plugins, our team had a lot of trouble figuring out how to add third party libraries to blackberry COD archives . Also some of the Classes are somewhat sparse in a lot of ways especially String/Char, probably since its ME based, I also didn't like the file read/write apis, it felt somewhat awkward, possibly since blackberry apps only recently got the ability to store files(before you could only store/retrieve objects to disk via the persistence layer)..
The preferred Languages are (Gobject C currently but less so for Meego) , Qt flavoured C++ and python. There libraries are nice and the qt ones are especially well documented. Since its a tiny linux box you can have on device debugging (there is also an emulator).
Note I haven't developed anything for Maemo/Meego but I've read a lot about and just fell in love.
I think that the best solution might be to start with a smartphone optimized web site. A native app can provide a richer interface, but a well designed web app can come close and will run on any device.
Have a look at the WPTouch for an example of a very good phone optimized web site.
In line with Roman A. Taycher, I'd like to raise my voice for windows Mobile/Windows Phone. It's has a large installed base, it has the tried and true Visual Studio toolset to develop with, it has the best emulator of them all (it actually emulates the ARM instruction set - you hear that, Apple?), and you can leverage your Win32 experience.
MS-haters - please don't bother responding. I've heard them all.
A cross-platform runtime such as Qt or HTML5 are good bets and are portable.
Qt supports many platforms including Symbian, Meego, Linux, Windows etc. It is highly regarded as one of the best programming frameworks around currently.
Qt creator is also a very highly regarded IDE.
HTML can be accessed on nearly everything of course and can there are plethora of tools out there.
While applications natively developed for a given platform typically win in terms of platform UI consistency and performance, you could try going for one of the available multi-platform frameworks, such as Rhodes (just to name one). Personally, I do not have any specific experience with Rhodes and only learned about it a couple of days ago (having a closer look is still on my todo list), so please judge the user experience that the framework offers on different devices on your own.
It sounds like you need Mobile Community Framework (MCF). It is cross-platform framework to develop network-centric, location- and proximity-aware applications on all modern smartphone platforms (iPhone, Android, Blackberry, Symbian, WinMo - almost all you mentioned, except J2ME). It provide native binaries for all these platforms. With MCF development time can be reduced, as you don't need to code all this network stuff by yourself, but you can just use simple API to send any amounts of data across enrypted connections, via Wi-Fi ad-hoc mode or via special proxy-server.
More info at http://www.uvamobiltec.com.

How good is Mono Touch in comparison to the IPhone SDK?

I'm new to IPhone development and have to decide on a suitable tool to develop my application in. Since I am know C# / .NET, but not objective C, Mono Touch seems appealing to me. But is it is worth spending the extra $400?
If have tried both, I'd be interested in your opinion.
I just posted about this at www.zouak.com, but in short for me it was a case of divide and conquer. I have years of .NET experience and honestly found learning Objective-C frustrating. Having a new language plus a new set of tools reduced my productivity significantly, also having to deal with manual memory management after years of not (prior to 2001 when I started with .NET I was a Java guy since its inception, so it's been a while) was an extra layer of "been there, don't want to go back."
I've found the MonoTouch toolkit to be very worthwhile, and while I understand some of the objections and concerns, I'm someone for whom leveraging what I know (C#) allowed me to focus on what I didn't know (Interface Builder, the API, etc.). At this point now that I've built up a significant amount of familiarity with the Apple tools I'm nearing a point where if I wanted I could look at taking on Objective-C as a new language, given that I am a lot more comfortable, but for me learning a new language isn't as rewarding an accomplishment for me at this point in my career compared with learning a platform and getting quality applications out the door is. For other folks I know they enjoy delivering "as Apple intended", and I fully respect that. Also, if Apple had a Java toolkit, I would be all over that. But the conceptual distance between C# and Objective-C is more than I'm willing to invest at this point.
That's my 2 cents,
Driss.
Great podcast on this week's dotnetrocks about this.
One HUGE factor that would sway me is the fact that they are currently working on Monodroid and I guess that WinMo 7 will probably be supported through some moonlight magic.
Imagine targetting the top 3 mobile platforms with one language? Sweet....
I've been using MonoTouch for 5 months, and really like it.
Take a look at my answer to a similar question here: MonoTouch - has anyone used this?
I am an iPhone developer, I have tried mono touch, but for me I would say NO, it's not worth the extra 400.
First of all several free frameworks exist that allow you to target multiple platforms at once using different (usually high level) languages, such as PhoneGap, there's even a Flex framework somewhere, without counting Unity3D which actually uses C# and even allows you to deploy on iPhone and Nintendo Wii.
Some of the Cons of using this third party frameworks are:
1- Extra software layer, which obviously increases the possibility of failure. Last year it happened with Unity3D. Somehow the applications developed with it started being rejected by Apple (official Unity announcement here) , Unity guys responded fast, and I think they fixed the issue with Apple in 3 days. But what if 3 days is too much for you, or even worse, what if the external framework that you are using to develop doesn't have that quality of support and the 3 days end up being weeks?... what if your applications got broken with an OS update ?
2- You totally loose Xcode debugging chances (loose the symbols), and you are kinda reduced to printf debug. Of course you can debug in the Mono IDE, but still, Xcode is a powerful beast and all the SDK Betas are delivered to the developers to be used with particular Xcode versions.
3- Binary size tends to be bigger in comparison to native Objective-C applications. ( 6 to 7Mb larger in average ), and remember that if your application is above 20 Mb it can't be downloaded from an iPhone using 3G or Edge, ( which is the most popular way to install apps ). So if that matters to you, it's another issue.
In conclusion:
If you want to use MonoTouch because you don't know Objective-C, go for it, but still I would really recommend you to take a bit of time to learn the Objective-C language and the official Apple API's. Here's a great point of view about this.
I would say no, because the biggest thing to learn about the iPhone SDK is not Objective-C, but the APIs instead. Even if you used Mono Touch, you would have to learn the API for the iPhone.
It never hurts to learn a new programming language.
(However, don't listen to me, because I am using Lua to write my iPhone applications...)

What cell phone has the widest potential market for software?

I developed a flashcard program a while back for learning Japanese. I've been considering porting it to a cell-phone. What is a good target platfrom? I'm thinking about iPhone, HTC Touch HD (system software: Windows Mobile) or a Nokia (system software: Symbian). Since I know a bit of JavaME, something that runs that would also be cool.
Here's the most recent market share data. Have you considered building a web-based product consumable by all smartphones with decent web browsers? Sites like x.facebook.com are not OS-specific but are app-like enough to provide a good user experience. Building such a site and charging a subscription would be one approach to serve all markets.
Well the Apple store just celibrated its 1,000,000,000 download the other day, so I would say that the iPhone is the largest and easiest phone market to target. Also the Apple store makes it extremely easy to sell your application (they keep part of the revenue of course).
Perhaps you might like to ask which phone has the largest market share in Japan?
Also I understand Microsoft has plans to start an app store for Windows Mobile.
Since you know JavaME, take a look at developing for Android. It doesn't have a large market share, but at least you'll be able to leverage your existing skills.
You won't be able to find a common language and development environment that works on the majority of phone platforms. Once you select a platform, you're kind of committed to it unless you want to port your app to an entirely different language.
Nokia has started heavily pushing a mobile development platform based on Qt. Nokia sells a LOT more phones than Apple does.
Why write iPhone app #1,000,001 when you'd be lucky to get $500 for your investment?
There's a huge craze around iPhone apps... at this point it's totally unjustified from a developer point of view. (It's great for the users)
Qt is a really amazingly well done C++ platform (Nokia bought it, obviously :). I'm having a good time writing PC apps with it... I plan on buying a Nokia phone I can write Qt apps for soon. At that point, I'll be ditching my old iPhone (original unit, not 3G).
When the SDK came out, I thought the world of the iPhone. I even bought Apple stock. However, no Java & no Flash because Jobs is a control freak is just plain stupid. GPL incompatibility really hurts, too. I'm also not buying a Mac just to develop software for the thing.
A few weeks ago I was reading an article about a product called "rohmobile" that was a custom Ruby framework that run's on a micro ruby web server. It allows you to compile your application against all the popular mobile phones (Apple, Microsoft, Android, BlackBerry, Symbian). It seemed like a very cool idea and it's open source actively under development. The framework comes with a sync soltuion, so you can persist data to the local device using REST/SOAP. As I explored the product a bit more, the only thing that seemed like it would be a pain is the setup of the enviroment(s) needed to compile the code for the various device.... if you could make it past this, then you'd have a solution where you could support a bunch of difference devices with a single code base!
http://www.rhomobile.com/
** I've never programmed in Ruby but the syntax and the demo made it look really simple, since it's really just a local web page running on the micro web server installed on the device! The UI is HTML/CSS based. I think the product is still in Beta...
Just my 2cents~
Well I would start to find a system / programing language which is available for the top phones on the market.
I think a good go is python for that. Which makes it easy to use large portions of the same code on all of the phones which are going to be supported.
Then I would probably start with the iPhone, because I believe its userbase is still demanding for new toys :)
Creating a webapplication would be another way... but that would mean you need to be online. if you are not using flash or some other possibilities of persistent storage.
P.S.: I would not use javame :) .. I still don't like anything java at all