This question already has an answer here:

Since Oracle bought Sun and Apple have decided not to continue developing their JVM, is the "write once and run everywhere" model still relevant or has web services/SOA reduced it to an edge case?

marked as duplicate by Arseni Mourzenko, gnat, user40980, ratchet freak, Bart van Ingen Schenau Sep 8 '14 at 12:00

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


Whatever the fate of the JVM, "write once, run anywhere" is still extraordinarily relevant. The WAY you achieve that goal -- using a VM or translating down to a machine-specific language -- is irrelevant. In 2010 the desktop is still a VERY hot topic and apps are very much alive. What's all the buzz about iPhone anyway? They're client-side apps, and if you can cover more platforms at once -- whether you do it with Java or something like Python in Titanium (sadly, no Python for iOS, if I understand correctly) -- you save money, development time, and ultimately have more left over to buy sushi.

That said, native apps have their place, [[[even if] you write:them] likeThis];

Later: Since you did mention WS in this, you're probably talking about the server-side. It's still relevant: being able to change server platforms gives a technology company flexibility as prices and performance of server OSes vary through time. So many things are write-once run anywhere on the server-side now, though: Rails, PHP. But still, very relevant.

  • Or in Smalltalk: (even if you write: them) likeThis! – Frank Shearar Oct 26 '10 at 7:25
  • Thanks Yar, My original thoughts were related to targeting multiple platforms side of the issue. but this is something more to think about. – GrumpyMonkey Oct 26 '10 at 7:59
  • No Java on iOS either. – user4051 Oct 26 '10 at 8:29
  • 1
    I like Sushi!!! – Bryan Field Oct 26 '10 at 12:39

Write once, run anywhere always had a couple of problems:

  • "write once, debug everywhere": developers coming from a particular platform would occasionally make unwarranted assumptions about how all platforms worked, e.g. that configuration could always be stored in a registry, that all execution environments have virtual memory, or that all mobile phones that claim to support JPEG can actually render JPEGs. So in fact you would need to test your application on every platform you claimed to support, bringing the development costs back up.
  • "write once, run away": user interfaces in cross-platform apps tend to borrow the HCI paradigms of the platform in which the designer was most comfortable, and therefore don't fit well in the platforms to which they're ported. Even where the widget library has been engineered to produce native-looking controls (Apple, in particular, invested heavily in making Swing look native) the placement, behaviour and workflow can still be different.

On the server side these problems are less significant - the browser is the UI, and people tend to choose one of either Win or *nix and stay with it. In that instance, "write once, run anywhere" was what allowed numerous companies to ditch Solaris for Linux after the dot-com crash.


Yes, it's still relevant.

If you live in a part of the world that has highly available, ultra-fast Internet access, you're lucky.

Even if you're that lucky, and the webservice you wish to use is that lucky, you still have to suffer the issues of latency, and the fallacies of distributed computing.

Just imagine for a moment what it would be like to use something like Photoshop through a browser.

So desktop applications probably aren't going away anytime soon. Which means that if you want to target multiple platforms/architectures, you need to care about write once, run anywhere.

As Yar points out it doesn't terribly matter how you get WORA, whether you use a VM, or cross-translation. The important question is whether or not you wish to target multiple platforms in the first place.

(Historical note: everyone seems to think of Java when they hear "VM", but virtual machines were old news long before Java was on the scene.)

  • Java seems to be the only language whose marketing has included the VM hype, though, and that has the term "virtual machine" user-facing. Hell, it's one of relatively few languages who've undergone marketing at all. – Jon Purdy Oct 26 '10 at 8:02
  • Browser-based deployment is not about distributed computing, but about version maintenance. A web-based photoshop would do pretty much everything client-side (the way the web editor on photoshop.com does), but would have the advantage of being centrally deployed and always up to date. You can have a native app with web-style deployment (e.g. google chrome), you can have a native app that is heavily tied into web services (breaks down when the web goes down), and you can build offline web apps (HTML5 offline cache). – Joeri Sebrechts Oct 26 '10 at 9:51
  • Browser based deployment uses networks, which means you need to think about latency, and the potential for partial/complete failures of some or all of the various webservices you use. Yes, you can do a LOT of stuff locally - look at Dan Ingall's Lively Kernel, for instance - and thanks for pointing out that it's not a binary browser-or-native question. – Frank Shearar Oct 26 '10 at 10:00

Yes, but in web-realm (give or take a few browser quirks). As for desktops, the "write once, run anywhere" is pretty much irrelevant given that something like 90% computer users in the world are MS Windows users.

  • But you have to begin somewhere to provide more options to users including ourselves. Also ignoring the rest 10% may hurt your business. – aufather Oct 26 '10 at 14:19

Less than it was, it seems to me, certainly on the client. Javascript is constantly getting faster and more powerful and with the opportunities offered by HTML 5 there will be many more options for working in the browser in future ( or indeed now ) to do things that in the past would have needed some kind of client side software.

On the server it's less of an issue anyway I think- often enough I've used windows to develop Perl, PHP or Rails applications to run on linux or bsd servers and by and large they have worked fine. If you're working to a scripting runtime then you get similar platform-agnostic benefits to working on the JVM ( which is quite similar in essence ) without the typing overhead of working in Java.

I've experimented a bit with game development in Java and that is somewhere that write-once, read anywhere would be really handy, but actually once you need access to hardware accelleration you are no longer genuinely platform agnostic anyway....


Its actually a pretty simple and straightforward case of a fundamental tension that's not going away anytime soon. While its the developers dream, "write once, run anywhere" commoditizes platforms. Platforms vendors' whole business depends on differentiation. For them , its "Write once, and write for me only". The two sides will continue to pull in opposite directions for some time to come.

Not the answer you're looking for? Browse other questions tagged or ask your own question.