Five Alternatives for Developing Native iOS Apps

The simplest way to join the ranks of iOS developers is to learn Objective-C and/or Swift (the latter, while not quite ready for prime-time upon release, has gotten a lot better with its recent v1.2 update). But for everybody who doesn’t want to go down that route, there are other ways to create native iOS apps.

Whatever way you choose, remember: If you wish to actually deploy apps to iPhones and iPads—and list them for sale in Apple’s App Store—you must be an Apple registered developer, which costs $99 per year.

Check out the latest iOS-related jobs.

The five alternatives are Xamarin, Codename One, Embarcadero C++ Builder/Delphi XE/AppMethod, RemObjects C#/Oxygene, and DragonFireSDK.

Native, Web or Hybrid?

The aforementioned five are for native development. Web and hybrid (i.e., Web plus access to hardware) development systems are well-established, but native development systems are not as common. Virtually all of the systems (except Rem Objects C# and DragonFireSDK) are cross-platform, as well.


Previously known as MonoTouch, Xamarin is the 800-lb gorilla; its creators claim that nearly a million developers use the platform, which lets you create native apps using Xamarin Studio IDE on Mac or via a plugin for Visual Studio on PC. In the latter case, you still need a Mac on the same network as the PC. You can debug an app running on an iPhone that’s plugged into your Mac from Visual Studio on the PC, and it not only works very well, it’s as fast as debugging a PC program.

Xamarin uses ahead-of-time compilation to turn the C# code into native ARM code and adds a small 3.5 MB runtime. Cross-platform aside, the platform’s big benefit is access to the .NET technology (think of LINQ, Generics, Tasks etc.), and how it simplifies enormously the task of developing complex code. I’ve written code that performs string searches on lists of over half a million elements on an iPhone 5 and the response is almost instantaneous.

The only downside is that Xamarin isn’t cheap at $300 a year per developer for the Mac version, for either iOS or Android. If you want the Visual Studio plugin, it’ll cost $1,000 a year for one version, and double that for both iOS and Android. There is a free version but it has limits on app size.

Codename One

The oddly named Codename One is for Java developers, and has a free community edition as well as paid versions. Codename One requires that you upload any iOS app you want to test to their servers, which generate the Objective-C files to download and build on your Mac and deploy to your device or the App Store. Although it sounds cumbersome, the creators claim that over 75 million apps have relied on their service.

A major benefit of using Java (apart from the sheer amount of code available) is that any of the major Java IDEs (Eclipse, Netbeans or Intellij IDEA) can be used; Codename One provides a set of extensions and generic libraries. Plus Codename One itself is open-source software; with a bit of effort, you can set it up to build at home.


Better known for their database clients such as DBArtisan and Rapid SQL, Embarcadero bought the Codegear (aka Borland) Delphi and C++ Builder development systems, and has transformed and modernized them. It has an annual release cycle and is up to XE 7, with XE 8 coming out soon. Its product RAD Studio has both Delphi and C++ Builder (and more), but is not cheap; thus you get two different languages (C++ and Object Pascal) to develop apps for iOS, as well as for Android and Windows.

Delphi’s popularity peaked in the late 1990s; although it never quite made it into the mainstream, it’s more than suitable as a mobile development language and easier to learn than C++.

Embarcadero’s products are generally for the enterprise market. Buying the latest Delphi or C++ Builder version to develop for mobile will set you back over $2,000. If you don’t want to shell out that sort of cash, there’s always AppMethod, a stripped-down Delphi/C++ Builder with the added benefit of being cross-platform—the Android version is free, and iOS and other versions cost about $30 a month.

Rem Objects C#/Oxygene

A solid Xamarin alternative for developing in C# is Rem Objects C#, which is clearly targeting Xamarin. (It’s Oxygene product for Object Pascal is also very good.) Nowhere is this clearer than in their definition of native, which includes not just compiling to the platform’s byte code but also having the look and feel of the platform. (That’s an indictment of Embarcadero, which uses the same FireUI on all platforms.)

In addition to this, RemObjects also offers Silver, which lets you use Swift to write code to run against the .NET, Java, Android and Cocoa APIs. It’s currently in Beta.


This has been around a few years. For $99, you can create 2D iOS game apps in C++. Rather than provide full access to the underlying iOS API, the DragonFireSDK wraps a subset, sufficient (in theory) to create most 2D games. You can also publish free games without needing to be an Apple registered developer, by publishing through its publisher, ZimuSoft.


There’s no shortage of systems for developing native apps for iOS and other platforms, but cost will most likely determine your choice. Other than the annual Apple developer fee, Apple Swift costs nothing; with regard to the above platforms, Embarcadero is the most expensive. Happy Coding!

Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

Image: Xamarin

6 Responses to “Five Alternatives for Developing Native iOS Apps”

  1. Unity is another option. With the new Unity UI, it’s not just for games anymore. You can create a single code base that runs on just about any platform. It’s similar to Xamarin in that it uses the mono runtime, but instead of creating one UI for each platform (as you do in Xamarin), with Unity you create one UI that runs on all platforms.

  2. Shai Almog

    Thanks for the mention!

    Codename One doesn’t require a Mac or uploading. Just right click and we build the app for you (automatically) on Macs we host in the cloud and send it right to your device when you scan a QR code…
    You can see the whole process in the hello world tutorials on our website.