Some programs are OS specific, while others are not. For instance, Java code will run on any computer with a Java interpreter, but there are also executable formats that are specific to different operating systems or hardware architectures. For these reasons, the software must be OS specific in order to run properly. Additionally, different OS’s provide different methods for loading programs. Fortunately, many of these applications are not OS-specific.
While PC hardware differs from one system to another, the software will run on most machines running that particular operating system. This means that Windows programs should run on most Windows-based machines, while programs written on other operating systems will not. In addition, the operating systems provide different APIs and drivers, so programming is platform-specific. If you have an application that requires a particular API, you will need to write the program according to the platform of your computer.
The reason why software is OS-specific is because of the way it interacts with the hardware. Because of this, programs are not compatible. Instead, they interact with the OS kernel through the application binary interface. This is how programs communicate with the hardware. While programs written for Windows can run on any Windows-based machine, programs written for other operating systems will not run on them. In this way, the two are distinct, but each has a certain benefit.