RemObjects is previewing a new native Mac IDE for its Oxygene and C# compilers. Oxygene is a Delphi-like language (in other words, a variant of Object Pascal) which targets iOS, Mac, Android, Windows Phone and Windows. RemObjects C# shares the same targets. Both can compile to .NET assemblies for Windows, or to Mono for cross-platform .NET, or to a Mac or iOS executable (using the LLVM compiler), or to Java bytecode for the Android Dalvik runtime. You can get both Oxygene and RemObjects C# bundled in a product called Elements.
In the past, RemObjects has used Visual Studio as its IDE. While this is a natural choice for Windows users, much development today is done on the Mac. Requiring Mac users to develop in a Windows Virtual Machine adds friction, so RemObjects is now working on a native IDE for the Mac codenamed Fire.
I gave Fire the briefest of looks. Here are some of the options for a new .NET application:
Note the appearance of ASP.NET MVC 4, and even Silverlight.
Here are the options for a new Cocoa application:
If you are developing for Cocoa, you can edit the resource file in Apple’s Xcode and use it in your application. I started a new C# Cocoa app, made a few changes and and then ran it from the IDE:
I imagine Microsoft will be keeping an eye on tools like this – if it is not, it should – since they fit with the strategy of supporting Microsoft services on multiple devices. Visual Studio is a fine tool but if Microsoft is serious about cross-platform, it needs strong Mac-native development tools. Xamarin came up with Xamarin Studio, which is cross-platform for Windows and Mac, but the RemObjects approach also looks worth investigating.
PS The first release of RemObjects C# lacked full generic support, for which failing Xamarin and Mono founder Miguel de Icaza took RemObjects to task on Twitter. I was amused to see this in the changelog for April 2014:
65764 Full support for Generics on Cocoa, as requested by Miguel
For more details on Fire, see here.
They also announced Swift as a new frontend for all of their supported platforms (Cocoa, Mono, Java/Android).
I like the approach of keeping things “native” to the platform as opposed to using Xamarin’s tools, where you deploy yet another copy of the Mono runtime with every application you write.
I wonder how it will cope with storyboards/ IBOutlets/ IBActions/ Segues etc.?