The Elements compiler supports building (compiling) projects for several different platforms, including three higher level platforms (.NET, Cocoa and Java), as well as lower-level "native" platforms with our new "Island" target.

Since Elements' main focus is to leverage the existing platforms it supports, it does not come with an extensive runtime library, class framework or a "platform" of its own – in contrast to many other "cross-platform" development tools that try to abstract platform differences under a new meta-platform.

  • When using Elements on .NET, Cocoa and Java, the class libraries you work with are those provided by the platform vendor, as well as any free, open source or commercial third-party libraries available for the platform (RemObjects Software even creates some of those as well, none of them dependent on or specific to Elements).

  • When using the new Island target, you work directly against the low-level platform APIs (such as the Win32/Win64 API, or the core Linux/Unix "C" APIs), and Elements own core RTL.

The following links dive into detail on each of the supported platforms (or platform groups):

.NET & Mono

The .NET compiler target (also referred to as "Echoes", internally) covers all variations of Microsoft's Common Language Runtime, including the "full" .NET Framework, ASP.NET, .NET Core, Silverlight, WinRT and Mono/Xamarin.

It compiles to "IL" code.

It is the preferred platform for building Windows GUI applications, as well as cross-platform servers and command line tools.

Cocoa, for Mac and iOS

The Cocoa compiler target (also referred to as "Toffee", internally) covers development for the Apple platform, using the high-level Cocoa APIs and Frameworks.

It compiles to CPU-native code and "Objective-C Runtime" classes.

It is the recommended target for building apps for macOS, iOS, tvOS and watchOS, and can also be used for building macOS command line tools and other projects.

Java and Android

The Java compiler target (also referred to as "Cooper", internally) allows you to build projects against the Java Virtual Machine (JVM), for targeting any computer or device that runs classic Java, as well as Android.

It compiles to Java Bytecode and optionally from that to Dalvik or ART).

It is the recommended target for building Android apps, and can also be used for cross-platform Java-based command line tools or servers.

Island: Native Code

The Island target, new in Elements 9.0 allows you to build low-level libraries and executables against the platform's native "C level" APIs. Island is an open platform that can and will be extended to many physical targets; currently it supports Linux, Windows, the Android NDK, and WebAssembly.

It compiles to CPU-native code.

It is targeted at creating low-level libraries and command line tools, and for writing individual units of a larger application that can benefit from being written in native instead of managed code.

  • Island
    • Windows — 64-bit (x64) and 32-bit (i386)
    • Linux — 64-bit Intel and 32-bit ARM
    • Darwin — 64-bit Intel and ARM for Apple's platforms
    • Android NDK — 32-bit and 64-bit, Various ARM and Intel chipsets
    • WebAssembly — 32-bit wasm for use in Web Browsers

Cross-Platform Development

Elements supports many platforms, but it is decidedly focused on creating apps for multiple platforms, not single one-size-fits-all cross-platform apps. The following links dive into this distinction and cross-platform development considerations in general:

Version Notes

Island is new in Elements 9.0