Elements comes with your choice of eight different programming languages. You can pick your favorite, or you can mix different languages – even within the same project:
Oxygene (Object Pascal)
Oxygene is Object Pascal, reinvented for the 21st century.
Oxygene is the language we have been relentlessly innovating and driving forward over the past decade. We started with a vast super-set of Delphi, back in the day — and 15 years later, Oxygene now is the most advanced general purpose programming language out there.
If you use(d) or like(d) Delphi or Free Pascal, you will love Oxygene. And if you never used Pascal before, you are in for a real treat!
Learn more about Oxygene.
namespace WPFApplication;
uses
System.Linq,
System.Windows.*;
type
Window1 = public partial class(Window)
constructor;
begin
InitializeComponent();
//...
end;
end;
end.
Myth
Myth is the first language designed by AI, for AI. It favors explicit meaning, predictable rules, and visible uncertainty, giving AI less to guess and people more to understand.
Built on the foundations of RemObjects Elements, Myth uses the existing platform backends, with direct access to the APIs of .NET, the JVM, and native targets.
Coming soon. Myth is in development.
Learn more about Myth.
C#
When you hear C#, you think ".NET" – but that's no longer the case.
RemObjects C# 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, you can write Android SDK 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.
Learn more about C# in Elements.
namespace MyIPhoneApp;
using UIKit;
using SiriKit;
public class RootViewController : UIViewController
{
public RootViewCentroller() : base withNib("RootView")
{
//...
}
}
Promethium (Python)
Promethium brings Python's approachable, readable syntax to the Elements compiler, with native access to the APIs, SDKs, and frameworks of your target platform.
Write Python projects alongside the other Elements languages using the same compiler, project system, and developer tools. The optional, open-source Promethium Base Library brings a large set of common CPython APIs to all Elements platforms.
Learn more about Python in Elements.
from RemObjects.Elements.WebAssembly.DOM import HTMLElement
@partial
class index:
def __init__(self):
self.okButton.innerHTML = "Click Me, Please"
self.headline.innerHTML = "An Elements WebAssembly Project"
def clicked(sender: HTMLElement, event):
self.okButton.innerHTML = "Thanks!"
self.okButton.onclick += clicked
Java
The Java Language is finally going on trial separation with its runtime, and going fully cross-platform.
With Elements, you are now able to use the Java language to write code for .NET, Cocoa and Island – as well as, of course, for the Java Runtime and Android itself. Elements also brings Java to the next level, with advanced features such as support for properties and more.
Whether you're an Android developer just looking for a better development experience than ADS, or are looking to expand your project and reuse your Java expertise on iOS, .NET, the Mac or Android NDK code — Elements is for you!
P.S. Elements' implementation of the Java language is not to be confused with its support for the Java Platform in all languages. Bad naming decision on their part, we'd say ;). With Elements, you can use the Java language for any platform. Or any of the languages for the Java platform.
Learn more about the Java Language in Elements.
package MyIPhoneApp;
import UIKit.*;
import SiriKit.*;
public class RootViewController extends UIViewController {
public RootViewCentroller() {
super withNib("RootView")
//...
}
}
Go
Elements also brings Google's Go Language across platforms, with language support for all Elements Platforms, and the full Go Base Library available on .NET, and the native Island-based platforms (Cocoa, Windows, and Linux).
Learn more about Go in Elements.
package ConsoleApplication
import "System"
func main() {
System.Console.Write("What is your name? ")
name := System.Console.ReadLine()
System.Console.WriteLine("Hello, {0}!", name)
version := System.Environment.Version
System.Console.WriteLine("Running on .NET {0}", version)
}
Swift
Swift is taking the world by storm.
Originally created by Apple for its own platforms, Elements takes Swift everywhere, from .NET to WebAssembly, from the Java VM to native Windows or Linux apps. And of course, RemObjects Swift 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.
Learn more about Swift in Elements.
import android.app
import android.os
import android.widget
public class MainActivity: Activity {
public override func onCreate(_ savedInstanceState: Bundle!) {
super.onCreate(savedInstanceState)
ContentView = R.layout.main
//...
}
}
Mercury (Visual Basic)
Mercury is a BASIC language implementation that is backward code-compatible with Microsoft Visual Basic.NET™. With Mercury, you will be able to build your existing VB.NET projects for .NET, and leverage your Visual Basic™ and VB language experience to write code for all Elements platforms.
Learn more about Mercury.
Imports AppKit
Imports Foundation
<IBObject>
Public Class MainWindowController
Inherits NSWindowController
Public Sub New()
MyBase.New(WindowNibName: "MainWindow")
' Custom initialization
End Sub
Public Overrides Sub windowDidLoad()
MyBase.windowDidLoad()
' Initialize the window after loading its nib.
End Sub
End Class