App development evolves with aid from cross-platform frameworks
Developers evaluate the strengths of programming languages, such as C++, Python, or Java on a range of factors. But perhaps the better way to evaluate those languages as part of a larger framework and toolset, such as an IDE (Integrated Development Environment) and its corresponding tools and libraries.
By: Carl Engh, Product Marketing Director at The Qt Company
That approach to evaluating languages as part of a framework is vitally important. One of the critical decisions that developers face is whether to build a native application, which works on a single platform or operating system, or to build the app in a cross-platform environment, in which the app will perform well on multiple platforms.
Consider mobile devices. Traditionally, mobile apps have been programmed with native programming languages. For iOS-based devices that could mean using either Objective-C or Swift, and for Android devices it could mean using either Java or Kotlin.
If a business wants to launch a native app on multiple platforms, it must write multiple versions of the app, one for each operating system it needs to support. Native development on these different platforms requires teams with different skills, and these teams require management and coordination, resulting in high costs and complexity.
Similarly, the toolchains (a set of programming tools) for developing multiple solutions are costly to set up and maintain, require specific skill sets, and cannot provide the capabilities of standardised software frameworks.
But time-to-market may be the biggest concern. Organisations today face increasing pressure to bring new and improved products to market on accelerated timelines. From mock-up and prototyping to coding and testing, all parts of the development process need to be efficient to minimise costs and time-to-market.
The alternative: cross-platform
Because a cross-platform app can run on different platforms, without the need to code the mobile app multiple times, developers can cut their time to go-live significantly. Developers speak of the WORA (Write Once, Run Anywhere) functionality of cross-platform frameworks that allows them to write the primary or base code once and then adapt it to different platforms. Cross-platform-developed apps are, by nature, 'platform-agnostic'.
Cross-platform solutions have matured over the last decade. Today, developers use them to deliver proofs of concept, mainstream applications, and vertical-market applications (such as for Human Resources, manufacturing, or retail) regardless of the applications’ size and scope. Cross-platform frameworks are behind millions of diverse applications or systems today, such as business intelligence software, vehicle infotainment systems, brewery equipment, monitoring systems, coffee machines, games, and even spacecrafts.
And the maturity of cross-platform is evident in its adoption. As early as mid-2016, Forrester estimated that more than 60 percent of enterprises were already engaged in cross-platform development.
In comparison to native mobile app development, cross-platform applications do not require a separate team of developers for coding the application for different platforms.
Applications developed with cross-platform toolsets are easy to maintain because they’re built on a single codebase - vastly reducing the complexity and cost of releasing the app for GA (General Availability), making release updates, adding new features, or incorporating updates to eliminate bugs. Moreover, cross-platform frameworks become a greater asset to developers if they incorporate a set of libraries of existing, reusable code.
In short, if you’re considering what framework to use for your next project, here’s what to look for in cross-platform development frameworks:
- The framework should include or work with an IDE (Integrated Development Environment) with integrated UI design tools, a code editor with syntax highlighting, development tools for building, testing and debugging, and comprehensive documentation. The framework should also allow for adding extensions and plugins you might need.
- Libraries that match your current and future project needs. Software libraries can contain, for example, pre-written code for user interface design, business logic and machine-to-machine (m2m) communication. Selecting one that has most of the elements you need reduces the need to learn a new one and the risk of having dependencies to other libraries.
- Support for multiple desktop, embedded and mobile operating systems, allowing you to 'propagate' a single codebase across any or all those OSs and devices.
- APIs that are consistent, intuitive and easy to use. Far too many frameworks have been written with a unified approach to API design. By finding one that has standardised its approach to design, you can drastically reduce the time to add new features as well as to train new people.
- It should enable scalability across hardware platforms. Whether you are developing a complete infotainment system with 3D graphics for a car or a basic smart thermostat, the framework should enable you to develop applications with performant graphics on both low-end hardware such as microcontrollers and high end multiprocessors, ensuring that you can use the same framework for all your projects and re-use as much code as possible across those projects.
- Integration to third party software such as design tools. Many developers are forced to mimic what designers have created in Sketch aor Photoshop, which can often result in specs going back and forth between teams. Some User Interface (UI) design tools, however, include integration to these tools so that graphical elements can be imported, and UI code is almost magically created.
- The framework should have 'native performance'. Some frameworks can compile binary code that is directly executed to the CPU, which performs just like any other native approach.
The acid test for making the 'native vs. cross-platform' decision may be this: will native app development deliver the flexibility, low time-to-market, and cost efficiencies that cross-platform delivers in supporting app development for desktop, embedded and mobile operating systems and devices on accelerated timelines?
Make that the first question on your checklist as you dive into your next project.