Welcome to the Island
Native Windows and Linux code, in C#, Swift and Oxygene.  

Introducing “Island”

Island is a new target platform introduced in the brand new Elements 9 release. Simply put, Island lets you write low-level CPU-native code.

The three existing Elements Platforms – .NET, Java and Cocoa – all target higher-level abstractions, OOP-pased APIs provided by the operating system and platform vendors for general app development. For .NET and Java, these involve compiling to "managed" byte code, while on the Cocoa platform, the APIs are "unmanaged", using CPU-native code.

Island goes a level deeper, forgoing the higher-level abstractions and letting you build directly to the low-level, non-OOP platform APIs – using "unmanaged" and CPU-native code in each case.

For the initial release, Island supports targeting the Win32 API for Windows (32-bit and 64-bit), as well as the glibc API for Linux (64-bit Intel and 32-bit ARM).

But Island itself is a generic platform that can and will be expanded to other native targets as well in the future, including Darwin but not limited to (low-level macOS). In Fact, Elements 9,1 adds support for ARM Linux (for example on embedded systems such as Rasberry PIs), and for the Android NDK with a range of CPU options.

Island lets you use all of the Elements languages – Oxygene, C# and Swift – to write this native code for Windows and Linux. It also works with the Java language preview we're shipping with Elements 9 in Fire, as well.

Let this sink in: You can now use C# to write CPU-native Windows code. Or use Oxygene on Linux, natively. Or write Java code against the Android NDK! And any other combination you can think of.

Couple that with the excellent support for the three existing higher-level platforms, and your Elements language of choice now truly runs everywhere, and it goes without saying that all four languages are completely compatible across all platforms.

Of course as mentioned above, the basic platform APIs at the level Island works at are very basic – mostly non-OOP simple C- and function-based APIs.

But fret not. While Island gives you full access to all the platform's base APIs, Island is fully object oriented itself. It provides an object model that is compatible with how you think and write code on the other platforms, complete with an Object base type, exceptions, a String class, and everything. And it comes with Island RTL, a small run-time library that encapsulates common functionality as easy to use classes in a cross-platform fashion.

But what Island really is all about is that full and direct access to the platform APIs – primitive as they may seem. So for example, you can make a straight call to CreateWindowExW on Windows, if you like . In fact, we ship an example for an old-school Win32 API-based Windows GUI app that runs its own WndProc and everything. Available in Oxygene, C# and Swift.

Island comes with sophisticated IDE support, whether you are using Fire on the Mac or Visual Studio on Windows. You can debug your apps right from the IDE, with the usual debugging experience you are used to, by connecting to a remote Linux or Windows machine via CrossBox 2, if needed.

Looking Forward

With Elements 9.1, we now also have our Elements RTL and Delphi RTL libraries ported to Island, giving you an even more well-rounded set of object-oriented APIs that you can use cross-platform, and to write code that can be shared between Island and the other higher-level platforms with. But even in this first version, the basic Island RTL already provides a lot of useful functionality. You can read more about Sugar here.

And Hydra 5, the latest version of our Hydra library for mixing .NET and Delphi code in one application, now lets you use Island plugins in your .NET (and Delphi) host applications – essentially enabling you build the bulk of your app in a higher-level framework, such as WPF, but dropping down to CPU-native code for specific functionality.