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 Long-term Feasibility metric which is part of the functionality comparison used in the whitepaper.
When businesses choose Delphi as their development framework, they are investing in a proprietary framework (that includes runtime library source code) with up-front costs and an optional annual update fee. For this cost, they gain a stable, backward compatible, and growing framework, and can be confident that applications developed today will be supported and maintainable in the future.
Windows Presentation Foundation with .NET Framework offers businesses an economical framework with the full backing of Microsoft but includes all the challenges Microsoft’s choices induce. WPF has a shorter history than Delphi but was open-sourced in 2018, which might give some version of it a bright long-term outlook despite its ties to the proprietary .NET Framework for most Windows development. .NET Framework 4.8 was the last release in April 18, 2019 according to Microsoft.
Electron is a free, open-source platform offering businesses the opportunity to develop applications from any major operating system. Electron’s future is uncertain, however. The Electron project is run by GitHub which is now a subsidiary of Microsoft. It is the newest of the three frameworks and still in its honeymoon phase. It lacks a native IDE, giving businesses a choice but also removing some conveniences like integrated compilation and included testing libraries. Businesses developing in-house tools would have a more difficult time with Electron than the other frameworks.
Let’s take a look at each framework.
Delphi has been growing, maturing, and expanding since 1995. It’s development maintains backward compatibility to the degree that a 1995 application can be ported to the current Delphi version with minimal changes. Comprehensive documentation aids maintenance, and a full support team is available for upgrade, migration, or troubleshooting help. At the time of this writing the latest version of Delphi is available in RAD Studio 10.4.1 Sydney which was released September 2nd, 2020. Want to find out more? Check out the release notes from many Delphi versions.
DELPHI 1 – FEBRUARY 14TH, 1995
16-bit Windows 3.1 support, Visual Two-Way tools, Components / VCL, Database support via BDE and SQL Links, Database data live at design time
DELPHI 2 (1996)
32-bit Windows 95 support, Database Grid, OLE automation, Visual form inheritance, Long strings, Included Delphi 1 for 16-bit
DELPHI 3 (1997)
Interfaces (COM based), Code Insight, Component Templates, DLL Debugging, WebBroker, ActiveForms, Component Packages, MIDAS multi-tier architecture
DELPHI 4 (1998)
Docking, Anchors and Constraints, Method Overloading, Dynamic arrays, Windows 98 support
DELPHI 5 (1999)
Desktop layouts, Frames, XML support, DBGo for ADO, Language Translations
DELPHI 6 (2001)
Structure Window, SOAP Web Services, dbExpress, BizSnap, WebSnap, DataSnap
DELPHI 7 (2002)
Web application development, Windows XP themes
DELPHI 8 (2003)
DELPHI 2005 (2004)
Multi-unit namespaces, Error Insight, History Tab, for..in, Function inlining, Theme-enabled IDE, Refactorings, Wild-card in uses statement, Data Explorer, Integrated Unit Testing
DELPHI 2006 (2005)
Operator overloading, Static methods and properties, Designer Guidelines, Form positioner view, Live code templates, Block Completion, Line numbers, Change Bars, Sync-edit, Code Folding and method navigation, Debugging Tool-Tips, Searchable Tool Palette, FastMM memory manager, Support for MySQL, Unicode support in dbExpress, TTrayIcon, TFlowPanel, TGridPanel
DELPHI 2007 (2006)
MS Build, Build Events, Build Configurations, Windows Vista support – glassing, theming, dbExpress 4 – connection pooling, delegate drivers, CPU viewer windows, FastCode enhancements, IntraWeb / AJAX support, Welcome Page, Sim-ship of English, French, German, Japanese
DELPHI 2009 (2008)
Unicode, Generics, Anonymous Methods, Ribbon Controls, DataSnap, Build Configurations, Class Explorer, Type Library Editor Window, PNG support
DELPHI 2010 (2009)
Attributes, Enhanced RTTI, Direct2D canvas, Windows 7 support, Touch/Gestures, Source Code Formatter, Thread Specific Breakpoints, Debugger Visualizers, IOUtils unit for files, paths and directories, Source Code Audits and Metrics, Background Compilation, Source code for MIDAS.DLL
DELPHI XE (2010)
DELPHI XE2 (2011)
64-Bit Windows, Mac OSX, FireMonkey, Live Bindings – FireMonkey and VCL, VCL Styles, Unit Scope Names, Platform Assistant, DataSnap – Connectors for Mobile Devices, Cloud API, HTTPS support, TCP monitoring, dbExpress support for ODBC drivers, Deployment Manager
DELPHI XE3 (2012)
Metropolis UI for Windows 8, 7, Vista and XP, FM actions, touch/gestures, layouts and anchors, FM support for bitmap styles, TMaterial source for FM 3D components, FM audio/video, VCL/FM support for sensor devices, FM Location sensor component, Virtual keyboard support, DirectX 10 support
DELPHI XE4 (APRIL 2013)
iOS support – device, simulator, iOS app store, iOS support for standard and retina displays, iOS styles, retina styles, virtual keyboards, Mobile form designer, TWebBrowser component, iOS ARC (automatic reference counting) for all TObject classes, Platform Services, Notifications, Location, Motion and Orientation sensor components, TListView component, Mac OSX full screen support, Deployment manager for iOS devices, FireDAC universal data access components, InterBase – IBLite and IBToGo
DELPHI XE5 (SEPTEMBER 2013)
Android support – devices and emulator. OS versions: Jelly Bean, Ice Cream Sandwich, and Gingerbread, Notification component, iOS 7 style support, Configurable form designer for mobile devices, Deployment manager for Android devices, REST Services client access and authentication components, Android support for all of the XE4 FM and database features listed above
DELPHI XE6 (APRIL 2014)
Windows 7 and 8.1 styles, Acces to Cloud base RESTful WEB Services, FireDAC Compatible with more databases, Fully integrated InterBase support
DELPHI XE7 (SEPTEMBER 2014)
FireMonkey Multi-Device Applications Support Both Desktop and Mobile Platforms, IBLite embeddable database for Windows, Mac, Android and iOS, Multi-Display Support, Multi-Touch Support and Gestures Changes, Full-Screen Immersive Mode for Android, FireMonkey Supports the Pull-to-Refresh Feature for TListView on iOS and Android, FireMonkey Save State Feature
DELPHI XE8 (APRIL 2015)
GetIt Package Manager, FireDAC Improvements, New Embarcadero Community Toolbar, Native Presentation of TListView, TSwitch, TMemo, TCalendar, TMultiView, and TEdit on iOS, Interactive Maps, New Options for Media Library, InputQuery now Supports Masking Input Fields
DELPHI 10 ‘SEATTLE’ (AUGUST 2015)
Android Background Services Support, FireDAC support for the NoSQL MongoDB database, FireMonkey controls zOrder support for Windows, New TBeaconDevice class for turning a device on one of the supported platforms into a “beacon”, StyleViewer for Windows 10 Style in Bitmap Style Designer, High-DPI Awareness and 4K monitors support, Windows 10 styles, Support for Android Services in the IDE, Support for calling WinRT APIs
DELPHI 10.1 ‘BERLIN’ (APRIL 2016)
Android 6.0 Support, Windows Desktop Bridge Support, Address Book for iOS and Android, New ListView Item Designer, New CalendarView control, QuickEdits for VCL, High DPI Support on Windows, Hint Property Changes, EMS Apache Server Support, GetIt based Web installer
DELPHI 10.2 ‘TOKYO’ (MARCH 2017)
64-bit Linux support for Delphi, FireDAC provides Linux support for all Linux-capable DBMS, MariaDB support (v5.5), MySQL support for v5.7, and Firebird support for Direct I/O, QuickEdits for FMX, New VCL Controls for Windows 10, Updated IDE Look & Feel (Dark Theme), RAD Server Deployment License Included
DELPHI 10.3 ‘RIO’ (NOVEMBER 2018)
C++ 17 for Win32, New Delphi Language Features, FireMonkey Android zOrder, Native Controls and API Level 26, Windows 10, VCL, and HighDPI improvements, Extensive IDE UI modernization, RAD Server architecture extension, Quality and Performance improvements
DELPHI 10.3.1 ‘RIO’ (FEBRUARY 2019)
Expanded support for iOS 12 and iPhone X series devices. RAD Server Console UI redesign and migration to the Ext JS framework (available via GetIt). Improved FireDAC support for Firebird 3.0.4 and Firebird embedded. HTTP and SOAP Client Library Enhancements on Windows. Two new IDE productivity tools: Bookmarks and Navigator. 15 new custom VCL Windows and Multi-Device FireMonkey styles.
DELPHI 10.3.2 ‘RIO’ (JULY 2019)
Delphi macOS 64-bit, C++17 for Windows 64-bit, C++ LSP Code Insight Improvements, RAD Server Wizards and Deployment Improvements, Enhanced Firebase Android Support, Delphi Linux Client Application Support
DELPHI 10.3.3 ‘RIO’ (NOVEMBER 2019)
Delphi Android 64-bit support, iOS 13 and macOS Catalina (Delphi) Support, RAD Server Docker Deployment, Enterprise Connectors in Enterprise & Architect Edition
DELPHI 10.4 ‘SYDNEY’ (MAY 2020)
Significantly enhanced high-performance native Windows support, increased productivity with blazing fast code completion, faster code with managed records and enhanced parallel tasks on modern multi-core CPUs, over 1000 quality and performance enhancements, and much much more.
DELPHI 10.4.1 ‘SYDNEY’ (SEPTEMBER 2020)
RAD Studio 10.4.1 has a strong focus on quality improvements to the IDE, Delphi Code Insight (LSP), Parallel Library, SOAP & XML, C++ Toolchain, FireMonkey, VCL, Delphi Compiler, and iOS Deployment.
WPF .NET Framework
Released in 2006, WPF has developed along with the .NET framework. It was open-sourced by Microsoft in 2018 and has provided several roadmaps indicating community engagement and growth in the near future. Significant .NET changes and Microsoft’s shifting design decisions impact the long-term feasibility of WPF. WPF .NET Framework 4.8 was the final version of .NET Framework according to Microsoft and was released on April 18, 2019.
WPF was introduced in .NET Framework 3.0 in 2006. According to an article on the CodeProject website the WPF versions and enhancements are listed in this table:
|WPF Version||Release (YYYY-MM)||.NET Version||Visual Studio Version||Major Features|
WPF development can be done with VS 2005 (released in Nov 2005) too with few additions.
|3.5||2007-11||3.5||VS 2008||Changes and improvements in:|
Application model, data binding, controls, documents, annotations, and 3-D UI elements.
|3.5 SP1||2008-08||3.5 SP1||N/A||Native splash screen support, New WebBrowser control, DirectX pixel shader support.|
Faster startup time and improved performance for Bitmap effects.
|4.0||2010-04||4.0||VS 2010||New controls: Calendar, DataGrid, and DatePicker.|
Multi-Touch and Manipulation
|4.5||2012-08||4.5||VS 2012||New Ribbon control|
New INotifyDataErrorInfo interface
|4.5.1||2013-10||4.5.1||VS 2013||No Major Change|
|4.5.2||2014-05||4.5.2||N/A||No Major Change|
|4.6||2015-07||4.6||VS 2015||Transparent child window support|
HDPI and Touch improvements
The following is an excerpt from the Wikipedia .NET Framework Version History page for .NET Framework 4.6.1 to 4.8.
Released in 2013, Electron is actively developed and maintained by GitHub and has rapidly provided support for emerging technologies like Apple Silicon (circa Nov 2020). It lacks the history and stable longevity needed to determine if Electron apps built in 2020 will survive through 2030. GitHub is a subsidiary of Microsoft. Electron offers a free alternative to Delphi and WPF, familiarity to front-end developers, and cross-platform capability at the cost of IP protection, standard IDE tooling, and application performance.
According to the Electron Release timeline ( https://www.electronjs.org/docs/tutorial/electron-timelines ) here are the releases.
Delphi provides the most assured long-term outlook, best intellectual property security, and easiest in-house customization at the cost of a one-time commercial license purchase. WPF’s barrier to entry is lower and it offers better accessibility options but is subject to Microsoft’s .NET overhauls, is more difficult to customize, and can be decompiled with ease. Electron is absolutely free and can be developed on each of the three major desktop platforms but pays for that flexibility via its uncertain long-term outlook and by relying on corporate sponsorships and community support for additional development.