I have once seen a universal download for an app. It was said to work on Windows, MacOS, and Linux. If the exact same app is designed to work on three different without changing any code. For example, Java can be made to run cross platform. Are there performance benefits to creating platform specific apps rather than creating a universal app, where the download is designed to run on all platforms?
There are no apps that natively run on Windows, Linux and MacOS as a single binary. There are a couple approaches to multiplatform applications:
- Use a runtime that runs on multiple platforms, for example Java. If you target Java instead of an operating system, it will run as long as the user has Java installed. However, Java needs to be installed on Windows or Linux (and presumably MacOS) before anything would run.
- Use a framework or library that lets you target different environments at compile time
I think the main disadvantage is not performance, it's that the resulting app will mismatch the target OS in how it looks and which features it can take advantage of. Multiplatform apps often don't follow the conventions for the target OS and that raises the bar of entry for the user. For example, Visual Studio code looks nothing like a Windows application on Windows (although to their credit it tries very hard). Good luck printing anything.
But then again a lot of apps don't need a lot of OS integration (who prints out their code?) and the benefit of not spending resources on managing operating systems outweighs the disadvantages