Cross-platform software

Some frameworks for cross-platform development are Codename One, ArkUI-X, Kivy, Qt, GTK, Flutter, NativeScript, Xamarin, Apache Cordova, Ionic, and React Native.

[4] Applications can be written to depend on the features of a particular platform—either the hardware, OS, or virtual machine (VM) it runs on.

A software platform can be either an operating system (OS) or programming environment, though more commonly it is a combination of both.

Currently, Java Standard Edition software can run on Microsoft Windows, macOS, several Unix-like OSs, and several real-time operating systems for embedded devices.

For mobile applications, browser plugins are used for Windows and Mac based devices, and Android has built-in support for Java.

Just because software is written in a popular programming language such as C or C++, it does not mean it will run on all OSs that support that language—or even on different versions of the same OS.

All user interaction with the application consists of simple exchanges of data requests and server responses.

Such applications follow a simple transaction model, identical to that of serving static web pages.

Such applications routinely depend on additional features found only in the more recent versions of popular web browsers.

These features include Ajax, JavaScript, Dynamic HTML, SVG, and other components of rich web applications.

Some software is maintained in distinct codebases for different (hardware and OS) platforms, with equivalent functionality.

This technique is used in web development where interpreted code (as in scripting languages) can query the platform it is running on to execute different blocks conditionally.

[6] Third-party libraries attempt to simplify cross-platform capability by hiding the complexities of client differentiation behind a single, unified API, at the expense of vendor lock-in.

Responsive web design (RWD) is a Web design approach aimed at crafting the visual layout of sites to provide an optimal viewing experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices, from mobile phones to desktop computer monitors.

There are several approaches used to target multiple platforms, but all of them result in software that requires substantial manual effort for testing and maintenance.

Features, installation methods and architectures for web and traditional applications overlap and blur the distinction.

For example, Firefox, an open-source web browser, is available on Windows, macOS (both PowerPC and x86 through what Apple Inc. calls a Universal binary), Linux, and BSD on multiple computer architectures.

The four platforms (in this case, Windows, macOS, Linux, and BSD) are separate executable distributions, although they come largely from the same source code.

An alternative to porting is cross-platform virtualization, where applications compiled for one platform can run on another without modification of the source code or binaries.

As an example, Apple's Rosetta, which is built into Intel-based Macintosh computers, runs applications compiled for the previous generation of Macs that used PowerPC CPUs.

Each has been released across a variety of gaming platforms, such as the Wii, PlayStation 3, Xbox 360, personal computers, and mobile devices.

[11][12] Games that feature cross-platform online play include Rocket League, Final Fantasy XIV, Street Fighter V, Killer Instinct, Paragon and Fable Fortune, and Minecraft with its Better Together update on Windows 10, VR editions, Pocket Edition and Xbox One.

While this is straightforward, compared to developing for only one platform it can cost much more to pay a larger team or release products more slowly.