Java, before it became a by word for bloat and poor engineering, had one very intriguing promise right out of the box. Write Java code and you could run it on every device that supported a JVM. This, of course, was in practice just this side of bullshit. But it was something that developers really wanted, and so attempting to reach that nirvana was a constant if unrealized goal of Java.
Microsoft, of all people, may have beaten them to it.
At the Build Conference, Microsoft announced three items that are key to bringing developers along with them to Microsoft devices. The first is a set of tools that allow you to take IOS and Android code and convert them to run on Windows devices. The code is not perfect; some percentage of the code will have to be converted to use Windows APIs in place of some unsupported Android APIs. But it immediately provides a low effort way to have applications run across devices.
Second, Microsoft announced and released Visual Studio Code, and IDE that runs on Mac and Linux systems. It doesn't, by itself, make writing windows applications that run on Macs and Linux possible (Microsoft has already open sourced core components of their .NET stack), but it does take Microsoft products to where the developer lives, and it does provide an route to those technologies on those platforms as they become more mature.
Finally, and most importantly, Microsoft has matured the concept of universal apps. Windows 10 will support building applications that can run on any screen: computer, table or phone. Microsoft has unified its operating system across different classes of devices, which now allows developers to essentially write one application that can run on every screen a user owns.
These three things are closer to the idea behind write once, run everywhere than perhaps anything else the technology industry has developed in the last twenty years. Microsoft now allows developers to develop on its tools (and eventually for its platforms) on any device they want. It has provided a means to rapidly an easily convert mobile applications to run on many platforms, regardless of their initial parent operating system, and it has created a system where developers can write one application and have it operate on many kinds of devices. This is write once, anywhere you want, and run almost anywhere you want.
I am being a bit disingenuous here, of course. The promise of write once, run anywhere was about running on any operating system, of making the underlying code of the computer irrelevant. Microsoft's moves have done almost the opposite: they achieved this level of universality by focusing on making everything work on their operating systems. In the end, however, that may not matter as much. The audience here is obviously developers. make it easy for developers ot bring over their applications to your platforms, make it easy for developers to get good results across all types of devices, and make it easy for developers to develop for you how and where they want, and, Microsoft is betting, they will come.
If they do, then we will approach a future of write once, run everywhere. But in that future, "everywhere" will be a lot more constrained than it is today.