{"id":2202,"date":"2013-12-03T19:29:33","date_gmt":"2013-12-03T07:29:33","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=2202"},"modified":"2013-12-03T19:34:29","modified_gmt":"2013-12-03T07:34:29","slug":"what-is-hydrogene-asked-and-answered","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/2202\/","title":{"rendered":"What is Hydrogene ?  Asked and Answered"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p>Over the past few weeks there has been some speculation as to what the mysterious &#8220;Hydrogene&#8221; that RemObjects have been working on may or may not be.  Well, that particular feline has slipped it&#8217;s captors and escaped the bag.<\/p>\n<p><!--more--><\/p>\n<p>I&#8217;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 <a href=\"https:\/\/plus.google.com\/communities\/104110009900125766664\" target=\"_blank\">Google+ Oxygene Community<\/a> that gives the game away.  I have waited to see if this post would be quietly removed at the polite request of <strong>RemObjects<\/strong>, but since it hasn&#8217;t I thought it was time to comment on it myself.  \ud83d\ude42<\/p>\n<p><strong>Oxygene<\/strong> of course is <strong>ObjectPascal<\/strong> for native <strong>.NET<\/strong>, <strong>Android<\/strong> and <strong>iOS\/OS X<\/strong> development.  An <strong>ObjectPascal<\/strong> compiler that produces object code that is native to each platform, where &#8220;<em>native<\/em>&#8221; means &#8220;<em>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<\/em>&#8220;.<\/p>\n<p>Top of the Pops as far as speculation about what <strong>Hydrogene<\/strong> may be was that it would be a <strong>C#<\/strong> front end for the back-end compiler technologies that support <strong>Oxygene<\/strong> itself.<\/p>\n<p>That is: <em>C# for Java \/ Android<\/em> and &#8211; I would think &#8211; <em>iOS \/ OS X<\/em>.<\/p>\n<p>I think <strong>Microsoft<\/strong> have <em>C# for .NET<\/em> covered \ud83d\ude42 though I wouldn&#8217;t be surprised if <strong>RemObjects<\/strong> might have something to offer in the way of an improved C# for .NET as well. \ud83d\ude42<\/p>\n<p>To be clear, all that is clear from the post to the Oxygene Community is that <a href=\"http:\/\/www.elementswiki.com\/en\/File:Vs_new_android_project_HYDROGENE.png\" target=\"_blank\">Hydrogene supports Java \/ Android<\/a> !  .NET and Cocoa would be obvious inclusions but are not confirmed as yet.<\/p>\n<p>This is exciting news to me, but I couldn&#8217;t help but be reminded of some (relatively) ancient history.<\/p>\n<p><strong>Philippe Kahn<\/strong> is a name most often invoked in reference to the early, Halcyon Days of Borland, but a name perhaps less often mentioned is <strong>Niels Jensen<\/strong>.<\/p>\n<p>Niels was one of the original founders of the company that would later become &#8211; with Philippe Kahn&#8217;s help &#8211; Borland Inc.  But <a href=\"http:\/\/www.cbronline.com\/news\/niels_jensen_explains_how_topspeed_leaves_borlands_turbo_compilers_standing\" target=\"_blank\">he split with Borland in the very early 90&#8217;s to found <strong>Jensen &#038; Partners International<\/strong>, producing a range of compilers under the banner of <strong>TopSpeed<\/strong><\/a>.<\/p>\n<p>I used the <strong>TopSpeed Modula-2<\/strong> compiler for a brief time myself. \ud83d\ude42<\/p>\n<p>A key feature of the <strong>TopSpeed<\/strong> compilers was the fact that you could use code from each language (<strong>C<\/strong>, <strong>C++<\/strong>, <strong>Pascal<\/strong>, <strong>Modula-2<\/strong>) 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 <strong>Niels Jensen<\/strong>&#8216;s vision of independent front and back ends for these compilers.<\/p>\n<p>This is of course now continued in <strong>RemObjects<\/strong> own technology and &#8211; rather more belatedly &#8211; by <strong>Embarcadero<\/strong>.<\/p>\n<p>This vision is echoed no more strongly than in the way that <strong>Oxygene<\/strong> (ObjectPascal) and <strong>Hydrogene<\/strong> (C#) are able to seamlessly and fully participate in the worlds of the object code produced by other compilers on the supported platforms &#8211; <strong>IL and .NET<\/strong> framework in the case of .NET, <strong>Java Bytecode and<\/strong>, well, <strong>Java<\/strong> in the case of Java (and thus Android) and <strong>LLVM \/ Cocoa<\/strong> for iOS \/ OS X.<\/p>\n<p>You could &#8211; for example &#8211; 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.<\/p>\n<p>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 &#8211; in theory if not yet realised &#8211; be addressed at the source code level by the judicious application of framework and RTL abstractions.<\/p>\n<p>I think it is fair to say that these are seriously interesting and exciting times for <strong>RemObjects<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> Over the past few weeks there has been some speculation as to what the mysterious &#8220;Hydrogene&#8221; that RemObjects have been working on may or may not be. Well, that particular feline has slipped it&#8217;s captors and escaped the bag.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":[]},"categories":[4],"tags":[263,181,184],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-zw","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1845,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1845\/","url_meta":{"origin":2202,"position":0},"title":"Another Great Oxygene Release","date":"03 Oct 2013","format":false,"excerpt":"RemObjects have officially released the September update to Oxygene with the usual round of bug fixes and some dramatic improvements in the tool chain. Cocoa - Principally iOS 7 My focus with Oxygene most recently has been on the Android side. My previous experience with using the Cocoa (iOS) support\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2228,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2228\/","url_meta":{"origin":2202,"position":1},"title":"Come on Baby Light My Fire","date":"26 Jul 2014","format":false,"excerpt":"These are exciting times in the mobile development space, especially for followers of RemObjects work. Whilst the likes of Xamarin and Embarcadero pursue their cross-platform abstractions, with varying degrees of success, RemObjects have been focussing on delivering genuinely native solutions and the long term vision that underpins their compiler architecture\u2026","rel":"","context":"In &quot;Android&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2265,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2265\/","url_meta":{"origin":2202,"position":2},"title":"Nullable Types.  Not!","date":"23 Aug 2014","format":false,"excerpt":"I recently mentioned that RemObjects have placed their OS X native IDE - a.k.a. Fire - into public beta. I haven't been using it myself (yet) but have been following developments in the RemObjects Talk forums with interest, and a new feature in the Elements 8.0 compiler (also part of\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2252,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2252\/","url_meta":{"origin":2202,"position":3},"title":"Making a Noise About on a Thread","date":"13 Aug 2014","format":false,"excerpt":"I'm working on an Android app at the moment, and for a bit of fun I decided to add a startup sound to brighten the day of every user that launches it. Which gives me another opportunity to present some of the advanced language features in Oxygene that make threading\u2026","rel":"","context":"In &quot;Android&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.deltics.co.nz\/blog\/wp-content\/uploads\/Audio-Resource.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1619,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1619\/","url_meta":{"origin":2202,"position":4},"title":"iOS 7 and arm64 Support in Oxygene","date":"16 Sep 2013","format":false,"excerpt":"Marc Hoffman of RemObjects blogged over the weekend about the forthcoming iOS 7 and arm64 support in Oxygene. Actually, the only part that is really \"coming\" is the arm64 aspect since, as he explains in the blog post, Oxygene has always been able to use the iOS 7 SDK betas\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1414,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1414\/","url_meta":{"origin":2202,"position":5},"title":"It&#8217;s a Good Time for NZ Delphi Users to Cross-Grade","date":"02 May 2013","format":false,"excerpt":"Having lost our Delphi reseller in NZ last year, and with the Kiwi dollar riding high against the US dollar, now is a good time to make purchases from online stores operating in US currency. RemObjects has such a store and they also have a cross-grade offer for Delphi customers\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2202"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=2202"}],"version-history":[{"count":4,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2202\/revisions"}],"predecessor-version":[{"id":2206,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2202\/revisions\/2206"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=2202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=2202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=2202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}