Platform Differences

In general, our goal is to keep the Oxygene language as consistent between platforms as possible. Most language and Compiler features discussed in the Oxygene section and elsewhere in these docs will work the same or similar, across all Elements platforms.

That said, due to differences in the underlying platfroms, there will be a few differences. This topic will highlight the most important differences on the Oxygene language side, and you should also check out the Differences topic in the Cross-Platform section of this site, for a more thorough discussion of all differences as they apply to all Elements languages.

  • On .NET and Java, the block, delegate, method (and legacy) function and procedure) keywords work identically to declare a Block. On the other more-native platfroms, only block and delegate declare a true block, while method, function and procedure deflare more traditional function pointers w/o a "self" reference. See here for more details.
  • ARC and the stronf, weak and unretained Storage Modifiers are supported on platforms that use ARC, Cocoa.
  • The lifetimestrategy keyword for Life-Time Strategies is only supported on Island-backed platforms.
  • The optional keyword for Interfaces methods is supported only on Cocoa.
  • unsafe code is not supported on Java, and all code is assumed to be unsafe on Cocoa and Island, making the keyword ignored/unnecessary on that platform.
  • Generic co/contra-variance is supported on .NET only.
  • Differences in [Pointer References in Oxygene for Cocoa](Pointer References in Oxygene for Cocoa).
  • parallel for loops, parallel sequences and queryable sequences are currently only supported for .NET.
  • Special Java( Platform)-style exception handling extensions and the raises keyword will be a new platform difference, once implemented.

See Also