iOS versus Windows 8 versus Android – developer ecosystem

Let’s study the pros and cons.

Apple have the sanest API/platform evolution and the best IDE. I have hated IDEs ever since they first came out in the 90s. Xcode circa 3.2 is the first IDE I will deign to use and frankly I find it amazing. Many reviews criticized Xcode for being crappy compared to Visual Studio and I could not fathom why so many people said the same thing, when I found Xcode’s auto-completion, etc… to be superior to Visual Studio’s. I later realized it wasn’t until Xcode 3.2 that Apple finally got it right. Visual Studio would have been fine, but that blasted PoS crashes on me even when I’m just doing something as innocuous as tweaking color syntax highlighting. As for Eclipse (what Android developers use), it is certainly supposed to have everything but the kitchen sink, but my impression is that it is even less elegant than Visual Studio and the UI exhibits the lag so typical of Java apps (at least this was how I remember it when using it for Flex).

Microsoft’s .Net CLR is by far the most advanced platform to program under and waaaaay ahead of Objective-C. Objective-C was the most advanced platform by far back when NeXT was just introduced (compared to the Stone Age Win32/MFC and pre-Stone Age OS 8/9 development tools) and this is what makes it still (barely) bearable to develop for today. But someone who’s used to programming under, say, Python or Ruby (both available under .NET) is going to kick, swear, and scream when taken back to the Bronze Age of Objective-C programming. C# programmers (Iron Age ;-D) might not kick or scream as much but will still definitely find plenty to cuss about.

HOWEVER – and this is the big caveat – it sadly seems to be the case that garbage collection – much less utilizing a VM – is still untenable on today’s mobile hardware. iOS programs have astoundingly smooth and responsive animation in comparison to the crApp available for Android. All the widely hyped JIT compiler advances for Java  just still can’t cut it for games up to this day. The next generation of Windows 8 Metro-based apps will developed using either .NET or JIT-compiled Javascript. Both of these technologies are VM-based and use GC and will definitely be easier for the programmer but it remains to be seen if games written with them will be as terribly jerky as for Android or if they will approach or – I fervently hope – equal the seamlessly smooth animation of games on iOS.

What is notable is how Microsoft opted to go with a (re-?)implementation of Javascript that runs on its own VM(?) as opposed to a CLR-based one (e.g. interestingly enough –  not the Javascript.NET which was already around before). This is very telling and it may hint at some specialized speed improvements.  Google may hype their JIT technology (e.g. V8 et al) to the high heavens, but the performance of games on Android tells us that their JIT technology is still a long, long, long way from native code performance.

On the other hand, while Microsoft is relatively quiet about their JIT work (or perhaps only because they eschew Youtube for Channel9), few people know that one of the most performant Java JIT-compiling VM ever made was the one Microsoft made for IE circa v4/v5 and that this remained faster than many Hotspot JVMs that came much later (and perhaps even to this day?).  Microsoft seems to have some superb compiler engineers and this may be (big maybe) why they have elected to go with a non-.NET Javascript on top of WinRT rather than use the CLR which, we hope, will be good enough for fast action games.  I think it is pretty obvious by now that the CLR – while clearly the technology of the future – still introduces too much overhead to get good performance on mobile hardware.

On the other hand, if Windows 8 action games will still need to be coded in C++, I think I’ll happily use Objective-C first and wait for the hardware to catch up to the CLR before venturing into games for the Metro environment. C++ is lipstick on a pig, garish and hideous, whereas Objective-C’s minimalist additions to C syntax together with its sanely designed runtime and library, are actually a significant enhancement over C even if still far from the convenience of its VM-based competitors – C#, Ruby, Python, etc…

Leave a Reply

Your email address will not be published. Required fields are marked *