Cross-platform development for desktop applications was unjustly overlooked until recent times even when it was vastly explored in the mobile arena. Today situations are changing as Macs are aggressively taking over the market previously controlled by Windows. Also, adoption of open source Linux platforms by governmental organisations and public offices across the globe forced developers to opt for multi-platform desktop development.
Here we take a sneak peek at widely used cross-platform development tools and frameworks.
Chromium Embedded Framework
Applications developed using CEF
- Adobe Acrobat
- Adobe Creative Cloud
- Adobe Dreamweaver
- Amazon Music
- AOL Instant Messenger
- Facebook Messenger for Windows
- Kaspersky Security Scan
- Unity 3D
Several notable desktop applications like Slack, WordPress, GitHub Desktop are built on Electron.
Advantages of using Electron
- Huge open source community with over 50,000 stars in GitHub
- Backed by GitHub which will ensure continued support and reduce risk for enterprise adoption
- Supports OS X, Windows and Linux
- Proven in the real world with apps like GitHub Desktop, Slack, Atom editor, etc.
- Easy adoption for developers familiar with React / Angular/ Vue.js stack
- Works well with 3rd party solutions for offline capability
- Supports open web standards
Many desktop applications are developed using Nw.js, and a notable one is WhatsApp desktop.
Some of the advantages of using Nw.js
- An extensive list of applications and video games developed using the framework
- Great community support with easily searchable answers, backed by Intel
- Feature rich and mature functions than those of Electron
Java is one of the pioneers in cross-platform development. Java is particularly good at reusing existing functionality. Existing applications in many organizations use Java and have substantial features available in the form of reusable Java libraries and the corresponding infrastructure and methods to build and maintain functional logic in Java.
Shortcomings of this approach are:
- Outdated technology and poor developer support
- JavaFX WebView does not have HTML and CSS Tooling
- Outdated WebKit Version and poor update support from Oracle
React Native Desktop
Although React Native is basically intended to develop mobile applications, the same can be used to develop desktop applications. The below are two forks React Native desktop.
- React Native macOS is an experimental fork of React Native for iOS for writing desktop apps using Cocoa.
- React Native Windows is a fork of React Native with official Microsoft support for writing Windows desktop applications.
Advantages of using React Native for desktop applications
- Lighter footprint and less memory consumption
- Easy integration with low-level native components and any needed desktop APIs
- GUI heavy desktop applications look better when built on React Native as it uses native UI components and not HTML
React Native Desktop has following disadvantages when compared to Electron.js
- Basically a clone of React-Native from Facebook with a change in default UIKit (for app dev.) to AppKit (for Mac Desktop) and WPF (for Windows)
- React-Native was developed as a mobile-first library to make cross-platform app development easier
- Successful real-world adoption is very little
- Limited community support
Haxe is an open source toolkit (not a framework) based on a complete cross-platform standard library. Haxe help to access each platform’s native capabilities and allows building cross-platform tools targeting all the mainstream platforms natively. Haxe is also a strictly typed programming language and a cross-compiler.
Advantages of using Haxe
- Much faster compiler than other similar compilers like Flash or Flex
- Faster bytecode than the equivalent produced by others
- The simple programming language allows the programmer to go as far as they like
Adobe Integrated Runtime (AIR) is a cross-platform runtime system developed by Adobe Systems. AIR helps in porting Web and Rich Internet Applications to desktops and mobile devices, programmed using HTML/CSS, AJAX, Adobe Flash, ActionScript and Apache Flex.
Advantages of using AIR
- The only way to wrap Flash to desktop applications
- No support for Linux
- Requires the Adobe AIR runtime and a separate installation of the program
Qt is a cross-platform development framework used to develop multi-platform applications with minimal change in the underlying code base. Applications build on Qt looks native with similar speed and performance of native applications. Qt is used to develop multiplatform applications with and without GUIs (like command-line tools and consoles for servers).
Advantages of using Qt
- Common UI library for all platforms
- Best GUI solution for C++
Applications developed using Qt
- Adobe Photoshop Album
- Adobe Photoshop Elements
- Autodesk Maya
- Bitcoin Core
- Google Earth
- Spotify for Linux
- Telegram (Windows, Mac and Linux)
- VLC media player
- WPS Office