What are prime commercial choices for iPhone game development kits/platforms? - iphone

I'm looking to get into (as everyone else) the iPhone game development business. I've been programming for a while but have only recently forayed into the Mac development world, although since I've been working with Java for a while learning Objective-C wasn't that big of a deal other than learning memory allocation.
From this, you can safely assume I am not looking for a "teach me basic programming" engine, I want a fully fleshed out engine that can create commercial quality games.
Some of the things I'm interested in:
Good documentation - tutorials and demos - APIs a must
Good support - responses in 3-4 days, not likely to shut down tomorrow, English speaking reps
Extensionable engine - reasonably easy to add new bits to the engine or heavily modify it without having to change 1000 different classes
Working engine - especially since I'm doing iPhone apps which aren't that complicated, I expect most features (animation, networking code, basic collision detection, etc.) to be built in
Reasonable cost - this is somewhat subjective so I'll define: I expect not to have to pay more than $1000 a year for upgrades. The initial cost may be up to $1500 (all required packs included), but if it's more than $1000, I don't expect upgrades to cost more than $500. Upgrades are defined as full version releases, not "content" or "add-ons".
Likely to continue regular updates - I appreciate some companies quality test their code, but I also appreciate companies that release code more than once every 3 years. I expect an upgrade or update (free or pay) every 6 months to a year
Integration with XCode - running the engine with XCode or a full featured IDE is a huge plus. Ease of importing libraries factors in here.
I appreciate all responses, especially those from the voice of experience that would impact iPhone development with a specific engine or experiences with support. If you have a comment about why something is bad (like documentation) please explain what makes it bad and also what a "good" example would be and why that is a better choice.
I will of course be developing on a Mac, so compatability is a must.
Update: It seems the two engines that offer the most are the Unity and Torque engine. Aside from price differences, can someone explain the ease of use of the engines in comparison?

I did a mini-survey of what was out there back in January and wrote up a post about it. Not much has changed since then so I'll just refer you to that post:
http://ramin.firoozye.com/2009/01/02/building-games-for-the-iphone-and-other-platforms/

I think the only real option at the moment is the Unity game engine.
http://unity3d.com/unity/features/iphone-publishing
The downside is it's probably outside of your budget. It would run $1,400 for the Pro Engine plus $1,499 for the iPhone stuff.
You could go with an indi license and the basic iPhone which would run you about $399.
I don't use Unity, yet, but at some point hope to be able to justify the cost.

You might be interested in cocos2d iPhone. It was originally written as a python 2d engine, then was ported to the iPhone. Although it may not hit every bullet point you mentioned, it is worth consideration. There is plenty of documentation on the site, as well as several examples that come with the download.

Constantly updated list of tools, engines and so forth: http://iphonedevdepot.com/

Related

How hard is iPhone/iPad development

I've been developing for quite a while but while I consider myself competent (or better) with C++, Java, C# & AS3/Flex in areas from web-servers to desktop applications to 3D games, I'm aware all these languages are pretty similar; even on the libraries side I know what to look for based on using libraries that do similar things in another language.
But Objective C I understand to be a different kettle of fish, and developing for mobile devices has always struck me as likely to be hard work since you have to develop on your PC and test on the actual device itself - my experience developing for PS2 put me off such things due to poor debuggers and other tools.
What's the reality? Is it a paradigm shift to move from web-servers and desktop apps and rich web-clients to iPhone... or for an experienced developer is it just another language to learn and new libraries to play with? Is there anything to be scared about at all?
edit: My main question on Obj-C specifically was if it's a different way of programming, like it would be moving to Haskell from Java for instance. It sounds this is not the case.
For starters, ObjC is fairly easy to grasp so long as you focus on the fundamentals. Don't worry about the syntax, there's not much there above C which I will presume you already are familiar with. There are excellent books out there this book is the definitive guide I recommend to most new users, Erica Sadun also has a good book on iPhone development, I recommend both of these highly.
Secondly, the tools aren't hard to use, and you will be pleasantly surprised with the debugger and other tool integration. Instruments was a long time coming, but it's indispensable for catching things like memory leaks, cpu time usage, and now power consumption.
But really, nothing to be scared about, and as for another platform to learn; well, yes and no. There is always going to be another thing to learn, regardless of iPhone or something else. Don't resist. :)
There's definitely a "paradigm shift" (ugh, buzzwords):
You don't have all the memory in the world (and there's no swap either)
You don't have all the CPU time in the world
You probably don't want a binary bigger than about 20 MB (the size that can be downloaded over the cell network)
You can't just change the server backend to make things right.
Graphic design is important if you want to be successful (but you don't want to bloat your app)
Web requests take a while (a website with redirects feels really slow compared to the desktop beside it).
JavaScript animations are painfully slow (ever tried the Google Maps website on an iPhone?)
UI design is heavily constrained by the size of the user's finger (even though the iPhone 4 has a comparatively huge screen).
UI design is really tedious.
The user can do more things than clicking and typing.
I find that the biggest difference is in the UI, not in the language. Languages are easy. Libraries require a little reading/searching/asking around, but then they're easy. UI design and UI programming are very difficult to do well.
Objective C is different but not far removed from normal OO methods. The syntax was the larger barrier for me.
The problem I saw was/is you learn ObjC for iPhone, and you can't take the skill (ObjC knowledge) outside the Applesphere really. I haven't seen a use for it. I have a handful of books I went through to get my feet wet. Some of these, the Apress books, contained errors in the code walkthroughs causing me to Google the book errata countless times.. so be careful of that, if you learn that way.
Also, unless this has changed, you can only develop under OSX with the SDK tools because no Windows version exists to my knowledge.
With that, you also have to play by Apples development rules to get published into the AppStore, which has had its share of dev horror stories.
That said, a working app is fun and beautiful in the end.
On a scale of 1 to 10, it's about a 6.
Apple does use Objective C and it is different then normal C. So Iphone and IPad development can be hard if you've never used Objective-C before. If you are familiar at all with a language called SmallTalk, then Objective-C will be very easy for you to pick up.
Now other mobile devices, such as Android, uses Java. If you are competent in Java then Android development may be easier for you.
Some devices use Windows Mobile. If you are a .NET programmer, you can use .NET compact framework to develop Windows Mobile Apps.
Just so you know too, most mobile SDKs come with an emulator to test your app on. So if you don't have an iPhone, for example, you can still test your app with the emulator. I understand that the emulator is supposed to be 99% as accurate as an actual device
I don't think there's anything to be scared of.
The simulator's pretty alright, even if it can't handle some things - it's hard to simulate the accelerometer, for instance!
Once you're over the hurdle of figuring out what certs you need and setting up the iPhone development account and such, it's fine.
It's a bit of a pain writing something, loading it on the device, trying it out, etc., but the fact that you can actually debug the code running on the device makes it rather a lot nicer than it could be. (I had to maintain an application for the Nokia 9110, and there I had to edit, compile, load, run, crash blindly, stare at code, guess, edit, compile, etc.)
As a long time Windows C++ / .NET developer, I didn't find it very difficult to begin developing in Objective C.
There are some syntax differences that take some getting used to, but in general it similar enough to C/C++ to not feel like a completely new language.
Learning the library code and what you can and can't do easily seems like the larger challenge to me, which is going to be a challenge with any new platform.
I am writing a beginner book called Hello! iPhone, and I've made a mailing list of beginner tips to help people get started. After a week or so of tips, you'll be much more equipped to check out other books and understand the basics a bit better to judge.
http://loufranco.com/beginner-iphone-programming-tips/
It will take you through Hello, World and some other simple stuff (Outlets and Actions, basic memory management, etc).

How hard is developing for iPhone? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I want to know how difficult is to develop on iPhone plataform. By difficult I want to mean:
Effort in terms of programmer versus software complexity. To be clear: how many programmers are needed to develop a medium sized app on iPhone?
SDK learning curve.
Hardware and other non-programming related stuff affecting the development
How easy is to sell iPhone software. To be specific: is easy to sell an app on itunes? does it cost something? I'm confused about how to sell that apps on iTunes store...
any one has experience on advertisement supported apps? please tell me... how has been that?
thanks
One programmer (a good all-rounder) can easily do it. Once you have done your first app you will be surprised to see what sells and how little actual programming there is in some apps. The reason you have to be a good all-rounder is that the apps that succeed have it all - design, inspiration, execution. Consider involving a designer if your taste doesn't match what seems to be popular. Don't expect to ship anything with standard UIButtons, on the store it stands out like the proverbials. Normal practices are essential, e.g. revision control, issue tracking and all that good stuff. It seems to matter more the higher level an API you work to.
SDK learning curve - not so bad. Initially you struggle with why a NSArray can't take another value, but inside 1-2 months you'll be subclassing things all over the place. However read below, don't try to do too much custom stuff...
You need an Intel mac, you need at minimum an iPod touch to submit an app - try to submit without testing on actual hardware and you will miss something, and it will be rejected. You don't have to have the latest Mac OS or Xcode to get started but you probably do for store submission. If configuring choose more RAM over more processor speed. An SSD is essential. BIG (or multiple) screens are, as with any coding task, a big advantage. The new 27" iMac would be a great development machine. It's hard to go wrong with current Macs, I have had good experiences with an 11" Air and a mini, they're not that much different from a Mac Pro as far as development goes once you have a big monitor plugged in.
Selling is not so hard. Provided your app isn't complete rubbish and doesn't get 10 1-star reviews right away sheer numbers will get you some sales. To make it big is hard, and you will need to investigate marketing, review sites, twitter, youtube, in fact to your all-rounder programmer skills you can add marketing director. The noise on the store (sheer number of applications) means only a truly stellar application (i.e. featured by Apple) will stand out in the absence of any other effort. There are probably plenty of apps on the store than in 2008 would have made their developers rich, these days they are lucky to sell 1000. The cost is $99 to join and after that you get 70% of sales revenue while Apple keeps 30%.
Additionally...
With the context that I am a C/C++ programmer who has spent most time programming embedded devices and handsets, with almost no C#/STL/Java...
Here's what I found easy/good:
Xcode (although I admit getting started was jarring coming from Visual Studio)
brevity - what you can do in just a few lines of code is amazing
Stanford CS193P iPhone programming class on iTunes University - great intro, free!
WWDC video sessions. Not cheap but probably worth more than what you pay in terms of in-depth knowledge. I've been to similar developer conferences that were more of an excuse to stay in a nice hotel and do some duty-free shopping but if I'm not at WWDCI will feel like I'm at a severe disadvantage. The big benefit of getting to WWDC is the people you meet, this and lab sessions are what you win if you get lucky in the ticket lottery. All the technical presentations you get for free on video these days.
Here's what I found hard:
knowing just what storage classes to use in a certain situation. My first huge performance problem came from using indexForObject on NSArray with hundreds of thousands of objects. Obvious now but who knows this the first time it happens to them?
"letting go" of preconceived ideas about what a UI should do. Don't go laying out a .xib until you have used at least 20 iPhone applications and have some idea of how things are usually done. Doing things otherwise is not only likely to be harder, if your idea is too far against Human Interface Guidelines chances are it will never be accepted to the store anyway.
Xcode debugging messages - do google these because they are cryptic at first but when you find other people explaining them they start to make sense after a while
Here's what I found completely perplexing and got working through trial and effort:
Apple's on-device provisioning process
actual submission to the App Store
So far I have one small game on the store. It's not a particularly good game unless you really like that kind of thing, and only scrabble nerds do, but it still has 10 sales after 1 week and that's with no publicity at all. I did it to get experience with how the store works and by that measure it was a success. In learning curve terms it took me probably six, seven weeks full time from opening the first Apple doc to submitting the game, but today I could do it in about two days.
edit: Incredible to think that this answer is now more than two years old and that people still vote on it. Well I didn't become an app store millionaire but many people have and it can still happen even though we now see some big companies producing very polished apps with large budgets. What's the secret ingredient? Passion, which brings attention to detail. If you love your app there's a good chance users will also.
I didn't get to WWDC 2010 but I did get to 2011, 2012 and 2013. Keep at it, independent developers - you will almost certainly not do well enough on your first app to retire, but you will be working on an awesome platform, growing fast, with an incredible community behind it. You can make a good living by yourself. And if you do give up your independence the job market is very, very good.
more edit: Did I mention CocoaHeads? Find your local iOS programmers and find out about CocoaHeads. If there isn't one consider starting one. Either you will discover opportunities (i.e. projects, or even employment) or you will discover people to hire when you have succeeded and can't be a 1-person shop any more. Not to mention the useful free education speakers at these groups represent.
Swift is now perhaps less weird than Objective C seems to a programmer coming from some other language. I do think it's the right choice if you're beginning, Apple are clearly pushing it as the future and it has gotten much better since introduction in 2014. You may find learning Swift is an advantage, if you have that option - many developers are stuck supporting existing projects in Objective C.
iOS continues to grow and be an interesting and fun platform and I don't think it's slowing down. OS X is keeping pace. I'm still very happy I made the choice to do this back in 2009. Come on in, the market's fine.
We have started developing about a year ago and currently have two OpenGL 2D games on the market. My experience so far:
Simple application can easily be a one-man show. For a medium-sized application you are likely to manage with just one good programmer, but usually there are other people needed, such as a graphics designer. This highly depends on the nature of your application.
A bit steep if you have no experience with Objective-C and Cocoa. C knowledge helps, as does knowledge of some OO and computer language concepts. Even then you’ll spend some time getting used to their way of doing things. (Which is usually well-thought, but often different from what other people/languages/stacks do.)
The biggest non-programming issue is the crazy provisioning and review stuff. It takes a while to get used to all the profiles and certificates and signing voodoo. You are going to hate it, but will get used to it.
Selling the app is hard. You either have to be one of the lucky ones to make it into the featured apps on the device or you have to be some big title or your application has to be something with a clear audience (like Geocaching) or you will have trouble getting a decent coffee for what you earn. (I am over-simplifying here, but it’s mostly true.) The selling process itself is pretty much painless – $99/year and Apple gets a third of what you earn.
Depends what you mean by "medium-sized". Also depends how long you want it to take. In general, to make a decent app, you need a combination of things: programming skill, artistic skill, design skill, and business knowledge. Most people don't like to do all of those things. I'd guess that the majority of iPhone apps only have a single actual programmer, though. You can tell the ones that were written by a programmer who should have gotten some help with the other aspects.
Depends what you already know. It took me a month before Objective C stopped seeming really bizarre, and I've used lots of different languages.
The hardware isn't a problem unless you don't already have a Mac, an iPhone, and an iPod Touch. The biggest non-programming thing for me is the App Store review process; you have to understand that when you think you're done, you're going to need to wait a couple of weeks, and it's possible that the idea you thought was great falls into some category that will never ever be approved, or that you'll have to change your app's name, etc.
It's easy to offer apps for sale on iTunes, once you pay your $99. If your goal is for people all over the world to download your free app, or to put your app on sale and make tens of dollars, the App Store is great. If you're hoping to make millions of dollars, or even thousands, you have to be some combination of competent, persistent, and lucky.
It's rather difficult to answer your question owing to the fact that often this is highly subjective in my previous experience.
1) Generally the effort is much lower than the one required when using a different platform. Those acquainted to software engineering principles including the use of design patterns etc will find that the SDK is built around all of the common abstraction we are used (except a very small part still using C style procedural APIs).
2) The learning curve is steep for people rolling this on their own, is really easy for people being taught on the matter. A fast course style exposure to the SDK and tools (say 40 hours total) it's usually enough for people to become proficient enough.
3) There are no hardware issue to be taken into account, at least in my experience. As already pointed out by Zoul, provisioning the devices takes some time to get used to. The submission/review process is in my opinion a little easier.
4) Selling is as difficult as it is on other platforms. But if you have got a really brilliant idea, then you usually sell many copies of your software. Or, the idea may not be so brilliant, but the software you develop is fundamental for a specific field targeting people always on the move etc. Just developing something without a clear target is the perfect recipe for disaster.
What is your definition of "medium sized app". It could easily be just yourself, or it could be a few people including a designer. Also, to some degree if you have more time you need fewer people.
That depends heavily on your experience to date. Many people have come over from .Net and Java development and not found it too hard... you probably need at least a month to be comfortable with a lot of the concepts.
You need a Mac, that is it. Any Intel mac with 2GB of memory will do.
It's very easy to sell, since all you do is upload a binary and (after a wait for Apple to approve it) Apple puts it up for sale. You need no servers. You do need to pay a yearly $99 fee to develop.
Very subjective. A one person app developer can develop a medium sized app. How long will it take? Depends on how much free time the developer has and how much experience with Obj-C.
I learned some parts of the SDK in less than a day. I still don't know the entire SDK, as I haven't needed to. I doubt that any one programmer would want to spend the time to learn the entire SDK. For example, if you aren't doing anything with the accelerometer, why study it?
You need to roll up your sleeves and delve into it yourself to see how long it takes you. If you are asking for your team, then you will have to judge how well their expertise will apply.
As for selling on the iPhone, there are some easy aspects, like not having to worry about packaging or salespeople, but you still have to sink money into marketing or no one will find your app in the almost 95,000 apps on the app store today.
If you're asking because you keep reading that it's an easy "get rich scheme", then I'd say you're in for a surprise. Despite the reduced overhead in some areas, and low start-up capital, it's as much work as any other software venture, since the ratio of team members to work to be done stays about the same (the economics of a $2.99 or $4.99 or $9.99 apps forces you to have a smaller team).
Perhaps an analogy... I want to know how difficult is is to build a house.
In terms of builder vs house
complexity. To be clear: how many
people do I need to build a medium
sized house?
Power tool learning
curve.
Permits, plans, and other
non-building stuff.
How easy is it
to sell my house?
Let me give you some guidance as I have worked on JQTouch. Its a library that build using JQuery and it also provides multi-touch related features too. Basically this is for UI related stuff.
Please have a look at JQTOUCH and look at the code samples. The business logic can be done in any server side technology of your choice.
Summing up the things with your relevant questions
Effort is not that tough. Easy for developers to develop. Less documentation.
Pretty easy
Emulator could be downloaded from Emulators
Not much knowledge on this.

Which mobile programming environment do you recommend for a startup to target? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
There's a lot of mobile platforms out there at the moment; iPhone, Android, WebOS, Symbian. If creating a startup for mobile development (i.e. as a commercial endeavour, not a hobby), which mobile platform is worth focusing on?
First, ignore technology to start and instead look at the business model for each platform. Ask if the platform itself has a reliable means of producing revenue long term. If so, then ask if the platform presents a business model that allows a developer to make money. If your not sure about such stuff ask someone with business experience.Beyond an initial flurry of interest, nifty tech can't sustain a platform if the economic underpinnings are not there. Even if a platform prospers, it doesn't mean that small developers will.
As near as I can tell, Android isn't actually a platform but more like a loose standard. Each phone vendor can customize it to a high degree so there doesn't seem to be a means by which you can write a single app and know it will run on all Android phones. That will cause major market fragmentation so even if Android takes off big time that doesn't mean that every developer, especially small developers, will be able to sell to the entire installed base.
Long term, open platforms (like contemporary PCs) present major problems for small developers. There is no intellectual property protection so developers who don't have large institutional customers they can sue can't prevent piracy. Security will become a major issues as black hats target people's phones. There will be a huge number of crappy or actually fraudulent apps cranked out that make end users leery of buying software from a vendor they don't recognize. This means small developers will have a hard time breaking into the market.
One of my professors in college told me something that has proven true in my 20+ years in the computer industry: The major strength of every design is also its critical weakness and vice versa. The very things that make open platforms attractive to developers and customers are also the same things that will cause them major problems. The very things that turn developers off about closed platforms are the things that provide the greatest benefit to developers long term. Having a closed platform's vendor vet every app slows down acceptance and limits choice but improves overall quality, security and consumer trust. And so on...
Career wise, there is a difference in paths between running your own business and learning an API so that others will hire you. In the former, you should develop for the platform that has the best business model and the one you would most like to use as a consumer. For the latter, you should develop for the platform with the most buzz. Even if it flops, no one will find it odd that experience is on your resume. Just rough rules of thumb.
I've written and launched two mobile apps on the iphone over the last year and both have had success in economic terms. One app is free and tied to a web service and it has a significant impact on the popularity and number of users for the web service. The second app is a paid app - and I can tell you that it is producing some actual revenue, enough that if I was a solo developer it'd be paying my bills.
That said I think that if you're launching a company for mobile products you don't want to put all your eggs in one basket. So either support multiple platforms or aim to have multiple products on your main platform.
I think there is big potential in Android but at the moment it is totally unproven as a platform where you can actually make money (please point out some info on this if you have any I am really curious about the economic potential of Android).
Blackberry is also interesting since pretty much everyone I know who's under 25 has one, but it is a platform where selling apps doesn't seem to have caught on that well. I've discussed it with some heavy blackberry users and apps are not something they really care that much about. So you'd want to try to find out some numbers regarding Blackberry app sales.
In the end it depends on your target market/product.
Are you building an enterprise targeted mobile app? - Build for Blackberry first and perhaps iPhone next.
Do you want to launch one consumer focused mobile app with a large feature set and perhaps some web service integration? - target a few platforms and make it available to as many users as possible.
Are you trying to build a series of small purpose built apps? - Definitely start with iPhone and get some revenue first.
My 2 cents.
Not Iphone.
Because of Apple and this strange policy of application approuval. You could not afford to close your entreprise only because apple has decided that your application is "not ok"
Edit : For sure, the AppStore has a huge potential client base. But it's also the only "mobile market place" from where you can be removed.
If you are having a hard time deciding, why not just develop for all of them at the same time!
PhoneGap is a utility that lets you build apps that run on several different platforms. It's great, and the guys at Nitobi are very willing to help you out.
I suspect at the moment you would get the largest pool of potential customers if you developed for the IPhone. Apple do have some issues with their control freakery but, hey, people use their AppStore.
Personally I am going to develop for Android because I absolutely love the design of their OS for mobile systems. Just brilliant. I also suspect that Android will increase in market share rapidly over the next few years. It's also Java instead of objective C so I would think easier to port to other environments as required. I'm doing development for fun though so if I make no money then who cares. If you actually need to make the development pay for itself then I guess IPhone is probably the way to go while keeping a close eye on Android.
The thing about the AppStore for the IPhone to keep in mind is that, not only do people use it, they also PAY for things from it. Android still doesn't let you sell to any country so even if they were to technically have more users - those users might not be able to pay for your stuff even if they wanted to. This is being worked on by google and will change but it does limit the amount of money your app could currently make.
It depends on your target audience. Business users will most likely use BlackBerrys or Windows Mobile (at least in my experience). Consumers (at least those willing to pay for software) will more likely use IPhones.
It depends on the application somewhat, but if you are serious about a startup it makes the most sense to start with the iPhone. The frameworks allow for the most "wow" factor with products, and there is simply a huge lead in number of units, and number of users used to running many different applications.
You may also want to consider other platforms (my vote for second to go after would be Android, and then Palm in third although that depends heavily on what your application is).
But something to consider is, you may want to start by doing one platform really well and if your application idea is well received, branch out. It's a lot of effort to develop for multiple platforms and each platform has various unique features you want to spend time taking full advantage of. I would also advise against using any of the cross-platform frameworks for the same reason, because when you target all you cannot really target one.
Depending on what you want to do, I think you should look at web toolkits. Web apps, a.k.a. Widgets run natively on Symbian, and through Opera on many other platforms. It should be simple to port to Palm WebOS if that catches on.
You can't do everything in a Widget, but you'd be surprised what is possible.
Based on my limited experience with seeing what devices are used on subways, trains, in airports, etc - I'd suggest either Blackberry or iPhone.
But more importantly, pick a platform you like and are excited about.
If you are not enthusiastic about the platform and you are doing it solely for the money then it will show. you might as well just make hamburgers or sell lotto and cigarettes.
Take this with a pinch of salt but this pie chart seems to suggest that Symbian is the most widely used:
http://en.wikipedia.org/wiki/Smartphone
Or Java ?
Java is used on Blackberry's and will run on Symbian.
I wouldn't have said this 6 months ago. But I'd go with Android.
It'll be significantly more work porting in the long run. As more and more screens sizes and device profiles are coming out, but I think it's got the weakest developer market with the highest long-term potential earning power. The iPhone market is flooded, so, even if you get your app published to their catalogue, it's still almost impossible to get any kind of exposure.
Android, on the other hand, has huge growth potential and a pretty poorly followed market-place.
Verizon's massive push on the 'Droid' should open that particular device to a huge marketplace. It remains to be seen, however, if and how they'll allow 3rd parties to publish apps to their catalog.
Depending on your timeline, you might also consider Flash as a cross-platform option. Here's a list of heavy-hitter companies working to make mobile Flash happen in the near future (includes Google, RIM, Nokia, Sony Ericcson, Palm, Motorola, Samsung, etc.):
http://www.openscreenproject.org/partners/current_partners.html
...a video of some of their CEOs...
http://www.openscreenproject.org/about/
...and how to apply for some of the $10MM that Adobe's seeding into the market:
http://www.openscreenproject.org/developers/get_started.html
In summary, I'd suggest going for a cross-platform approach.
Symbian has by far the biggest number of users and has the largest choice for programming languages.
Symbian and Maemo will be running Qt in the near future, as well as supporting open python, open C, java etc etc etc.... (they also both have the Qt libraries available now)
I wouldn't put too many eggs in the iPhone basket. Your application would have to be monumentally good to be found and paid for by a significant number of people in the 100,000 items in their app store.
Android, don't really know anything about it. It seems like it could be a popular platform, its at least a real multi-tasking environment (unlike iPhone from app dev point of view).
Palm Web OS is insignificant at this time.
Perhaps the best solution in fact is to make your application web-based then you can just develop small apps which hook in to the web service?
Mono sounds interesting to me
Mono on Android - androidMono
Mono on Iphone
Like phonegap there is appcelerator titanium

Time to learn Objective-C/Cocoa for an Apple agnostic [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
This question is inevitably subjective, but I will ask anyway.
I'm a PC. I've always been a PC. I have very little Apple expertise, although I'm completely happy in *nix. I've plenty of experience with development, and consider that I am able to pick up new languages and concepts faster than most of my colleagues (although ML/F# still hurts me on a regular basis). I'm reasonably familiar with C++, although haven't touched it since the nineties, work on a daily basis, and 100% confident with C#, would consider myself advanced to expert with Java and have developed a reasonable amount of stuff in Lisp and Prolog back in the day.
We've had a recent request to develop an iPhone app, which sounds like quite an interesting proposition that we'd be quite interested in taking on. We have very little in-house experience with Apple platforms. Given our ignorance of most things Apple, little to no familiarity with OSX and the Apple UI paradigms and assuming we acquire the necessary hardware for development:
What one would need to learn?
How long would a good developer need to get up to speed?
Are there any non-obvious expenses that might arise from pursuing this route?
Once again, apologies for the subjective nature of this question. Many thanks.
It took me a couple months to feel comfortable with it; but that was only evenings/weekends. I came from a PC/VC background and had never owned a Mac.
Objective-C is OK, if a little unusual. There are the usual gotchas that you learn once and then don't do again. IMHO its easier to shoot yourself in the foot than C++, but it's not a big deal to switch. I think the bigger learning curve is XCode; it's certainly not a patch on Visual Studio, and can take a bit of getting your head around. That said, it is getting better with each release. One of the things that bugs me the most is the Mac keyboard vs the PC keyboard - particularly in the IDE - I keep jumping to the end of the file instead of the end of the line, etc. And then going back to PC you find save, etc. isn't the same key combination. It can get quite confusing.
The Mac & OS X is a breath of fresh air - wish I'd got one sooner. I bought an iMac 24 to get plenty of screen space. It's a lovely machine.
For Cocoa, I took the slightly unusual approach of starting with a Mac app before doing a phone app. I used the book 'Cocoa Programming for Max OS X' which gave me a good grounding. I then moved onto 'Beginning iPhone Development'. I think this approach worked well for me because the Mac OS is the bigger picture, and the iphone is a subset - it helped me get context on how things had been put together. I also bought several books on linux, mac internals, etc...whatever I needed to fill the gaps in my knowledge. I found I needed to get pretty comfortable with the Terminal, and read a book on the bash shell, and polished up my 'vim' usage. I also discovered 'git' along the way and haven't looked back.
For the phone itself, you really need a device, not just simulator; I've found several problems where the simulator didn't match the device (particularly if you intend to use OpenGL ES) - for that reason I'm going to test on iphone 3G/3GS & touch. Credit where it is due; all the differences I've found were problems in my code which needed repairing to make it look the same on simulator vs device. If you've done any device programming, it's probably the best device programming platform you've ever used - easy and stable, with good debugging.
I'd say the cost is one Mac + 2 iphones + ipod touch, and $200 worth of books... Haven't found any hidden costs...
There are a lot of questions here about getting started with Cocoa on the iPhone and Mac, listing many great resources:
"Getting Started With iPhone Development"
"Starting iPhone Development"
"Howto articles for iPhone development, Objective C"
"Are you doing iPhone development? How do you learn?"
"Best Cocoa/Mac OS X programming blogs?"
"Cocoa and Objective-C resources?"
"Good ways to Learn Cocoa?"
"Can anyone recommend a complete ObjC/Cocoa or Cocoa-Touch tutorial?"
"What are some of the best online resources for learning Objective-C?"
"Are there any Open-source iPhone applications around?"
From my own personal experience, it took me six months before I felt comfortable with Cocoa, but that was years ago when I was only tinkering with it part-time. Since then, we've moved all of our robotic control software to Cocoa and the Mac, so it's what I now do full-time. Adjusting to the iPhone was a pretty quick process, taking me three weeks of nights and weekends to produce my first application, which has been on the App Store since launch.
In addition to all the resources in the questions listed above, I highly recommend reading Apple's iPhone Human Interface Guidelines cover-to-cover. They don't provide hard-and-fast rules, but they do explain the overall UI design of the platform and the reasons behind why things are done the way they are. Also, make sure that you use the device yourself on a regular basis, so that you understand what does and does not work when interacting with the platform.
As a final resource, I also recommend paying the $299 for the WWDC 2009 iPhone Session Videos. They are well worth the money, particularly if you are just getting started on the platform.
Beyond the cost of an entry-level Mac (the Mini is a good choice, but the 13" MacBook Pros are a great value and can run Windows well), the $99 / year membership in the developer program (which you don't even need to pay until you want to install the application on a device or distribute it), and the cost of the books or videos listed above, the only hidden cost to worry about is time. I've spent a lot more time tinkering with the iPhone platform than I imagined I would when I started over a year ago.
The Cocoa-Touch framework is a cut down version of the full cocoa framework, so fortunately, this makes things a lot simpler to learn as there are fewer ways to do things, so not so many choices and design decisions.
You require an Intel Mac to develop on, and would also need an ADC membership to publish the application. Other than this and test devices (iPhone and iPod Touch). This should be all of the require expenses. You could use only the Simulator to develop, but I would recommend on device development as well.
There are some good online videos in iTunes. I found the Stanford University iPhone Developer Course particularly useful.
A good developer could probably be up to speed in under a month. Especially if you have C/C++ skills, along with your other skills I would expect you to be productive in under a month.
The Apple docs are not the most forthcoming, but are quite complete. You could learn everything just from these.
Good Luck
I came from a heavy Java background, with lighter amounts of C++ and also some Lisp/Scheme as you have - I've been doing iPhone application development full time since the SDK release. Here are some thoughts I have on the questions you raised.
What one would need to learn?
You need to learn Objective-C, the language - a helpful guide showing you comparatively how things are done in C++ (and some Java) compared to Objective-C is:
http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf
I found that very handy in quickly understanding the Objective-C syntax, since it's not a large divergence from C syntactically but is more so conceptually.
Beyond that, just like Java Apple's Objective-C has a very large set of foundation classes you can work with - just as rich in terms on string handling, internationalization, complex time/date support, etc. Just like Java, that will take some time to get used to - but knowing the Java libraries, a number of things are conceptually similar. The GUI classes are also extensive and pretty powerful, as are some of the other frameworks like CoreData and CoreAnimation. Happily I find the documentation very good, it's well integrated with XCode and even has sample code links in the docs.
Also, the GUI development tool Interface Builder is very good to work with. I never found GUI builder tools of much use in the Java world (or really in any other world) but the model that Objective-C uses where you basically are creating objects that get wired up at runtime to your code, works really well and does enhance productivity. It's good to know how to do some things manually to understand what is build built by the components you are adding, but I'd start learning how to use Interface Builder when possible, early on.
I also highly recommend the O'Reilly safari online book service, because you can hunt down a few books that are of use and search for extended examples on something you are having trouble with for a marginal monthly fee. You can get the widely read Hillegass book there, among others.
How long would a good developer need to get up to speed?
That's tricky to say, because it depends on just what kind of app you are trying to build. Some areas of the frameworks and GUI components are easier to understand than others. But, I would say probably a month or two of full-time working with it would yield a pretty decent level of familiarity, and you would be productive before then. Someone with a good background in a variety of languages will have an easier time I think. Also it pays to really learn the ins and outs of XCode, because it's a very powerful tool but at first may not seem that way depending on what IDE's you are used to.
One thought is that you may way to go to a training session somewhere. There's actually an in-depth iPhone conference in Denver just a week from this post date, 360iDev:
http://www.360idev.com/
(Disclaimer, I am a speaker at a few of the session there)
Although if you do not yet even have a Mac, It may be a little too soon for that to be of full use. You could check around for other such conferences, or other places that offer training.
Are there any non-obvious expenses that might arise from pursuing this route?
Financially? Not really. You can use pretty much any modern Intel Mac to develop with and it will work great, with the caveat you should have 2GB of RAM.
You'll need a device, but if you are not using features found on the phone a Touch is fine to develop against for all platforms so you could avoid a recurring fee if you do not need one.
Time-wise, as noted there are a large set of foundation classes and so that takes some getting used to. But one good thing about the mac as a platform is that while it differs from windows, it has a good Terminal app so you can be productive in a standard UNIX shell with all the UNIX tools you are used to having. You can even do command line builds although realistically you end up working pretty much all the time in XCode (though I admit to breaking out to Emacs on occasion when I need to do some tricky bit of editing better suited to Emacs' abilities).

Will Web Development Frameworks replace Native IPhone Programming?

I need help clearing up some questions regarding these several third party dev-support frameworks (e.g. ViXML, Titanium Mobile) which promise iPhone app development at lightning speed using only Javascript and XML, without knowledge of Objective-C.
Questions
Are there any features possible on a regular Xcode development platform that are NOT possible for someone creating an app using these frameworks?
Is there any real savings in money and time when working with these platforms?
The approach to simplify development like this has been tried time and again, on many different platforms.
You always have the problem that the development framework will lack some features the "real" system has, and while sometimes a passthrough mechanism is offered it is invariably clunky.
Sometimes they do offer speed gains, but the degree to which they benefit you depends on the domain you are in - Unity is a great example of a framework that obviously saves people a ton of time developing games.
I personally think, that outside of gaming I don't think the benefit of using a third party framework to be really worthwhile. All of the best apps are ones that leverage the system to the fullest in terms of animation or UI abilities, meaning that someone spending some time crafting will be able to make a nicer looking app than someone who has to rely on the abilities of a framework.
The other problem you can run into is that no matter how popular a third party framework is, you are always going to have lots more support for the official platform - like the number of books around today on Objective-C and iPhone development, or even the very active Objective-C support on this very site.
The only exception would be if you had to have a cross-platform app and the app supported development for all the platforms you need. But even then I would argue for making the iPhone app distinct and take fullest advantage of the platform, or your app will languish and other competitors will overcome you.
Q1) Yea, performance. Javascript is slow on the iPhone, because the processor is slow. It's just a cold hard truth. Heck, loading NIBs vs using hand coded views is slow, because of the processing and loading involved, and that's simple compared to Javascript. Javascript is wonderful, but partly because we have really fast processors today. The iPhone (nor the Pre for that matter) have particularly fast processors, and Javascript's performance suffers because of it.
I have not used the frameworks, so can not comment on their productivity claims.
For question 1: non-native apps may not be able to access GPS information or other hardware on the phone.