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 organizations 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
Chromium Embedded Framework (CEF) is a framework used for embedding a web browser engine based on the Chromium core.
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
Electron is used for the development of desktop GUI applications using front and back-end components originally developed for web applications.
Node.js runtime is used for backend and Chromium for the frontend.
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
All Node.js APIs and most of the third party modules are supported by Nw.js.
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.
Java comes shipped with a WebKit-based WebView for JavaFX.
Such development can make use of standard APIs, and leverage the world-class browser engine and there are no extra dependencies and tools to create platform-specific installers.
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
The focus of React Native is on developer efficiency across all the platforms you care about – learn once, write anywhere.
Facebook uses React Native in multiple production apps and will continue investing in React Native.
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
Code reusability across platforms, huge community support and a good portfolio of existing apps are the biggest factors behind this shift.
Which framework to choose depends on the critical success factors for the project.
For example, if you are building a new desktop application which has a web user interface as well, Electron could be a good option.
Similarly, if you are building a desktop application which is a replica of an existing mobile app built using React Native, React Native Desktop could be explored.
The future roadmap of the project needs to be considered as well during the platform selection process.
Need help with Cross-platform application development?
Do you need help with developing a cross-platform software application?
Get in touch with Perfomatix to find out how we can help in shaping your disruptive idea into a prototype, MVP, and finally into a killer product.
Visit our success stories section to find out more about some of the startups which made it big with us.