Windows *can’t* run on “any” hardware easily. What’s different is there are LOTS of people making hardware that can run Windows. Some of this does come down to decisions made by both OSes, though.
When Microsoft started making Windows, there were a LOT of competitors. The popular consumer OS was called “DOS”, but there were lots of compatibility issues. If you were looking to buy a sound card or other hardware you had to make sure you knew it was compatible with your OS and maybe do some tinkering.
With Windows, Microsoft tried to fix that. They tried to make the concept of “drivers”, the software that interacts with hardware, easier for end users. The promise was no matter whether you bought a Tandy or an IBM, if you ran Windows you could install the driver for your sound card and it would just work. This was so appealing, it also sort of motivated the people making computers to focus on building with CPU and memory architectures that worked well with Windows because people wanted to run Windows. Having more similar hardware made it easier for drivers to be consistent, etc.
Basically, before Microsoft did this all computers were like hot rods. They were built out of similar parts but usually had a mishmash of customizations that required the user to do a lot of work to make their OS understand what was going on. Microsoft helped shift this market into one where computers were like the Honda Civic, a single platform with a large ecosystem of interchangeable parts.
So Windows is extremely flexible and can come with gigabytes of built-in drivers to help it handle even very obscure hardware. The one thing it’s bad at is if you have a weird CPU. Most PCs are using a CPU architecture called “x86” or “x64”. Windows has been designed for these since the 80s. But tablets and smartphones tend to use an architecture called “ARM”. Windows has only been trying to run on that since about 2010, and it’s still a fairly obscure case. Not all software can run on Windows ARM. If you have something even more obscure, like the stuff Arduinos run, Windows won’t be able to run at all because they lack a lot of features it needs.
Android was built different. It’s intended for mobile devices. That mean it focuses very heavy on ARM CPUs. While Google has made it flexible, they focus mainly on making it run on the things they use inside their phones. It’s open source, so Samsung can pick it up and add the code needed to make it work with their stuff if they choose differently. But Samsung isn’t financially motivated to be so flexible they help LG make Android run on *their* phones. And Google isn’t really committed to Android being as general-purpose as Windows became. And since mobile devices are more limited than PCs, Android can’t come saddled with gigabytes of drivers for every possible use case. It works best if the person who makes a device trims it down to have just what it needs.
—
So the real TL;DR:
* Microsoft WANTS Windows to run on as many things as possible. They go out of their way to help everyone write the code needed for compatibility. Since PCs have a lot of space they can include a TON of “extra” stuff so installing even weird hardware might be a no-problem experience. That makes every copy of Windows kind of like a putty that can take the shape it needs to “fit” your computer.
* Android is focused on much smaller devices and performance is more important. It can’t afford “extra” code. You can’t generally update the parts in your phone anyway so it doesn’t make sense for each copy to come with things that will never be needed. That means each copy of Android is more like a rock: it fits in one place and one place only, and if you install a copy on a phone it wasn’t designed for it may not even know how to finish turning the thing on.
Latest Answers