In 2001, Sun Microsystems ran an ad with the tagline “Write once, run anywhere.” Microsoft’s marketing fired back: “Write once, debug everywhere.” Those two slogans pretty much sum up an entire decade of war.
But Java vs .NET was never a programming language war. The browser war between Microsoft and Netscape wasn’t about who built a better product. And AI today is certainly not just a model war. They all come down to something much older: who controls the ecosystem and the path to users.
Java was developed in response to lock-in. Every OS was its own world. Switching platforms meant rewriting everything. “Write once, run anywhere” was a promise: companies could escape dependence on a single vendor. But if the JVM became the universal runtime, the OS would be reduced to a commodity layer. And power would shift.
.NET showed up to block that shift. Not by proving Java wrong, but by helping developers ship faster. Better tooling, deeper integration with existing environments. Java won the ideals. .NET won on pragmatism. Then .NET started running on Linux and Mac, not because Microsoft had a change of heart, but because pragmatism always beats ideals.
Users don’t stay loyal to a philosophy. They stay loyal to whatever helps them finish before the deadline.
Netscape didn’t die because of bad technology. IE came pre-installed on Windows. Users didn’t have to choose anymore. And when users don’t have to choose, they don’t choose you.
Default always beats choice.
Java never turned the OS into a commodity layer. Netscape never became the platform of the web. Things that are right but sit far from the center of an ecosystem still lose.
AI today is no different. People don’t wake up and decide which model to use. They open Outlook, Excel, their IDE, Search, Chat. Whichever AI is already there wins.
As long as it’s not completely stupid.
The war never changes. Only the era does.
Reach me if you have other perspectives, or just want to say hello.
Say something.