Write Once Run Anywhere

Which is to say, WriteOnceRunMaybe.

This might be true when Anywhere is defined as MicrosoftWindows, SunSolaris, or the LinuxOperatingSystem.

I thought it was WriteOnceDebugEverywhere??

There is also WriteOnceRunAway?. It seems to be a popular cry in the Java world.


What's the problem? EmacsLisp is WriteOnceRunAnywhere. (See EmacsAsOperatingSystem.)

A problem (MyProblem?) is the WriteOnce bit... I know this is largely a programmers' forum, but surely we are far enough away from achieving the more desirable alternative that we can embrace: WriteLessThanOnceRunAnywhere?!


My first encounter with this concept was UcsdPcode used in UCSD Pascal, though I would have to say that [ANS] ForthLanguage is also (or can also be) such an environment -- gh


I have had good results so far with Java. In one case, I wrote on Windows/NT and deployed on NT, Sun Solaris, HP/UX, and even NT/Alpha. Just for fun, I tried the code on SGI and it worked there as well. It is actually possible to do this, especially with server-side code. -- MikeCorum


Interestingly, the real problem isn't WORA, it's that people also expect to Write Once, Deploy Anywhere. You can make your nice little Java app, and it will definitely run anywhere, but you still have to distribute installers and configuration programs that understand each platform enough to make a clean and workable go of it.


Related only by the word form, I fear we have a nasty case of CopyOncePasteEverywhere. It's rampant, through our build system and the code. I would love to clear it up, but we have deadlines to meet .. but yes we're still doing ExtremeProgramming, we claim.


Most of the compatibility issues come from the GUI or networking libraries. In rare cases, some of the containers have implementation bugs that never seem to get corrected for a specific platform (usually Solaris, ironically).


The closest you can presently come to a WriteOnceRunAnywhere is to write and post to an URL, the simplest HTML page, without scripts, without servlets, without ASP, without PHP or Vba, using only basic HTML markup. It you do this, you can reasonably assume that anyone, anywhere with an Internet connection and a browser executable on their machine can "run" it. There are assumptions one must make about the availability of pre-requisite processing artifacts in order to describe something as "universally accessible". Most users today, regardless of operating system, 1) have internet access and 2) have a browser which can "surf" it. This is the only candidate I can think of which fulfills this statement.

You're still speaking of a limited audience. My microwave, for example, has a JVM but no browser (or network connection). The only thing you can say that applies generally is that 'WriteOnceRunAnywhere' has a caveat: 'Anywhere' is limited to 'Anywhere you can stick a RuntimeEnvironment? and input a program'. A browser is a runtime environment just as much as the JVM or JRE. Not even PlainText is WriteOnceReadAnywhere?.

Limited? Not so. Did you fail to see the already existing caveat in the paragraph: There are assumptions one must make about the availability of pre-requisite processing artifacts in order to describe something as "universally accessible". There are literally hundreds of millions of users who possess the pre-requisite processing artifacts mentioned. 1) browsers, and 2) internet connections. That number may indicate a "limited audience" to you, but to most people, who do not "stick Runtime environments", or do not know or possess a JVM or JRE, or even know what these mean, several hundred million is a "significant" audience. In reality, those who do know what they mean are the "limiting audience". To make something "universally accessible" means that one must limit the number of "pre-requisite processing artifacts" that one must have, and use a universally accepted schema of presentation and storage. The browser and an internet connection represent the simplest I can think of. Every added processing artifact beyond these two may extend capabilities, but when introduced, will reduce the universality. A compromise which allows for simplicity and universality, or more complexity with added capabilities, can be introduced with ProgressiveDisclosure.

"Universally Accessible" to whom, though? There are literally billions of computer devices that lack the necessary display, human-input, and network capabilities to utilize a browser. PersonalComputers are a tiny subset of all computers. 'WriteOnceRunAnywhere' implies much more than just that tiny, fractional subset. Several hundred million is a "significant" audience, I agree, especially considering you're speaking of a "paying" audience. However, it's still a limited audience.

Obviously, the "billions of devices you mention" could have included a means of browsing and utilizing, or at least accessing, a network or internet artifact, or somewhere else external to itself, and executing some code it finds there. That they do not include these indicates that what computing capacity they were meant to possess do not, and will not use coded external artifacts. To proclaim "Universally Accessible" to be such that all computing devices must be included in the "audience" (an audience, by inference, is one which can view, react and respond to presentations) is ConversationalChaff. It was my original intention to mention the SimpleMinded Browser/Internet Connection combination as being the closest thing one can find as a WriteOnceRunAnywhere scenario, and it was offered in an attempt to ImproveTheDialectic. It would be well to include here other scenarios or combinations which can be utilized which fit the requirement of WriteOnceRunAnywhere. -- DonaldNoyes 20080720.2221.m06

Obviously the "audience of one hundred million" you mention "could have included" a JVM, or a BrainfuckLanguage interpreter, or a number of other runtime environments. The bar is considerably lower for those than it is for including the necessary communications and parsing features required to support a simple browser. Whatever point you're trying to make with the "could have included" rhetoric will hardly support the browser and simple HTML as more 'WriteOnceRunAnywhere' than various alternatives. And stuff your weak inference and 'ConversationalChaff' - the "audience" for a program is a machine, a processor, a computation device, not a human. Something written in assembler, for example, has an 'audience' limited to just the set of processors that accept the utilized instruction-set further limited by the OS procedures and hardware support upon which it relies. You don't "speak" assembler to a human, thus humans cannot be an audience for assembler. Processors "view, react, and respond" to machine instructions just fine, but your inference seems to have skipped merrily by that little detail. Regardless, the notion that a browser/internet connection is the closest one can come to "WriteOnceRunAnywhere" is simply incorrect for the same reason that BrainfuckLanguage isn't close to "WriteOnceRunAnywhere": because "could haves" simply do not count. If you want to ImproveTheDialectic, consider instead what it does take to "count". If all it was are "could haves", then the BrainfuckLanguage is much closer to WriteOnceRunAnywhere than is the HTML page + network connection (which requires parsing, networking, display, 2D spatial control of visual data, and much more).


SeptemberZeroSeven


EditText of this page (last edited July 20, 2008) or FindPage with title or text search