Oxygene is based on Delphi's Object Pascal, but also has influences from C#, Eiffel, Java, F# and other languages.
Compared to the now deprecated Delphi.NET, Oxygene does not emphasize total backward compatibility, but is designed to be a "reinvention" of the language, be a good citizen on the managed development platforms, and leverage all the features and technologies provided by the .NET and Java runtimes.
Oxygene is one of six languages supported by the underlying Elements Compiler toolchain, next to C#, Swift, Java, Go and Mercury (based on Visual Basic (.NET)).
Starting with the release of XE4, Embarcadero Prism is no longer part of the RAD Studio SKU.
Numerous support and upgrade paths for Prism customers exist to migrate to Oxygene.
The Oxygene language has its origins in Object Pascal in general and Delphi in particular, but was designed to reflect the guidelines of .NET programming and to create fully CLR-compliant assemblies.
Oxygene provides language-level support for some features of parallel programming.
[4] Oxygene does not use "Units" like Delphi does, but uses .NET namespaces to organize and group types.
Following the uses clause a file contains type declarations, like they are known from Delphi: As in C#, the Main method is the entry point for every program.
It can have a parameter args : Array of String for passing command line arguments to the program.
Although it does not introduce own "pre-defined" types, Oxygene offers more "pascalish" generic names for some of them,[5] so that for example the System.Int32 can be used as Integer and Boolean (System.Boolean), Char (System.Char), Real (System.Double) join the family of pascal-typenames, too.
Interfaces are declared just like classes: Please notice, that for properties the getter and setter are not explicitly specified.
[7] On top of the language difference, the Visual Component Library framework is not available in Oxygene.
[8] This makes porting even more difficult because classic Delphi code relies heavily on the VCL.