The variety in operating systems is limited by historical development, market dominance, and technological standards.
The variety in operating systems is limited by historical development, market dominance, and technological standards.
Today the focus isn't just on the operating system itself, but on how we interact with it. A lightweight Linux setup can start up quickly and require minimal memory, yet running resource-heavy browsers can drain performance and processing power.
It's true. The current web environment is overly complex, and significant improvements would be limited even with a lightweight browser running directly on hardware.
Many have discussed the challenges of creating an operating system; yet I believe application support is even more crucial. Windows 10 Mobile, for instance, struggled largely due to its limited third-party app ecosystem. Although the underlying OS was solid with numerous strong default applications, users transitioning from iOS or Android would notice a significant drop in the range and quality of external software. Similarly, Android tablets face the same issue. Companies like Samsung produce tablets that compete on hardware, but their software offerings lag behind iPadOS in this regard. From a software perspective, there’s little parity between Windows 10 Mobile and Android tablets. This gap could potentially be bridged if either Google or Samsung developed the OS themselves—though it remains uncertain whether they would be able to do so effectively. Any tech firm considering building its own OS should look at these examples, highlighting how third-party support can limit even a well-designed system.
Most users requiring an operating system fall into several groups: those who want a general-purpose solution that switches between Windows or a simple Linux distribution, those who prefer macOS for its polished Apple experience, and those who enjoy customizing their systems with highly configurable (though often complicated) Linux options. Some even opt for a robust, all-in-one OS similar to a Volvo S70, focusing on deep personalization.
I believe we're addressing a significant issue here. Let's use an analogy from history: during the early days of home-computer markets in the 70s and 80s, numerous computers existed, each with its own software. A program designed for one system, like the Commodore Amiga, wouldn't function on another such as the Atari ST because of differing hardware. Eventually, the IBM PC emerged as a dominant standard—partly by chance (it was initially meant to be exclusive, but clones appeared—and I'm not certain IBM pursued legal action), and eventually the industry recognized this was beneficial. Even now, most devices are compatible, yet the operating system often acts as an intermediary layer, allowing software to operate without direct interaction with hardware. However, these layers remain proprietary. This explains why you can't run OS X files on Windows or vice versa, even though Apple and IBM PC compatibles share similar underlying architecture (though that may change). Progress could shift things, as evolving abstraction layers might support broader compatibility—like Vulkan. Unless this trend continues widely, we'll likely always face OS-dependent software, limiting the range of available operating systems. Interpreted languages have advanced, possibly enabling faster execution on any machine, but at the cost of speed compared to native binaries. Maybe a clever solution exists to make performance comparable to optimized versions, though it's uncertain. This remains an evolving topic. (Note: A previous comment by @maplepants offered a similar perspective, and details were refined in January 2021.)
I understand your point. From my side, Java was often presented as something it wasn't designed for, and it isn't unique in that regard (this happens across many areas... reality rarely matches marketing). Even though it still serves a purpose, its compiled form isn’t as fast as code written in more efficient languages like C. There could be opportunities with interpreted languages, but as someone without programming experience, I’m not sure what options exist. Still, well-written native binaries in an efficient language will always perform better. Each method comes with its own compromises... They might help separate software from the operating system, which is a desirable aim. If that were possible, it would be a good outcome—no one would have to endure forced changes by companies controlling the OS. (We could change the OS whenever we want, without being locked into a specific platform just because a certain program needs it.) Open-source software offers another path (though it wasn’t mentioned yet, many likely considered it). Not every application needs to be open; layers, APIs, or libraries can help. In theory, any open-source project can run on different operating systems if the license permits. But it could become more complicated if dependencies aren’t already adapted—otherwise, it’s just a matter of compiling!
Edited January 26, 2021 by Wild Penquin
Windows mobile struggled well before W10M was introduced. The earlier release had significant constraints that hindered its performance from the outset. In certain situations, Java can match the speed of native code, especially if the operating system is configured appropriately—such as with Android NDK applications. An interpreted language might even reach native efficiency, though this is rare because added functionality often introduces overhead. There are also specialized areas where interpreted languages like Erlang perform remarkably quickly.