Which is Easier to code: Android App vs iOS App?
Solution 1
They're both equally complex, so it boils down to what you're familiar with.
Judging solely based on what you know, Android development will feel easier. The syntax will be close to what you already recognize.
Objective-C has an OO syntax that is unlike anything you have listed in your post. It would take a little while to get accustomed to.
Solution 2
I've been using developing for iOS for a little over a year and for Android for about six months. Both presented their own challenges but at the end of the day I'd say that all things being equal iOS is easier to learn for a few reasons.
1) Interface Builder - Setting up your GUI is a lot easier with iOS because you can lay it out in IB and then link to objects in your code. Saves a lot of time. The closest thing Android has is DroidDraw which doesn't link directly to code and just generates a rough draft on the layout xml files. It's better than creating the views programmatically but falls short of IB's simplicity and robustness.
2) API's - The Apple API's have been in existence longer and have been developed further. Android is definitely catching up but there's still a lot of areas, especially in the mobile centric API's, where Apple's API's are better in terms of what's available and documentation. A lot of low level things can be done by higher level API's which helps reduce the entry barrier.
3) Hardware and OS Fragmentation (or lack there of) - Apple does a lot to push the user base to update to the latest iOS version which is available across all form factors at the same time (iPad being stuck in 3.2 for a while is the one exception). You can very safely target the iPhone hardware platform and achieve cross compatibility with the iTouch and iPad with very little extra work. Android has a huge selection of devices many with device specific OS modifications which can lead to a ton of headaches when testing. There's also the different screen sizes and resolutions to deal with.
I want to stress that I enjoy working with both platforms for different reasons but coming at this from a which is easier to learn perspective I'd have to vote iOS. Of course that's all things being equal. The Objective-C syntax can be hard to get used to, if you're already comfortable with Java then some of the basic Objective-C concepts will be new and may take some time getting used to, plus you'll be reintroduced to memory management as there is no garbage collector like in Java. And lastly as has been mentioned if you don't own (or have access to) a Mac you can't program for iOS.
Solution 3
I have only been a web developer, with a little bit done in .NET (C# and VB), anways my employer wanted to start releasing apps on both iPhone and Android, since the other developer was busy with a major project, was the one put to task to learn both android and iOS (well iPhone SDK at that time).
I first started with iOS. I read a couple books, downloaded a bunch of sample projects from Apples developer reference. I would say it took me about 2-3 weeks before I became a little bit comfortable developing in it.
After a month of developing the app on iOS, my employer wanted me to port it to android. So I did the same process as I did for iOS, read a couple books, downloaded a bunch of sample projects. It took me a lot longer until I started feeling comfortable in android. I just didn't understand it at all at first.
Now after spending a year developing for both platforms, I prefer iOS. I find their documentation amazing, and I just find coding fun on the platform.
I hate android simulator, it is just way too slow, can only test on actual device. I find coding for it a chore. I would say it takes about same amount of time for me to develop an app on either device, but I just enjoy doing it on iOS. Everything just clicks for me
Solution 4
I think you're asking the wrong question. The programming language makes little difference in the difficulty to develop something. The API and how well it's documented can make a big difference. If you've never done GUI, I think I'd start with something that isn't mobile as that makes it more difficult.
Solution 5
I would start with Google's amazing App Inventor, which is the simplest way to make mobile apps.
When using App Inventor, instead of writing code, you visually design the way the app looks and use blocks to specify the app's behavior. It doesn't require any programming knowledge.
You can find more information here.
CuriousMind
Learning by Doing & Sharing What I have learned. to get in touch, send me an email at [email protected]
Updated on July 09, 2022Comments
-
CuriousMind almost 2 years
I want to improve my coding skills, so I have planned write a Mobile Application.need to choose between Apple's iOS or Google's Android.
my background: I have done basic programming in .Net,C/C++,Python and PHP in college, so got OOP concepts covered. about my skill level, I just know concepts and basic syntax. But can't write complex applications, if asked :(
So decided to hone my skills, And I wanted to know which is easier to learn for a programming n00b.
A) iOS which uses Objective C B) Android which uses Java
I want to decide based on difficulty level
-
Erik Kerber over 13 yearsPartially true, you'd have a hard time convincing me that coding Objective-C isn't harder than Java/C#.
-
Max over 13 yearsEh, forget the safe option. Jump right in and write a mobile app. Try android first as it's easier to get started (usually need a Mac for iOS stuff), but putting in time on either will be rewarding.
-
Xairoo over 13 yearsAnd the Objective-C skill set is not as transferable to other types of applications (non Apple) due to its much more limited usage.
-
bbum over 13 yearsHuh? If you know Objective-C, then you definitely know C and quite likely have learned a bit of C++. And you know the Java, SmallTalk, Python, and Ruby object models. Objective-C skills are extremely transferable.
-
CuriousMind over 13 yearsThanks, I have decided to Go for Android because 1) I expect Android will have surpass number of iOS devices worldwide, in long term. 2) It also gives me a nice excuse to learn java.java has lot of boilerplate, And I had been avoid it for this very reason 3) I own a android device, so bit more familiar with platform. Wish me Luck!
-
CuriousMind over 13 yearsTried App Inventor, its good but It should be less dumb. Meaning there should be a way which allows me to 'export' an App Inventor Application into Eclipse. If they add this feature, then I am sold!
-
CuriousMind over 13 yearsOpenUP seems interesting but it for single developers? I normally maintain an Todo list of tasks that needs to be done in an excel sheet. Its simple and saves me time than following complex procedures.
-
Edwin Buck over 13 yearsFor single developers, it's hard not to do anything other than cowboy coding; however, with discipline, you could do OpenUP. The benefits will be similar to the benefits of having a full development plan. The costs the same as having the same bunch of overhead of a complete project team (being borne by only one man). If you are individually capable of not falling victim to the kinds of problems that can be detected and directed around with a full process (which should cause more inspection of the problem / solution) then you won't gain much more than overhead doing more than cowboy coding.
-
Ivan Dossev about 12 yearsBasically same story with me, I've been in the Android waters for a few days now and starting to feel exactly what you described above. Android is a more powerful platform compared to iOS (less enforced restrictions on what you are allowed to do), but development for iOS is much more polished. Android is like a cookie jar that had a lot of hands in it and there's crumbs all over the place. I'm sure there will be features I love about both platforms, but from experience I can say that objective-c is very flexible.
-
fishinear over 11 yearsI would have to disagree with this. Yes, Java is somewhat easier, but definitely not "a million times". Objective-C uses the same OO principles as C++, and has C as a subset, so it is definitely not "totally different". The main thing that is awkward in Objective-C is the syntax of method invocations, which you get used to after a while. The main advantages of Java are garbage collection and the "everything is an object" concept. But as others said, it is more important to look at the differences in API's.
-
Bogdan Alexandru almost 11 yearsI have programmed in C, C++, Java, C#. In my opinion, Objective-C has only one unnecessary weirdness that takes time to get used to: the message style syntax. Instead of
object.method(parameter)
you write[object method:parameter]
. Also the memory management is in my opinion the biggest weakness of this language, because you need to do it manually; although, the new standard ARC feature makes it easier. Other than that, it's just pure C with OO add-on. Now I'm really starting to like the message-style feature because it offers named parameters which I find very cool and helpfull.