I’m going to steal the phrase and say that if the web didn’t exist, it would be necessary to invent it.
To illustrate what I mean, let’s consider a www-less universe where there is a duopoly of personal communicating devices; for the sake of this argument, let’s call them Apple and Android. Both environments have different programming languages, different layout engines, and different interfaces for accessing platform capabilities.
In this alternative universe, companies start to realize that building twice is costly and inefficient. Beyond the labor costs, the communication cost of implementing features on two platforms hurts their ability to iterate and innovate.
So they start to develop tooling that abstracts above the differences between the platforms. They create a common scripting language and transcompiler, a declarative language for UIs, and a common API that delegates to the underlying platform. They write their application once, and it can run on both Apple and Android.
Another problem in this world is interoperability between applications. How does a social network application — let’s call it Facebook — reference a spreadsheet created in another program — say, Excel? Both Apple and Android recognize the issue and independently create an addressing system. The systems are similar; applications have a universal identifier and a namespace for referencing resources within the application.
Now that applications can link to each other, things are better. But there is still a bad experience when you don’t have the right application installed. Eventually the platform providers realize this need and add the ability to on-demand install an application. They also add a “light install” that automatically removes the application if you don’t continue to use it.