Elements makes you productive creating great apps and software projects.
The Elements compiler tool chain gives you a choice of three programming languages and related tools that allow you to build apps for all major platforms. From iOS to Android, from Windows to the Mac, from ASP.NET to Java services.
No matter which language you choose, Oxygene, C# or Swift, you can use it across all the platforms. And each of the languages is super-charged with advanced features that will bring the joy back into programming and make you more productive than ever.
If you work on Windows, Elements integrates deeply with Visual Studio. And if you work on the Mac, you can use Fire, our own state-of-the-art development environment. Both support development for .NET, Cocoa, Java/Android and the new Island platform, and provide a first-class development experience for all three Elements languages.
Oxygene is Object Pascal, reinvented for the 21st century.
Oxygene is the language we have been relentlessly innovating and driving forward over the past 10 years. We started with a vast super-set of Delphi, back in 2004 — and 12 years later, Oxygene now is the most advanced general purpose programming language out there.
If you use or like Delphi or Free Pascal, you will love Oxygene. And if you never used Pascal before, you are in for a real treat.
RemObjects C#, or "Hydrogene" as we call it in the Elements family, takes the C# language you know and love from working on .NET, Mono or Xamarin, and truly brings it to all platforms.
Decoupled from the .NET runtime, RemObjects C# lets you write native Android apps running on the JVM in your favorite language. Or you can use C# to write native Cocoa apps for Mac and iOS. In fact Fire, our Mac IDE, is written in 100% pure Cocoa C#. Just because we could.
You have the full C# language syntax – with some extensions, even – and full access to the native platform APIs, be it the Java or Android libraries, the vast Cocoa frameworks from Foundation to UIKit, and more.
RemObjects Swift, or "Silver" in Elements parlance, takes Swift, the language introduced by Apple just a couple of years ago and that is universally beloved by developers everywhere, and brings it to all of Elements' platforms.
With Silver, you can compile Swift to managed code, for example for WPF or Universal Windows apps, or for ASP.NET. You can also build native Android apps, or apps that work anywhere Java runs.
And of course, Silver also supports the Apple platforms – better and cleaner than Apple's own Swift compiler, some say.
You have the full Swift language syntax – with some extensions, even – and full access to the native platform APIs, be it the Java or Android libraries, the extensive .NET Framework Class Library, or more.
With Iodine, we're doing for the Java language what we already did with C# and Swift before: bring it fully cross-platform.
When Iodine ships in 2017, you will be able use the Java language to write code for .NET, Cocoa and Island – as well as, of course, for the Java Runtime and Android itself. Iodine will bring Java to the next level, with advanced features such as support for properties and more.
Iodine is currently in beta, available to all licensed users of Elements. A sneak preview is also available for Elements 9 users, in Fire (and you can always try and see what happens if you just add a
.java file to your Elements project in Visual Studio).
Stay tuned for more information on “Iodine”, soon.
P.S. Iodine is not to be confused with our support for the Java Platform in the existing three languages!
Elements supports four different development platforms.
Think of it not as "cross-platform development", but as Elements truly and natively supporting each of these platforms as a first class citizen and development solution.
You can develop apps using .NET, the Java Runtime (including but not limited to Android), Cocoa (for Mac, iOS and tvOS) as well as CPU-native apps for Windows and Linux with our new Island native platform.
Each of the three (soon four) Elements languages equally and fully supports each of these platforms (in fact, you can even mix languages within a project).
So whether you're a single-platform develop, or are creating apps for multiple platforms, Elements has you covered with your language(s) of choice.
Learn more about each platform, below:
“Echoes” is the name for Elements' support for the Microsoft Common Language Runtime (CLR), also often referred to as .NET.
Elements lets you write apps for all flavors of the CLR, from the standard .NET Framework, over the open source Mono and Xaamrin platforms, to WinRT for Universal Windows apps, and even Silverlight. Of course Elements also supports ASP.NET for web development, as well. This website itself is implemented in Oxygene using ASP.NET.
No matter what language you choose, you have full access to the .NET class libraries, and you can seamlessly reuse any existing .NET libraries out there – from third parties to open source. And the executables you create will be pure .NET.
“Echoes” is our platform of choice for creating Windows apps, websites, and cross-platform servers and command line tools via Mono.
The “Cooper” platform encompasses Elements' ability to build apps for the Java Runtime (JVM).
This lets you build apps for every place that Java can run – from PCs to embedded devices, and of course includes extensive support for today's most relevant use of Java: creating native Android apps.
No matter what language you choose, you have full access to the standard Java class library and (on Android) all the standard Android libraries. You can also seamlessly reuse any existing Java and Android libraries (
.aars) out there – from Google Services over third parties to open source components. And the executables you create will be pure cross-platform Java byte code.
“Cooper” is our platform of choice for creating Android apps.
@@@Under the “Toffee” Elements lets you build native apps for the Apple platform, via Cocoa. This encompasses iOS, macOS, tvOS and watchOS.
Elements lets you create apps for all four of Apple's platforms, using the native Cocoa APIs and compiling to CPU-native code for the respective platforms (64-bit Intel for macOS, and 32-bit and 64-bit for iOS and its siblings).
No matter what language you choose, you have full access to the Cocoa class libraries, from Foundation up to AppKit/UIKit and all the frameworks Apple provides. And you can seamlessly reuse any existing Cocoa libraries out there – from third parties to open source, simply by importing their headers.
“Toffee” is our platform of choice for native apps for the Apple platform, including iOS, macOS and tvOS.
“Island” is the newest Elements platform, introduced just now with Elements 9.
Since we started Elements with just a single language (Oxygene) and a single platform (.NET) back in 2004, users have begged us to add support for creating CPU-native Windows executables, as well. Island offers that, and adds native Linux to the mix, as well.
No matter what language you choose, you're able to create native apps and libraries for Windows (32 and 64-bit Intel) and Linux (64-bit Intel, and soon ARM as well). You have full access to the platform's native C-level APIs such as the "Win32" API on Windows, and @@@glibc on Linux, and you can link to any existing libraries by importing their C headers.
Island also comes with its own minimal RTL and basic class library that gives you an object system, native String and collection types, and more.
“Island” is our platform of choice for creating small Windows and Linux utilities and server apps, and to implement highly-efficient bits of code to be embedded in .NET based Windows apps.
Elements is great for developing on any of the platforms above – but it also, and particularly, shines when you are targeting two or more platforms.
Sugar: Elements' Cross-Platform API
To help writing code that can be shared across two more of the platforms, Elements includes Sugar, an open source cross-platform helper library.
Sugar is an optional base library that provides shared APIs for many commonly used standard classes, such as Strings, Lists, Dictionaries, etc., allowing for more code reuse between the platforms. It does not reimplement its own versions of the core base classes, but rather amends the standard types that exist on each platform with a common API.
These cross-platform APIs are applied toll-free and cast automatically, making it easy to write platform-specific code on the higher levels of your application, but working with the same base objects using platform-independent APIs in lower-level shared code — without any runtime overhead.
Elements comes with two choices for your development environment.
If you develop mainly on Windows, Elements integrates into Visual Studio, a great IDE created by Microsoft which provides a sophisticated and extensive developer experience, including visual designers for creating Windows GUI apps in WinForms and WPF, and for ASP.NET.
Elements comes with its own copy of Visual Studio 2015, so you don't need to own or purchase a separate license – but if you already own and use Visual Studio 2013 or 2015, say with Visual C#, Visual Basic or Visual C++, then Elements will integrate right into that copy.
Even on Windows and in Visual Studio, Elements supports development for all platforms. For debugging and testing Mac, iOS, tvOS or Island-based Linux apps, Elements will seamlessly connect to your Mac or Linux machine via our CrossBox technology.
If you develop on Mac, you can use Fire, our own IDE. Three years in the making, we introduced Fire earlier in 2016 with Elements 8.3, and it has instantly become a favorite among our users. With Elements 9, Fire has gotten even better, and we're not stopping.
Fire was designed from the ground up to be a great Mac app, to be fast and lean, and to focus on letting you get your job done well. It is response, unobtrusive, yet vastly powerful with a sophisticated code editor, great debugger support and an innovative navigation model.
Fire also supports development for all of the Elements platforms, including .NET, Java and native Windows and Linux apps, right from your Mac.