How do Delphi, WPF .NET Framework, and Electron perform compared to each other, and what’s the best way to make an objective comparison? Embarcadero commissioned a whitepaper to investigate the differences between Delphi, WPF .NET Framework, and Electron for building Windows desktop applications. The benchmark application – a Windows 10 Calculator clone – was recreated in each framework by three Delphi Most Valuable Professionals (MVPs) volunteers, one expert freelance WPF developer, and one expert Electron freelance developer. In this blog post, we are going to explore the Target Platforms metric which is part of the flexibility comparison used in the whitepaper. The calculator project focuses on Windows but both Delphi and Electron support more than just Windows. This article will explore the additional platform support of the frameworks.
How many user platforms can the framework deploy an application to? Great frameworks will support most platforms on the market, whether mobile, desktop, 32-bit, or 64-bit. Businesses benefit from multi-platform support because they can develop and maintain one codebase to reach many customers. One codebase rather than separate code for each target application reduces development time, bug potential, maintenance requirements, and time-to-market for new features.
Delphi’s major advantage over WPF and Electron is that its FMX framework can deploy one body of source code as a binary to any major desktop or mobile platform, maximizing a business’s reach to customers and minimizing code duplication and maintenance/upgrade headaches. It can support projects of every size from logic controllers for industrial automation to world-wide inventory management, and be developed for every tier from a database-heavy back end to the GUI client-side of an application.
WPF with .NET Framework targets Windows computers directly and but the source code is only usage on other platforms with additional work. Additionally, .NET Framework is a legacy framework now according to Microsoft. The framework is primarily geared toward client-side desktop applications but can incorporate business logic in C# for middle-tier or back-end functions and access the ADO .NET Entity Framework for databases.
The numbers are pretty clear.
- 38.51% – Android
- 36.27% – Windows
- 14.12% – iOS
- 08.25% – macOS
- 00.83% – Linux
Let’s take a look at each framework.
Delphi can compile to native 32-bit or 64-bit code for Windows using the VCL framework and compile to 32-bit or 64-bit code for Windows, macOS, Android, iOS, and Linux using the FMX framework. Delphi is the ultimate rapid application development environment for quickly developing high-performance native cross-platform applications in modern Object Pascal. Utilize powerful award winning visual design tools and an integrated toolchain for rapidly designing and developing visually stunning apps to reach billions of users on Windows, macOS, iOS, Android and Linux devices with a single codebase and responsive UI. Leverage powerful database access components, cloud libraries, and data binding technologies to confidently deliver projects on time and under budget. Independent developers and enterprise development teams love Delphi because it delivers 5x the development productivity across desktop and mobile platforms. A third party library called ScriptGate also allows a smaller and tighter WebView integration similar to Electron from within Delphi.
|32-bit Windows||32-bit FireMonkey applications|
|64-bit Windows||64-bit FireMonkey applications|
|macOS, either 32-bit (Delphi and C++) or 64-bit kernel (Delphi only)||32-bit FireMonkey applications|
|iOS Device – 32-bit (C++ and Delphi) or simulator (Delphi)||32-bit FireMonkey applications|
|iOS Device – 64-bit||64-bit FireMonkey applications|
|Android 32-bit, targeting Android devices||32-bit FireMonkey applications|
|Android 64-bit, targeting Android devices (Delphi)||64-bit FireMonkey applications|
|Linux – 64-bit (Delphi)||64-bit FireMonkey applications|
WPF .NET Framework
WPF .NET Framework can compile to managed code for Windows. As was found in the IP Security section of the whitepaper managed code like is used within WPF .NET Framework apps by default is easily decompiled and readable by end users. In 2021 Windows is only one of the major platforms out there. Building an app in WPF .NET Framework leaves a developer building all of the other platforms in a different tool or codebase. With the numbers above Windows is only 36.27% of the device market. By using WPF .NET Framework a developer is not able to target 63.73% of the devices on the market. According to Microsoft:
“To put it very simply, managed code is just that: code whose execution is managed by a runtime. In this case, the runtime in question is called the Common Language Runtime or CLR, regardless of the implementation (for example, Mono, .NET Framework, or .NET Core/.NET 5+). CLR is in charge of taking the managed code, compiling it into machine code and then executing it.”
- macOS – Only 64bit binaries are provided for macOS, and the minimum macOS version supported is macOS 10.10 (Yosemite). Native support for Apple Silicon (arm64) devices was added in Electron 11.0.0.
- Windows – Windows 7 and later are supported, older operating systems are not supported (and do not work). Both ia32 (x86) and x64 (amd64) binaries are provided for Windows. Native support for Windows on Arm (arm64) devices was added in Electron 6.0.8.. Running apps packaged with previous versions is possible using the ia32 binary.
- Linux – The prebuilt binaries of Electron are built on Ubuntu 18.04. Whether the prebuilt binary can run on a distribution depends on whether the distribution includes the libraries that Electron is linked to on the building platform, so only Ubuntu 18.04 is guaranteed to work, but following platforms are also verified to be able to run the prebuilt binaries of Electron: Ubuntu 14.04 and newer, Fedora 24 and newer, Debian 8 and newer