The Artima Developer Community
Artima Weblogs | Gabe Grigorescu's Weblog | Discuss | Email | Print | Bloggers | Previous | Next
Sponsored Link

Visualizing Complexity
Write Once Run Everywhere
by Gabe Grigorescu
August 20, 2003
Get more bang for your buck with multi-platform application development, but be prepared to work for it, even in Java.


Write once run everywhere has probably been one of the very first phrases we read about Java years ago. I remember being quite excited at the idea of easily writing a bit of code and seeing decent looking GUIs on my Sun Sparc 2. No more Motif, and better yet, I could take that same object code and run it on my 486 desktop PC running Microsoft Windows. Quite exciting. That was the GUI version of a "Hello, world!" test.

Years later I'm managing the Visualization Group here at Tom Sawyer Software. One of the main products we have is called the Graph Editor Toolkit. We support all major frameworks, Java, MFC, and ActiveX. This toolkit helps our customers write applications to more easily and effectively visualize their relational data. We cover most markets, as our graph-based display (with nodes representing the entities, and edges representing relationships) is generic and very extensible.

Thus, this product needs to be highly optimized so it can handle tens of thousands of objects drawn on the screen, and it needs to behave in the same way on all platforms. One can say that slightly different behavior between the Java and MFC or ActiveX versions is acceptable, but what about the same Java product running on Microsoft Windows, Linux, and HP-UX, for example? It turns out this is becoming a more and more challenging task, with different JDKs being released, and different vendors having their own implementations of the Java VM. I'm finding that we need to spend more and more time fine-tuning our highly optimized graphical toolkit. The platform matrix we have to go through looks just as complicated as our non-graphical C++ based products which run on all types of operating systems with various compilers. I almost wish we had #ifdef's available, because right now we have various runtime checks of whether we're running under JDK 1.2, or under HP-UX, or Sun Solaris, etc. Cursors and images behave differently, some mouse events are not properly registered sometimes, and all of these issues must be addressed separately if the Java application is to run consistently and smoothly in every platform that Java supports.

So I guess it's true that there's no such thing as a free lunch, and for sophisticated Java applications, you have to earn your lunch for every platform you support.

Talk Back!

Have an opinion? Readers have already posted 5 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Gabe Grigorescu adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Gabe Grigorescu is Engineering Manager at Tom Sawyer Software. Before joining Tom Sawyer Software in 1996, he worked at the Lawrence Berkeley National Lab in the mass storage group supporting and developing a large mass software package for all lab employees. He has also worked at University of California at Berkeley as a computer consultant for eight years, where he received his Bachelor's Degree in Computer Science. He completed his Master's Degree in Computer Science at Stanford University, and is now also teaching software engineering at California State University at Hayward. He is also an expert in Unix System Internals, Security, and System Administration. Before joining Tom Sawyer Software, Mr. Grigorescu worked on several complex software projects, including UNIX graphical user interface applications, graphics software packages, and other operating system and network level projects.

This weblog entry is Copyright © 2003 Gabe Grigorescu. All rights reserved.

Sponsored Links


Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use