Over the past few weeks there has been some speculation as to what the mysterious “Hydrogene” that RemObjects have been working on may or may not be. Well, that particular feline has slipped it’s captors and escaped the bag.
I’m not aware of any official announcement and I hope that my mentioning this does not upset any plans. But a post appeared recently in the Google+ Oxygene Community that gives the game away. I have waited to see if this post would be quietly removed at the polite request of RemObjects, but since it hasn’t I thought it was time to comment on it myself.
Oxygene of course is ObjectPascal for native .NET, Android and iOS/OS X development. An ObjectPascal compiler that produces object code that is native to each platform, where “native” means “first class citizen participating fully in each supported platform without any runtime beyond that provided by the target OS/platform and with no need for bridging or API wrapping“.
Top of the Pops as far as speculation about what Hydrogene may be was that it would be a C# front end for the back-end compiler technologies that support Oxygene itself.
That is: C# for Java / Android and – I would think – iOS / OS X.
I think Microsoft have C# for .NET covered though I wouldn’t be surprised if RemObjects might have something to offer in the way of an improved C# for .NET as well.
To be clear, all that is clear from the post to the Oxygene Community is that Hydrogene supports Java / Android ! .NET and Cocoa would be obvious inclusions but are not confirmed as yet.
This is exciting news to me, but I couldn’t help but be reminded of some (relatively) ancient history.
Philippe Kahn is a name most often invoked in reference to the early, Halcyon Days of Borland, but a name perhaps less often mentioned is Niels Jensen.
Niels was one of the original founders of the company that would later become – with Philippe Kahn’s help – Borland Inc. But he split with Borland in the very early 90′s to found Jensen & Partners International, producing a range of compilers under the banner of TopSpeed.
I used the TopSpeed Modula-2 compiler for a brief time myself.
A key feature of the TopSpeed compilers was the fact that you could use code from each language (C, C++, Pascal, Modula-2) with the others via object oriented extensions, though I never had direct experience of this in action so cannot speak to the success of this in practice. The compiler architecture that made this possible was the realisation of Niels Jensen‘s vision of independent front and back ends for these compilers.
This is of course now continued in RemObjects own technology and – rather more belatedly – by Embarcadero.
This vision is echoed no more strongly than in the way that Oxygene (ObjectPascal) and Hydrogene (C#) are able to seamlessly and fully participate in the worlds of the object code produced by other compilers on the supported platforms – IL and .NET framework in the case of .NET, Java Bytecode and, well, Java in the case of Java (and thus Android) and LLVM / Cocoa for iOS / OS X.
You could – for example – create a Java class library for Android in C# using Hydrogene, consume that (along with other Java class libraries) in an ObjectPascal class library using Oxygene and then that class library itself may be consumed by an Android developer using Java.
Parallel examples can be drawn for .NET and iOS / OS X, though obviously there are some constraints on the sharing of object code (and even, to an extent, source code) across the different platforms supported by the back-ends, but this can – in theory if not yet realised – be addressed at the source code level by the judicious application of framework and RTL abstractions.
I think it is fair to say that these are seriously interesting and exciting times for RemObjects.