 |
"Run anywhere" or "Runs everywhere"?
Posted by jbob on April 13, 2005 at 11:20 AM | Comments (5)
Everyone knows that Java's mantra has always been "Write Once Run Anywhere" (WORA) and there has been a lot of discussion over the years about that claim.
Putting the WORA discussion aside (it's already been beaten to death), I see the real value being in that Java, itself, seems to run everywhere. No matter where I need my application or data to get to; desktops, servers, wireless devices, sensors, it is highly likely that Java will be there for me to use. That's a powerful statement that I believe is rather unique.
As Windows is the common denominator for desktops, Java is becoming the common denominator for everything.
Additionally, if my application is written in Java and I need it to integrate with or interoperate with something that also supports/runs Java, I believe I am less likely to run into complications (Maybe that's wishful or naive thinking...) then if I am trying to fit a square peg in a round hole.
Unlike WORA, I'm not thinking specifically about code reuse but rather knowledge and skill reuse. I already know one discipline of Java (EE, SE, ME) so expanding my application's reach only requires an incremental increase in knowledge. Therefore my experiences with Java become an annuity of sorts. This has got to be better than learning a whole new set of languages and syntax for every different device, platform, or "thing" that I want to engage.
I've thought this for a while but it was today's Editor's Daily Blog that got me to write about. In it, Daniel points to a blog by Bill Bumgarner titled "Why Java on the Desktop Doesn't Matter" that focuses on the thoughts of John Carmack and why Java hasn't been more successful on the desktop. (Apologies to Bill and John if I am not characterizing this properly....read it to keep me honest)
Bill and John make some valid points about UI performance. I believe the biggest reason for Java not reaching it's potential on the desktop is largely because Java doesn't have the same access to OS internals that native code is typically given. To be very specific, the most widely used desktop continues to be Windows and from what I have heard, C++, C#, and VB all have richer access to things like the Registry and other OS internals. Someone writing a desktop application targeting Windows is going to use the language that offers the richest set of capabilities so that the resulting application is best integrated into the OS it is running on. There's only so much that the Java community can do on the Windows front without help from the OS.
Linux, being that it is open, provides an opportunity for Java to add more value on the desktop. It remains to be seen if this will be realized. It seems that in this case more emphasis is put on licensing then the fact that all Java applications run on Linux (and therefore you don't need a "Linux version" of a particular application). Apple does a great job of integrating Java into OS X and some of their desktop utilities. The fact remains that if success is a numbers game, then for now, success on the desktop = success on Windows.
I also believe that it won't be another OS that will replace Windows' monopoly, I believe that it will be devices that will replace desktops. As more and more services and applications get accessed by more and more devices and more of these devices run Java, Java on the desktop becomes more relevant. If you have to support web, device, and desktop access to your application, Java makes sense.
To that end, and based on the beginning portion of this blog, I think that Java on the desktop matters a great deal. I think that the ability to run Java running everywhere is a big deal, including running it on the desktop.
Thanks for reading.
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Thanks for writing! Long time no blog.
I found Bill's title to be generalising one specific shortcoming, to arrive at an extreme conclusion.
I have happily forgotten all about programmatic registry editing, OLE2, DDE, and a multitude of other short-lived... MStrivia. (my new word ;-)
Java has been a very solid, powerful, and increasingly flexible resource, for ten exciting years; and it looks to be, for very long time to come.
Sometimes people ask me why I don't try out this new MS.NET thingy, my answer is timeless:
Fool me once...
Posted by: cajo on April 13, 2005 at 05:45 PM
-
You wrote: C++, C#, and VB all have richer access to things like the Registry and other OS internals. Someone writing a desktop application targeting Windows is going to use the language that offers the richest set of capabilities so that the resulting application is best integrated into the OS it is running on.
With this, you nailed it completely; probably without knowing it yourself.
Using systems like Windows or KDE you get a very rich set of frameworks that just make your life easier. Well; KDE a lot more then Windows. Things like a file-open dialog that shares settings like 'My Documents' and other things have to be reprogrammed in Java to match the native technology. This is bad.
Unfortunately this is just a very small example and the real integration and component reuse of any native application goes a lot further then that. From allowing global keyboard shortcuts to reach your code, all the way up to reusing the desktops native icons and color settings. The best reuse of components is better integration with the native systems.
Java on the desktop is a big issue, and it does matter a great deal. What Sun seems to be missing is that the usability features added in standard components need to be present in Java components as well to be usable.
When Java will have copy/paste in all textfields and a popup on that same textfield as wel as little things like selecting all text when tabbing into that textfield then I think you are getting somewhere. Before that happens; its great to have one application that runs everywhere, but it will probably never feel at home.
Posted by: zander on April 14, 2005 at 07:17 AM
-
I see the real value being in that Java, itself, seems to run everywhere.
So, Linux/PPC, Linux/ALPHA, and BSD don't exist? What about Haiku (formerly OpenBeos), Syllable, or SkyOS? OK, Linux/PPC has Java 1.3 (while Mac users whine that they don't have better than 1.4), BSD will run Java via the Linux emulator (which is kind of sad), and the Haiku people are working on a JRE, but my point remains. Java has a lot farther to go than many people realize.
William Tracy
(Linux/SPARC doesn't seem to have Java 5.0, either.)
Posted by: afishionado on April 14, 2005 at 09:22 AM
-
Hi afishionado,
The "Run Anywhere" mantra of the "Run Everywhere" dream will only be realized when there's an open source, complete and certified Java2 SE implementation. So if you are a Linux/Sparc or PPC user, BSD user, BeOS user, whatever, help the many F/OSS Java projects out there: Classpath, Mauvee, Kaffe, GCJ, SableVM and JamVM to name the most proeminent. For many apps they already provide enough so you can run your apps under the plataforms you asked for.
As I said on my weblog, F/OSS users should stop complaining at Sun and solve the problem themselves. That's the way F/OSS software has allways evolved to become best of breed. http://weblogs.java.net/blog/flozano/archive/2005/03/why_dont_open_s.html
Posted by: flozano on April 14, 2005 at 01:53 PM
-
I agree with your idea about the "Desktop" being replaced not by another OS but by a bunch of new ways to compute. I suspect people will soon be looking back at the good old days of "one platform, one os". I also agree that Java is in exactly the right spot for this new eara of many many platforms...thanks for your post.
-Lucas
Posted by: lucasjordan on April 14, 2005 at 07:23 PM
|