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.
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 11 years ago.
I have very little idea about mobile platforms, though I am interested to program for them.
Would you please compare J2ME VS Android VS iPhone VS Symbian VS Windows CE.
I would like to know:
which one is better
which one should I choose and why
if there is any VM technology to test the programs
is there any IDE, debugging facilities?
Personally, I would like to code for open source, but any suggestions are welcome. I have preliminary knowledge on Java. I would also like to know, if there is anything else that you can recommend.
There's several of these questions floating around on SO already... the most popular seems to be this one: what mobile platform should I start learning?
Quicky from the accepted answer over there (I edited a bit):
I think 3-4 platform have a future. But depends what platform do you like and how you like freedom in distribute your applications :)
Windows Mobile
C++ or .NET
free distribution, just like normal applications or through market
You need a Windows PC to develop
proprietary
Android
Java
Open Source
through Android Market ($25 one-time fees) or like normal applications
The platform is completely open source
iPhone
Objective-C or Java (Developing iPhone Applications using Java)
through iPhone Market ($99/year fees)
You need Mac (Mac OS) for development
proprietary
Java
J2ME or JavaFX
largely open source
My personal thoughts are: Symbian's dead; Windows Mobile will die, but take a long time; Android will become the standard in the next few years; iPhone will remain trendy in coming years, but NOT take be the biggest player; Pre/WebOS will maintain a niche market, but not be wildly sucessfull, Blackberry will decline, but still be around forever. I'd probably put my time/money into Android or iPhone at this point.
You can find everything about J2ME VS Android VS iPhone VS Symbian VS Windows CE in the below survey image:
Admittedly I'm biased, but points in favor of Symbian are:
Is open source
Has by far the largest marketshare (45% or so) of smartphones
Runs on cheaper hardware than Android and iPhone (means volumes will go up significantly faster)
Runs Python, Ruby, Java and Web Runtime Widgets
From Symbian^4 will have a complete Qt stack.
For maximum portability among smartphones, I recommend Javascript, HTML, CSS. It's the only way to run on certain systems you don't mention (such as Palm Pre and Google's ChromeOS), and (with suitable restraint in using advanced features, if you can) it's the one and only way to write your app ONCE and have it run on an incredible variety of platforms. Especially with some server-side support (unless your volumes are huge you can get that for free with Google's App Engine), it's quite a powerful and effective solution for many needs.
Otherwise, you need Objective C and Cocoa for iPhone (excellent technologies, really well supported by Apple esp. if you have a Mac, but won't help for other smartphones AND nothing else besides ObjC or JS will run on the iPhone), etc, etc.
I think iPhone is ruling the hardware and sotfware development,android is interesting but too new,symbiam is dying because Nokia,windows Will survive cause of money with bull€&€& but they will. iPhone is too restrictive and damn expensive but is thecoolest now.Finally i think that for the NeXT 2 years iPhone will reign.
Windows CE has tottaly caputed OS market for rugged devices, companys like motorola, intermec, Dolphin (Honeywell).
Plus Windows CE and Windows Mobile has an enterprise grade database platform.
When comes to spending money, companys buy $1000+ plus devices and build real applications on them.... I see Windows CE being around for a long time and the chart above only show smartphones and no other device, Android and CE can be on in TV's, running gaming system or anything eles.
A detailed market research about Android and iPhone here
and smart phone market share in first quarter of 2010:
(source: nielsen.com)
Take a look at PhoneGap and Appcelerator Titanium if you want to develop for multiple mobile platforms. They both allow you to write programs that run on both Android and iPhone, and PhoneGap also has BlackBerry support. PhoneGap programs are allowed on the Apple App Store, but I'm not sure about Appcelerator Titanium.
My response may be late, but here goes:
I've been exposed via work and academia to both the iPhone and Android platforms for the last year. I find two glaring flaws with both platforms that will limit, if not prohibit, viable entry into the biggest mobile market -- the business enterprise. Oddly enough, the flaws are opposite sides of the same issue: enterprise compatibility.
iPhone - Because Apple exerts ultimate control over what app makes it to the App Store, AND the app must be available to anyone once approved, IMO, iPhones will never become the defacto business mobile device. I cannot envision a business that would willingly expose it's source code to Apple's scrutiny. Nor would I want my "internal use only" enterprise app available for download by anyone in the world. I find that scenario laughable.
Android - OTOH, because Google (and now Oracle, too) exert no control whatsoever on app development, anyone who wants to, regardless of ability, can slap any old app on the App Market whether it works or not. I would not want my app lost in the confusing mix of slap-dash, teenage tinkering, malicious mongering developers. Would you?
However, the tie goes to Android because developers are not compelled to submit their apps to public access in order for them to be distributed.
Any other platform is either niche or passe'.
That's my take on the issue.
RE: Is there any IDE, debugging facilities?
For Android development the best option is to use MOTODEV Studio, based on Eclipse platform. Is an integrated development environment with Eclipse 3.5 and Android Development Tools (ADT) plus automatic download and configuration of the latest Android SDK. You can also test applications on an integrated Android emulator within it.
Java ME has the Java Verified Program and the Specs all come from the Java Community Process (JCP) far more advanced and vendor neutral than the others.
You can also take a look at iSpectrum . With this you can code in Java for iPhone, so you can reuse a lot of your code produced for Android and/or J2ME, for example.
Android would rule the market few years down the line, just because its an open source. No person would want to spend much on apps in future . Iphone till date survives because its trendy to use Iphone(as they say!) because of its UI and people are willing to spend on Iphone apps, so i must say its not far to see a mobile platform(Android) which is trendy, easy to use, free et al.
Want to improve this post? Provide detailed answers to this question, including citations and an explanation of why your answer is correct. Answers without enough detail may be edited or deleted.
Is there any way to tinker with the iPhone SDK on a Windows machine? Are there plans for an iPhone SDK version for Windows?
The only other way I can think of doing this is to run a Mac VM image on a VMWare server running on Windows, although I'm not too sure how legal this is.
It's certainly possible to develop on a Windows machine, in fact, my first application was exclusively developed on the old Dell Precision I had at the time :)
There are three routes;
Install OSx86 (aka iATKOS / Kalyway) on a second partition/disk and dual boot.
Run Mac OS X Server under VMWare (Mac OS X 10.7 (Lion) onwards, read the update below).
Use a framework and/or toolset, which allows developing on Windows, like Delphi XE4 with the mac-in-cloud service, which can build without MacOS device need. This is a commercial toolset, but the component and lib support is growing.
Other honorable mentions are Flutter, Xamarin and similar; which may at end need actual MacOS device for final build (but you can test on Android till then, as they're cross-platform).
The first route requires modifying (or using a pre-modified) image of Leopard that can be installed on a regular PC. This is not as hard as you would think, although your success/effort ratio will depend upon how closely the hardware in your PC matches that in Mac hardware - e.g. if you're running a Core 2 Duo on an Intel Motherboard, with an NVidia graphics card you are laughing. If you're running an AMD machine or something without SSE3 it gets a little more involved.
If you purchase (or already own) a version of Leopard then this is a gray area since the Leopard EULA states you may only run it on an "Apple Labeled" machine. As many point out if you stick an Apple sticker on your PC you're probably covered.
The second option is more costly. The EULA for the workstation version of Leopard prevents it from being run under emulation and as a result, there's no support in VMWare for this. Leopard server, however, CAN be run under emulation and can be used for desktop purposes. Leopard server and VMWare are expensive, however.
If you're interested in option 1) I would suggest starting at Insanelymac and reading the OSx86 sections.
I do think you should consider whether the time you will invest is going to be worth the money you will save though. It was for me because I enjoy tinkering with this type of stuff and I started during the early iPhone betas, months before their App Store became available.
Alternatively, you could pick up a low-spec Mac Mini from eBay. You don't need much horsepower to run the SDK and you can always sell it on later if you decide to stop development or buy a better Mac.
Update: You cannot create a Mac OS X Client virtual machine for OS X 10.6 and earlier. Apple does not allow these Client OSes to be virtualized. With Mac OS X 10.7 (Lion) onwards, Apple has changed its licensing agreement in regards to virtualization. Source: VMWare KnowledgeBase
Xamarin is a solid choice. It was purchased by Microsoft and is now built directly into Visual Studio. You code in C#. With all the updates and features they are adding, you can do everything but submit to the App Store from Windows, even compile, build and deploy to an iOS device.
For games, Unity 3D is a great option. The editor is free to use for development, and even for distribution (if you have less than 100K USD in annual revenue). Unity supports iOS, Android and most other platforms. It may be possible to use Unity's "Cloud Build" feature to avoid having to use a Mac for deployment, although by default Unity actually spits out an Xcode project when building for iOS.
Other options:
PhoneGap (html/javascript) also works. It isn't quite as nice for gaming, but it's pretty decent for regular GUI applications.
Flutter (dart) is a free cross platform mobile app development framework from Google. Write your code in Dart.
React Native (javascript) is another popular cross-platform framework created by Facebook.
Note that: for all of these options, all or most of the development can be done on Windows, but a MacOS device is still required to build a binary for submission to the App Store. One option is to get a cheap MAC Mini to do your final build.
If you have a jailbroken iPhone, you can install the iphone-gcc toolchain onto the iPhone through Cydia and that way you can just compilie the apps on the iPhone. Apps that are developed this way can still be submitted to the App Store.
And although Mr Valdez said it is a grey area (which it is), jailbreaking is incredibly easy and pretty much risk free. Yes, it voids your warrenty but you can just do a restore and they will never know.
Most of "so called Windows solutions for iOS development without Mac" require Mac at the end just to sign and send to app store. I checked a few, not all though (who has the time?)
At the end it's just too much trouble to learn "their super special easy way to program iOS without Objective-C", they have lots of bugs. Really the goal they are setting is unachievable in my view.
Also a lot of time they make you use Objective-C equivalent statements simply in another language. They kind of look the same but there are always subtle differences that you have to learn on top of obj-c. Which also makes even less sense, because now instead of learning less you have to learn more. So where is the gain?
Also they cost a lot, because they are very hard to develop.
Many lack any debugging abilities whatsoever.
In my honest opinion, if you are a hard-core iOS developer then for sure buy the best Mac and learn objective-c. It's expensive and takes time, but if it's your path, it's worth it.
For an occasional use, it's just easier to rent a remote Mac service, like XCodeClub.com
The SDK is only available on OS X, forcing you to use a mac. If you don't want to purchase a mac you can either run OS X on a virtual machine on your windows box, or you can install OS X on your PC.
In my experience the virtual machine solution is unusably slow (on a core2 duo laptop with 2G ram). If you feel like trying it search for the torrent. It's probably not worthwhile.
The other option is to install OS X on your PC, commonly referred to as a hackintosh. Hackintoshes work quite well - my friend just sold his mac because his Dell quad core hackintosh was actually much faster than the apple hardware (and cost about 1/3).
Of course both of these options are likely counter to some licensing scheme, so proceed at your own risk.
You can use WinChain
Quoting the project page:
It's the easiest way to build the iPhone toolchain on a Windows XP/Vista computer, which in turn, can take Objective-C source code that you write using their UIKit Headers (included with winChain) and compile it into an application that you can use on your iPhone.
You don't need to own a Mac nor do you need to learn Objective-C. You can develop in different environments and compile into Objective-C later on.
developing for the iphone and ipad by runing osx 10.6(snow leopard)
This article one of our developers wrote gives a pretty comprehensive walk through on installing OS X Snow Leopard on Windows using iBoot, then installing Vmware (with instructions), then getting your iPhone dev environment going... and a few extra juicy things. Super helpful for me.
Hope that helps. It uses Phonegap so you can develop on multiple smart phone platforms at once.
You can use Tersus (free, open source).
A devkit that allows one to develop iPhone apps in Objective-C, C++ or just plain C with Visual Studio:
Check it out at iOS build env
You can build iPhone apps directly within Visual Studio (2008, 2010, Express).
Pretty neat, it even builds IPA files for your app after a successful compilation. The code works as is on jailbroken devices, for the rest of the planet I believe the final compilation & submission to the App Store has to be done on a Mac. But still, it enables you to develop using a well-known IDE.
Of course, you can write Objective-C code in notepad or other programs and then move it to a Mac to compile.
But seriously, it depends on whether you are developing official applications to put in App Store or developing applications for jailbroken iPhone. To write official applications, Apple iPhone SDK which requires an Intel Mac seems to be the only practical way. However, there is an unofficial toolchain to write applications for jailbroken iPhones. You can run it on Linux and Windows (using Cygwin).
Try macincloud.com It allows you to rent a mac and access it through RDP remote control. You can then use your PC to access a mac and then develop your apps.
You will soon be able to use Adobe Flash CS 5 to create Apps for the iPhone on Windows:
flashcs 5
flashcs5 apps for iphone
Hooray! You can now more easily accomplish this with the latest Xamarin.iOS, using a network-linked mac providing the build and deployment capabilities.
See here for more details:
introduction to xamarin ios for visual studio
If you want it to be legitimate, you have two options, cloud based Mac solutions or cross-platform development tools.
You may consider the hackintosh approach or virtual machines if you don't care about legal stuff. If you have a decent PC, running a virtual machine would be the easiest way to go. You may never know which hardware will have driver issues on a hackintosh.
I've tried all these approaches and they all have pros and cons, but for the second group, I feel kind of guilty. I develop apps to make a living and I wouldn't want to rip off someone else for it.
If you are making a small project, cloud based Macs may prove useful. Rent it for a short time, develop your project and off you go. Don't bother learning anything new.
However, if your project is getting big, cross-platform frameworks seem to be the only alternative. The critical thing is that you need to choose wisely. There are so many hybrid frameworks, but what they do can be summarized in one sentence as "diplaying web pages in an app wrapper" and developers' negative experience with hybrid frameworks also affects native frameworks.
I tried three of these (Titanium, Smartface and Xamarin) and they all claim to produce "real native output" and in my opinion their claims are correct. You need to test and see it yoursrlf, it's not easy to describe the native feeling. In a previous comment, it was indicated that it takes some effort to learn these platforms, but once you get to know them, you can develop not just iOS applications but Android applications as well, all with the common code base. And of course, they are much cheaper than a cloud Mac. Some of them are even free. You would need a Mac only for store submission.
If you know JavaScript, try Titanium and Smartface and if you know C#, try Xamarin. Just note that for the device simuator, Titanium is dependent on a Mac, but Smartface has a simulator app for Windows development and it works better than I expected. On the other hand, Xamarin requires a Mac in your network.
If you want to create iPhone apps but no Mac, then you should try http://www.pmbaty.com/iosbuildenv/
It allows you to easily develop native iOS apps, like with XCode, deployable on any iPhone, iPod or iPad (jailbroken or not).
Use your favourite IDE to code in Objective-C, C++, C or ARM assembly, like in XCode. ARC and blocks are supported.
Compile your iPhone apps directly inside Visual Studio
It works on Windows all versions (XP, 7, 8), FreeBSD and Linux
Now with iOS8 support.
Check out this:
Over view
It is a project that attempts to be able to cross-compile programs written in a variety of source languages to a variety of target languages. One of the initial test cases was to write programs in Java and run them on an iPhone. Watching the video on the site is worthwhile.
With that said, I haven't tried it. The project seems quite beta, and there isn't a lot of activity on their SourceForge site.
You can use Intel XDK with that you can develop and publish app for iOS without mac.
Click here for detail.
Interesting that no one has mentioned the cross-platform wxWidgets option.
It's less than an optimal solution, though.
IMHO, the business-wisest way to go is to invest the money in Apple's endorsed framework. That way, if you find yourself stuck with some mind-boggling problem, you have a much larger community of developers to consult with.
YOU CAN DEVELOP IPHONE APPS ON WINDOWS PC. I've done it, with complex apps. And it works perfectly. You can develop iphone apps without ever seeing a mac or iphone.
You can develop on windows an HTML (or better: HTML5) app, using tools like Sencha or JQTouch, or mobi1. (They used to all be free for a while)
Then you use openSSL to sign the app. And Adobe PhoneGAP Build service to build IPhone App.
But you need the iphone developer licence to install it on an iphone. But you don't need a mac or iphone at any minute to compile, build or test it - all that is done ON THE PC.
I've done it, and it works perfectly. (But with Android type responsiveness - not as fast as a native IPhone app)
You could also use a program from the the Babylonian era (circa 300 bc) running C and C++ called dragonfly. If your app has one or two screens with limited interactivity, and many calculations, go for it. It includes an emulator. You compile to the iphone at the press of a button. (Not sure, but I think you do need a developers license in any case)
And then there is Xamarin. You develop in C# with special calls to native code. You'll have to learn the environment.
Oracle VirtualBox allows users to install Mac OS X in a virtual machine. If you are comfortable with it, you could just use that way to use Xcode. This is legal if you "dual boot" your mac into windows, then install the VirtualBox within windows (or linux).
Other possibilities are cross-compilers such as Appcelerator Titanium (HTML, CSS and JavaScript) or MonoTouch (.NET).
You can use Sentenza for make applications for iPhone, on Windows.
Tested with success.
It's not a solution but a good alternative !
Two other options
Titanium Developer - free community edition - write in HTML/JavaScript - compile with Xcode (requires a Mac or VM)
OpenPlus ELIPS Studio - write in Flex, compile on Xcode (requires a Mac or VM) - they just started charging for their product however.
I think there may be 'toolchain' options for these and some of the others mentioned, which allow you to compile to binary on Windows, and I have seen that you can upload a zip file and have a toolchain style compile done for you online, but this goes against the Apple licensing.
If I am not mistaken, a product such as Titanium that outputs/works with Xcode and does not use any 3rd party / alternative / restricted libraries should be in compliance, because you are ultimately compiling in xcode - normal Objective-C code and libraries.
As has been pointed you can attempt to use the WinChain but if you are a newbie coder it won't be easy.
The iPhone SDK will work on Hackintoshes (a normal PC with OS X installed on it). I know as I have one and it does.
So after you go buy an OSX license you could TRY to install it on your PC on a different drive using Boot-132 or one of the other installers like iDeneb. The issue you will have to do a lot of tinkering and things still won't work quite right.
Using Xamarin now we can develop iPhone applications in Windows machine itself with the help of Xamarin Live Player.
Using this Xamarin live player dev/deploy/debug cycle can now be done without an Apple system.
But to sign and release the app Apple system is required.
Find the reference here
I checked the reference nothing dodgy
Yes and you don't need to learn Objective-C and buying Apple software and hardware.
Adobe have created compilator from ActionScript 3 to program for iOS. And later Apple approved this method of application creation.
This is best way to create Apple applications under Windows or Linux/BSD (and another one for MacOS-X)
If you want to develop an application on Windows environment then there is an option, you can install MAC OS in your windows Platform name is : "Niresh'MAC OS" , you can search that text on Google
then you can download the whole MAC OS Source and easily installed MAC OS in your Windows PC, Niresh is able to Hack the whole OS.
Hope this will help you.
You can install OSX on PC but experience wont be great and it needs lot of work. Alternate is to use a framework/SDK Codename one: which is based on JAVA and can be used to code in WP8, Android, iOS on Windows (eclipse) with all extensive features
Features Overview:
Full Android environment with super fast android simulator
An iPhone/iPad simulator with easy to take iPhone apps to large screen iPad in minutes.
Full support for standard java debugging, profiling for apps on any platform.
Easy themeing / styling – Only a click away
More at Develop Android, iOS iPhone, WP8 apps using Java
Disclaimer: This is my review for the product
Develop iOS Apps on Windows With Cross-Platform Tools
Cross-platform tools are awesome: you code your app once, and export it to iOS and Android. That could potentially cut your app development time and cost in half. Several cross-platform tools allow you to develop iOS apps on a Windows PC, or allow you to compile the app if there’s a Mac in your local network.
Well, not so fast…
The cross-platform tool ecosystem is very large. On the one side you have complete Integrated Development Environments (IDEs) like Xamarin, that allow you to build cross-platform apps with C#.
The middle ground is covered by tools like PhoneGap, Cordova, Ionic and Appcelerator, that let you build native apps with HTML5 components. The far end includes smaller platforms like React Native that allow you to write native apps with a JavaScript wrapper.
The one thing that stands out for all cross-platform tools is this: they’re not beginner friendly! It’s much easier to get access to a Mac, learn Swift, and build a simple app, than it is to get started with Xamarin.
Most of the cross-platform tools require you to have a basic understanding of programming, compilation options, and the iOS and Android ecosystems. That’s something you don’t really have as a beginner developer!
Having said that, let’s look at a couple of options:
If you’re familiar with Windows-based development tools and IDEs, and if you already know how to code, it’s worthwhile to check out Xamarin. With Xamarin you code apps in C#, for multiple platforms, using the Mono and MonoTouch frameworks.
If you’re familiar with web-based development, check out PhoneGap or Ionic. You’ll feel right at home with HTML 5, CSS and JavaScript. Don’t forget: a native app works different than a website…
If you’re familiar with JavaScript, or if you’d rather learn to code JavaScript than Swift, check out React Native. With React Native you can code native apps for iOS and Android using a “wrapper”.
Always deliberately choose for cross-platform tools because it’s a smart option, not because you think a native platform language is bad. The fact that one option isn’t right, doesn’t immediately make another option smarter!
If you don’t want to join the proprietary closed Apple universe, don’t forget that many cross-platform tools are operated by equally evil companies like Google, Facebook, Microsoft, Adobe and Amazon.
An often heard argument against cross-platform tools is that they offer limited access to and support for smartphone hardware, and are less “snappy” than their native counterparts. Keep in mind that any cross-platform tool will require you to write platform-specific code at one point, especially if you want to code custom features.
If you have ssh access to a Mac, then you can use a VNC (like Vine VNC, which allows multiple uses at once - thin thin client) to control XCode.
This could be useful if you wanted to access a Mac Mini from a laptop, or your S.O. is hogging your MacBook.
You may try to develop web apps for iPhone using HTML, JavaScript, CSS. Check the getting started info at Apple's site.
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.