A high-level overview of the mobile-development terrain, this post examines some of the most important tools, challenges, and opportunities in both the iOS and Android worlds.

The state of mobile development: iOS, Android dev after WWDC, Google I/O

This is the first of three articles on the state of mobile development.

Fresh off of Apple's Worldwide Developers Conference (WWDC) and Google's I/O 2015, it's time to take a look at the state of app development. In this three-part series, I'll examine what's behind contemporary iOS and Android app development. Which languages are most prominent on each? What about the Internet of Things (IoT)? Do I need to worry about containerization? And what's the deal with deep linking?

Different philosophies drive divergence

In many respects, the developer tools for Android and iOS reflect the divergent philosophies of the companies behind them. At a high level, Google thinks of everything in terms of data. By contrast, Apple decidedly rejects the widespread collection and use of customer and user information, so much so that CEO Tim Cook is selling privacy as a feature.

Which approach is "better" is a matter of preference, much like which phone (Droid versus iPhone) or type of computer (PC versus Mac) you prefer.

At this point, there's no clear winner in the mobile wars. Different criteria produce different results. Android owns nearly 80 percent of the market, but Apple developers make much more money than their Android counterparts. Bottom line: they're both extremely successful. As Amazon, Blackberry, and Microsoft can attest, it's really tough to catch up.

Drilling down on today's mobile development

Let's drill deeper. Each platform has its distinguishing features. For example, Android originally handled certain device configurations better than iOS, such as screen resolution. This earned the ire of plenty of developers. "That's no longer the case: Apple has caught up," says Ben Lamm, CEO of Chaotic Moon Studios.

Today, iOS arguably provides a slightly friendlier interface, but Android is more customizable. Generally speaking, there's no one killer iOS feature that Android lacks and vice versa. Knowledgeable mobile developers will tell you that both OSs do very similar things. For instance, an iOS developer doesn't have to kill an app because it doesn't do something essential that Android does—both are robust.

IDEs

iOS developers use an integrated development environment (IDE) called Xcode. It's currently in version 6, and Xcode 7 arrives this fall. (Grab the beta version now if you like). First released in 2003, Xcode has updated and changed how developers create iOS apps, increasing their speed and reliability tremendously. Today, Apple can safely release new devices of different sizes, from the Apple Watch to the iPhone 6 Plus, with developers confident that their apps will still work.

Thanks to development frameworks such as SpriteKit and SceneKit, Xcode has become much more gamer-friendly. Outside of that, the platforms are essentially identical in the features they provide their developers. Each supports standard mobile devices, but that's table stakes. To be relevant today, they must—and do—support APIs for wearables, home automation, and car integration. The only restriction is that neither platform can be used to build for the other, at the time. Despite this limitation, both sets of tools are equally user-friendly. What's more, they offer roughly the same level of functionality, allowing developers to create great apps.

Google has created similar tools to encourage Android app development. At first, the company supported and promoted an open-source IDE called Eclipse. Recently, though, it has developed Android Studio as its official IDE. This is based on IntelliJ, a commercially available IDE. This change has also allowed Android developers to create apps at a faster pace with more standardized tools across the board. (More on the feature differences between Eclipse and IntelliJ here.)

SDKs and APIs—issues and opportunities

In the mobile world, Apple beat Google to the punch. (Fred Vogelstein's Dogfight: How Apple and Google Went to War and Started a REVOLUTION reveals the details behind the smartphone wars.)

Apple's software development kits (SDKs) and application program interfaces (APIs) are rooted in NeXTSTEP and the twin frameworks AppKit and Foundation. If they seem familiar, it's because they are—their histories go back 20 years, although they've evolved considerably.

Although relatively late to the game, Google's Android has quickly matured. (No surprise here—dominating the market confers major benefits). By all accounts, the latest Android platform version, Android M, includes SDKs that will be more or less on par with those from iOS. Today both iOS and Android ship with a mature and robust set of SDKs and APIs, and both platforms play nice with many third-party libraries available to them. If you look at any major repository, you won't be hurting for options and alternatives.

That's not to say there aren't challenges. Specifically, as these mobile platforms mature and the baseline operating systems progress, thorny problems often manifest themselves. Developers have to constantly monitor and update third-party SDKs to ensure they work well with new versions of each OS . This is the primary reason the apps on your mobile device need to be routinely updated.

Swift sweeps in for the rescue

Java remains the most popular programming language for Android. Interestingly, it's starting to face some competition from Kotlin, a "statically typed programming language for the JVM [Java virtual machine], Android and the browser."

On the iOS side, developers have historically relied upon C, C++, and Objective-C. While it won't happen overnight, that's starting to change. At the WWDC last year, Apple announced a powerful new development language called Swift. At this year's mega-conference, Apple announced that it will be making Swift open source, something that may have far-reaching implications for developers and laypeople alike.

This might allow Android developers to create apps using Swift, if Google allows it. Other options gaining traction include PhoneGap and Xamarin, which allow developers to write in other languages. Ultimately, their apps would run on either platform, although most developers still prefer to provide a native app experience where possible.

Openness and the closing doors on the past

Android developers suffer from two major challenges. First, there's the monetization issue. Flurry recently found that Android apps generate only 24 percent of the revenue generated by iOS. Although Google has certainly made inroads with the Google Play, the company has yet to provide developers with the same opportunities to profit from their work as Apple has.

Second, Android fragmentation is alive and well, something Apple execs regularly enjoy pointing out at the WWDC. Fragmentation of the Android market means that proportionally, fewer users are on the latest version of Android. To be sure, this can severely hobble developers. Users simply can't use the latest and greatest SDK features because they haven't installed the most recent version of Android.

Apple's tight control over its ecosystem has traditionally limited what developers can do. Although it will always be more closed than the wild, wild west that is Android, Apple is showing signs of becoming more open.

Next: Going deep on deep linking, more

In the second post in this series, I'll examine deep linking, containerization, IoT, and other big app development trends and developments.

Image source: Robert Nyman/Flickr

Topics: MobileApp Dev