Xojo vs Xamarin

AndroidLast week when I was the guest speaker on Xojo’s webinar on consulting, I fielded a question regarding Xamarin.  The basic gist of the question was if I felt that Xamarin was a threat to Xojo.  At the time I had heard of Xamarin and read a few articles on it but that was about it.  In the week since I’ve been doing more research on the topic.

Xamarin is an interesting development tool.  To sum up what it is in a sentence or two probably does it some injustice but here’s my take.  Xamarin takes the C# language and .NET framework and has ported it to Mac OS X, iOS, and Android.  This allows developers to use the Visual Studio IDE on Windows, and Xamarin Studio users on Mac OS X and Linux to create native Mac OS X, iOS, Android apps, in addition to Windows desktop and Windows Phone apps.

I threw Mac OS X in there since it’s listed on their website but it appears to more of an afterthought since the focus seems to be on mobile applications.  Indeed, their mantra is that they want to make the best development experience for mobile applications.

I am not a C# developer but like most modern languages it’s not the language that’s difficult to learn it’s the framework and .NET is arguably one of the biggest and most advanced frameworks around.  Having the .NET framework available for iOS, Android, and Mac OS X is a huge advantage for anyone already familiar with it.  Theoretically it should make the transition from Windows developer to cross-platform developer very easy.

Xamarin uses native platform user interfaces and compiles to native applications for each supported platform.  This is good in that you get the best of each platform.  The not so good is that it appears that you’ll end up coding each user interface separately (see Xamarin.Forms later on).  I can see the arguments going both ways on this whether this is good or bad.

Unlike Xojo, Xamarin does not have a built-in forms editor.  They give the option of building Cocoa and Cocoa-touch applications strictly via code or by using Apples Interface Builder.  You either stay in Xamarin to build everything via code or you exit to Interface Builder to design your UI.  I can’t imagine that’s very efficient but Interface Builder wasn’t always integrated in Xcode either.  As a developer you have to roll with the punches.

The Xamarin framework has some cross-platform calls to make life easier, but when it comes to iOS and Mac OS coding it appears that most of it is similar to Xojo’s ability to make declares into the native OS.  Again, you might call this a strength as you get the Apple methods but it also means that you’ll need to know each target OS in detail which can be a rather large learning curve.

Xojo abstracts as much of the platform as possible which means that a TextField on Mac OS has mostly the same capabilities as a TextField in Windows and Linux.  The strength in Xojo means that you don’t need to know the details of each platform but it also means that you generally get a compromise in functionality.  This is where system declares can really aid the Xojo developer.

Web Presentation

Xamarin’s website is gorgeous.  Nearly everywhere you go there are very helpful tutorials and videos explaining how to do things.  It’s also laid out in such a way that you can quickly find things.  The Xojo website is okay and relatively easy to find things but Xamarin goes out of their way to convince you to use their development tool.

The tagline on the Xamarin home page is “Create native iOS, Android, Mac and Windows apps in C#.  Join our community of 687,765 developers.”  Practically everything about the website screams, “Use me and you’ll make a great applications!”  It’s very professional looking and it’s all business.

The tagline on the Xojo website reads, “Create powerful multi-platform desktop, web & web-mobile apps.  Fast development.  Easy deployment.”  It’s not that Xojo doesn’t attract professional developers but their emphasis is on different things.

One thing that surprised me quite a bit was under the Support/Consulting Partners menu of the Xamarin website.  It’s a listing of Xamarin consultants and they are listed by tier (authorized or premier), by geographical region, and by expertise.  The Xojo website has the Find a Developer page.  The first says that it’s a serious language with a lot of software development partners and the other says that it’s a smaller community.

IDE Comparison

The Xamarin IDE is fairly simple and seems to be a hybrid between Xojo and Xcode.  Their Solutions pane is not nearly as complex as the Navigator and is far simpler and easier to use, in my opinion.  The Solutions list only shows objects unlike the Xojo Navigator that shows everything (methods, properties, constants, enums, etc) as you drill down into the object.  As you select an object in the Solutions list the source code editor loads all your source code.

If I had a major beef with Xojo is that they try too hard to dumb down the IDE.  You can’t just start typing away like you can in practically every other language/development environment I’ve ever seen.  Instead, you are forced to add methods through the Xojo UI.  You’re forced to do the same thing with properties, events, constants, enums and so on.  While this is great for people just starting out in Xojo it’s a limiting factor for more experienced users and forces you to use the mouse – a lot.  This means you can only see one method at a time unless you open up multiple windows whereas the Xamarin source code editor shows you everything in the source code.  Method definitions are defined via text in the code editor and not by a specific user interface.

Xamarin has the prerequisite autocomplete in the source code editor and appears to be work roughly the same as Xojo’s.  One thing that I REALLY liked about Xamarin was a tool tip showing you what the current parameter was.  As the user types the code editor recognizes where it is and provides a tool tip with a hint on what it’s currently expecting for the parameter.  This was one of my favorite features from VB6 and sadly, Xojo’s source code tip is an antique by comparison.

Xojo has a built-in forms editor.  Not only that but it has a reports editor, menu editor, database editor, as well as specific editors for a bunch of one-off items.  Xamarin shows objects and source code – that’s it.  So this forces you to either build all the UI via code or via an external editor.  While the Xojo editors aren’t perfect they are there and easy to use.

If you purchase the Xamarin Indie subscription (or better) you can use the Xamarin.Forms module which allows you to build iOS, Android, and Windows Phone screens from a single code base and it should speed up development.  However, I think Xamarin faces similar hurdles to Xojo in that a bug in their framework requires a new release so it’s no panacea.  And, you still build the UI via code not through a GUI editor.

Pricing

Xamarin comes with four different subscription options.  The Starter Subscription is free and is good for individual developers and allows you to deploy Android, Windows Phone, and iOS apps to a device and to their respective app stores.  Apps are limited in size and you are forced to use the native UI builders.

The Indie Subscription costs $299 per year, per developer, per platform.  If you were interested in iOS, Android, as well as Mac OS X this would cost $807.30.  Apps are unlimited in size and can use Xamarin.Forms.

The Business subscription costs $999 per year, per platform, and per developer.  This gives you Visual Studio support, “business features”, and email support.  The same Android, iOS, and Mac bundle jumps to $2,697.30.

The Enterprise subscription costs $1899 per year, per platform, and per developer.  This adds Prime Components (pre-built UI assemblies), guaranteed response time of a day, hot fixes, an individual manager, a bunch of support and code troubleshooting options.

Xojo pricing is much simpler by comparison.  $99 for an individual platform license with a $99 1 year renewal.  $299 for all desktop apps (Mac, Windows, Linux) with a $150 1 year renewal.  $399 for web apps (running on Mac, Windows, or Linux computers) with a $200 1 year renewal.  $999 gets the Pro license which gives you all desktop, web, database server, and console/service apps, consulting leads, and beta program access and the 1 year renewal is $500.  The Enterprise license at $1,999 is everything as Pro with an additional day of custom training and the 1 year renewal is $1,999.  All of the licenses are for a single developer.

Xojo is considerably less expensive but the Xamarin pricing is inline with what professional developer organizations are used to paying for their tools.

Conclusions

If I were a C# developer I would be all over this product – especially if I wanted to my apps running on non-Microsoft computers and devices.  I believe this is where many of the nearly three quarters of a million developers are coming from.  I’m sure there are plenty of other developers that were tired of developing their mobile apps on one or possibly even three separate development tools too.  Xamarin makes the development process easier  by using a single tool.

Xamarin is really pushing mobile app development.  Based on the forum activity I suspect that Mac OS X isn’t in the limelight but because iOS is so similar I can see why it was added.  It’s another notch in the capabilities checklist for a growing tool and user base.  If you can do all of your development with one tool why wouldn’t you?

Xojo really isn’t competing in the same space as it’s for only desktop and web applications (an iOS version is currently in alpha testing and should be released this year).  Xojo has been doing cross platform desktop and console applications for nearly two decades and has transitioned through 68k, PPC, and Carbon to Cocoa on the Apple side as well as all the Windows and Linux variants and versions.  Web apps are relatively new but the framework is very much the same as the desktop side.

From what little we’ve seen of the iOS version (remember that it’s in alpha testing right now) it has a built-in forms editor and uses pretty much the same framework as the desktop and web (with specific differences, of course).  It promises to make developing for iOS extremely easy.  However, Xojo has no current plans to support Android or Windows phone.  This might be the one key difference that might make Xarmarin an attractive development environment for many.

Will this consulting company be switching from Xojo to Xamarin anytime soon?  No.  The cost of migrating to a new tool, retraining, and getting involved with consulting in a new environment is considerable.  If Xojo went away tomorrow I know which tool I’d look at first.

10 thoughts on “Xojo vs Xamarin

  1. It sounds as if it could be taking some sales from Xojo. While it does not have Web, I get the feeling that while at one time web apps were seen as very desirable, these days native apps talking to a server of some sort seem to the hot thing, particularly with mobile.

    A a hobbyist and sometimes in-house developer who sometimes wonders if she might do more, what keeps with Xojo are 3 things: Price, ease of use and the fact that it is NOT C like in any way…

    I suspect those are the things that keep many current customers with Xojo vs Xmarin…

    By the same token some of that make it LESS attractive to some professional coders , particularly NOT being C like.

    I personally hope Xojo can keep a big enough niche to keep the company going and keep prices low. It fits my needs and budget (though less so that in the past) fairly well.

    But I do think Xmarin has the potential to syphon off some potential “high end” customers.

    • If I already knew C# and .NET I’m not sure that Xojo would even get on my radar. That’s the audience that Xamarin is tapping into.

      Of course you could flip that and say that Microsoft is losing market and mind share so all those developers that want to get out of the MS-only ecosystem have found a way out while not losing any of their skill set.

  2. I just finished taking the Xamarin University certification courses, and I must say Xamarin 3.0 is very capable of handling complex cross-platform apps.

    There are form editors in for Android and iOS in Xamarin. Xamarin.Forms allows you to build one interface (in code) that can be shared across all devices. Platform specific implementations can also be implemented with the use of DI and IoC.

    Great comparison, BK!

  3. NB: Xamarin Forms is a different beast that the build in iOS storyboard editor.

  4. I installed Xamarin and played with it a couple months ago. Like many open source projects, I found it to be a contraption of other open source or free libraries. I wasn’t pleased to find out I would be forced to install an insecure older version of Java to use it. In the end, that turned out to be the deal breaker. Also, why use .NET if you can’t support all the languages of .NET (answer: because they use Mono)? Uninstalling it left a lot of junk on my computer. Xojo, in my opinion, would be well served to learn more about the website design of Xamarin and emulate that. Xojo should keep their nice, clean homemade installation process they way it is without a boatload of dependencies. Your IDE points are well taken…my least favorite part of Xojo.

  5. Thanks for the comprehensive review, Bob. I will be staying with Xojo too. It looks like Xamarin competes more-directly with something like Titanium. OTOH, I’m not sure why Xojo wouldn’t address the Android market now that “cross platform” means iOS/Android instead of Mac/Windows. And when you look at the pricing of Xamarin and Titanium, it appears to be a very lucrative market. I see a lot of clients who want to hire a developer to write them a mobile app that will work on iOS and Android. If I am doing the iOS app in Xojo, and the Android app in Java, then the guy using Xamarin is going to underbid me and deliver twice as fast.

    It is frustrating to see Xamarin race ahead to mobile. It has been *six* years since the App Store opened, and we still can’t build for iOS. Xojo has missed the entire mobile revolution.

    Years ago, I wrote a post on the RB forum urging RS to take RB open-source for the express purpose of having more developers helping to support new platforms. I don’t know how well that would have worked out, but it has worked extremely well for Automattic/WordPress. And that might be the only way to survive in the future as the number of platforms increases. After all, can you still call something a *rapid* application development (RAD) tool if you have to wait six years to compile your app?

    Having said all that, it’s a big world, and it’s a huge software-development world, and I’m confident that Xojo will continue to thrive. It feels like going back to the Stone Age when I have to write WordPress or Android code. The development tools just can’t compare to Xojo.

  6. FWIW, I deleted a comment that was from what appeared to be a Xamarin user. The gist of their comment was: Xamarin rules. Xojo sucks. I hope the Xamarin community is more professional than that ignoramus.

    If you have nothing constructive to say I *will* delete your comment and mark you as a spammer. I have no problems posting criticisms of either product as long as they’re valid and respectful.

  7. ” It feels like going back to the Stone Age when I have to write WordPress or Android code. The development tools just can’t compare to Xojo.”

    For Android development, you could try Basic4Android. (http://basic4ppc.com). It requires a Windows environment, but you should be right at home with the syntax of the language. It’s an affordable and very efficient tool. The downside is that it only targets and Android and Amazon’s FireOS, but not Apple’s IOS.

    The same developer also gives away a “free” desktop compiler, B4J – it’s a Visual Basic-style language that targets the Java runtime environment on Windows, OS X and Linux.

Comments are closed.