Things have been looking tough in Delphi-land for a while now, with Embarcadero focusing on milking existing users stuck on their platform, and development of the tool chain all but halted. In mid-2016, almost the entire R&D staff for Delphi and related tools has been let go. The future is not looking bright.
Delphi developers are rightfully concerned, and many of you have been looking to embrace the Elements compiler and specifically Oxygene, our Object Pascal language, as an alternative that lets them keep using the language they know and love, but know they can rely on a development environment that's being actively driven forward, and supports all modern platforms natively.
With our recent release of Elements 9 and moving forward, we are putting a lot of emphasis on making it easier and more seamless for Delphi developers to switch over to Oxygene – whether in full, or just partially for new projects.
Let's have a look what switching to Oxygene brings to the table for Delphi developers:
Oxygene is the Object Pascal language you know and love – taken to 11.
While Delphi's language has virtually stagnated over the past 15 or so years, we started out with a strong superset of what made Delphi great – back in 2004 – and have been innovating and improving the language relentlessly, year over year.
If you don't want to learn new features for now, that's fine. All the code you'd write in Delphi will work the same in Oxygene as well. And over time, you can embrace newer features to help you become even more productive in Pascal. Like nullability. Or future types. Or LINQ. Or the very nifty Colon operator.
Language wise, Oxygene is "the Delphi that could have been", if only it had not stood still for the past decade and a half.
New in Elements 9 and evolving weekly as part of our open source portfolio, we have a new compatibility library that makes it even easier to port or reuse Delphi code in Oxygene!
The Delphi RTL aims to bring across many of the important RTL and (non-visual, non-db) VCL functions and classes you know and use in Delphi every day over to Oxygene. This means you can reuse yet more code, unchanged, because it's not just the core language syntax that's the same, but so are the APIs.
This includes a Delphi-compatible
WideString type, units such as
SysUtils, and of course classes such as
TStringList & Co.
Delphi RTL implements most classes by seamlessly mapping them to platform-native APIs, so you get the best of both worlds: source-compatible APIs with Delphi, but underlying implementations that are well-tested and approved by the platform vendors. Not to mention seamless toll-free casting between Delphi RTL and platform-native types where needed.
The library is open source, and getting better every week. And while we encourage (and hope for) external contributions, we have dedicated staff who extends it continuously – spearheaded by a former lead developer from Embarcadero's VCL team ;).
We know many Delphi developers feel very strongly about CPU native code. New in Elements 9, we have introduced our Island platform, which gives you all the power of the Oxygene language, emitting CPU-native code for Windows and Linux that's every bit as native as Delphi's.
Island is great for fine-tuning those CPU-intensive tasks, or writing code that directly interacts with the Win32 or Linux APIs. And with the upcoming Hydra 5, combining Island and .NET code will be even easier (as will be combining Island and Delphi).
Of course you probably have a good and solid code base in Delphi that you don't want or can't just port over to Oxygene completely – we understand that. That's where Hydra comes in.
Normally a separate product, but available with Oxygene in our "Escape" offer below, Hydra is a set of libraries that makes it really easy to mix .NET code (be it written in Oxygene or any other language) with Delphi (VCL or FMX) code and UI.
Using Hydra, you can write new code in .NET and extend your existing Delphi project with it, or you can reuse existing Delphi code – be it application logic or even whole forms – in your new .NET projects. And coming in Hydra 5 (entering beta now), you can also mix Island/Windows, .NET and/or Delphi code, all in the same app.
Elements comes with Fire, our own brand new development environment for the Mac. Fire rethinks what a modern IDE should look like from the ground up – it's fast, lean and unobtrusive, letting you be more productive than ever. If you want to develop on Windows, we got you covered as well – Elements comes with a copy of Visual Studio 2015 and integrates deeply with it.
Whether on Windows or Mac, you can develop for all target platforms supported by Elements (see below), deploy right to your iOS and Android devices, and much more.
Oxygene focuses on using each platform's native APIs, rather than abstracting platform differences totally away from the developer. That said, a lot of code can still be written in a totally platform-agnostic manner, by using Sugar, our cross-platform base library.
Sugar provides classes for a lot of commonly needed functionality – from collection classes to HTTP access, from XML or Json parsing to a unified
String type. And in many cases it bridges toll-free to the platform's corresponding native types.
Read more on writing cross-platform code with Sugar, including extensive tutorials.
Oxygene and the entire Elements tool chain has a great and ever-growing set of documentation available at
docs.elementscompiler.com. But we also have a special sub-section dedicated specifically to Delphi developers making the switch.
Oxygene supports all major target platforms at their native and most sophisticated level:
For $499, the regular price of Oxygene on its own, you can get a very special deal, if you are a registered Delphi user making the switch: If you buy our "Escape from Delphi" package, you will get Oxygene for all four platforms, as well as Hydra, which will ease your migration by letting you mix Delphi and .NET (and more) in the same app. At usually $499 for Hydra on its own, that's a pretty steep discount.
As part of the purchase, you will also get access to (roughly) weekly betas for Oxygene moving forward, and to the Hydra 5 beta, which will add Island support, among other things.
If you want to explore all four language options, for $799 you get the whole Elements suite, with all four platforms, all three languages (and Iodine/Java beta access) – again with Hydra thrown in for free.
What are you waiting for? Escape from Delphi, today!
How do you prove you have a valid Delphi license? You don't. We'll just take your word for it. We're weird that way, but we actually like our users, and we treat them with respect and trust them.
Also check our Escape from Delphi blog post for more!
“I've been a Delphi user for over 20 years. I still use it for our legacy applications, but we haven't migrated past XE8 as all the new bits are geared towards FireMonkey, which I tried but hated. I'd already tried what is now Oxygene, and found the way that was progressing far better, especially for iOS which I started developing for. I bought a Mac. I then found I was booting up a Windows VM only to run Delphi or Visual Studio, and the beta of Fire was available so I tried that. Now I only use Windows for Delphi.
“Fire has all the best features from all the best IDEs I've ever used. It is blazingly quick to use and compiling for iOS is also very fast, even on my old MacBook Air. Of course, I've had to learn about the Apple frameworks and that was the most time consuming part of going from windows to iOS, but Fire certainly makes things easy as it feels like other Mac apps and the fact it can use the same code completion and so on that visual studio does with elements is brilliant. The more I've got to know it and the frameworks, the more Fire seems to know what I'm trying to do. The best thing is that my first real app written entirely in Fire has been said by our users to be 'amazing', 'so fast to use' and even 'revolutionary', and I love it when I get a new bit of functionality to add, as I know that I'll once again be playing with Fire.”
— Jeremy Knowles, Stocktake Solutions Ltd