In some form or another it seems that this question is on the minds of every programmer, manager and CIO in the world. Each day another hundred monkeys introduce the new savior of the world, with the promise of previously unknown productivity and an end to all programming problems.
Will you be saved by JINI? Find your place in the sun with JavaSpaces? Or will HotSpot be your ticket to programming paradise? I would venture that none will do the trick because they're just technologies. Yes, they may make aspects of the job better but they won't put you into a fundamentally new state of programming happiness. To really move forward requires process and knowledge.
Just as information is the most important asset of a company, it's the most important asset you possess as a programmer. As you may have learned watching Schoolhouse Rock on Saturday mornings, "Knowledge is power." You can have the most expensive rod and a tacklebox filled with a hundred flies but if you don't know how to cast you won't catch a fish. Even if you can cast, without studying the streambed and looking for other important indicators you'll only end up with tired arms and sore feet.
The Gartner Group elucidates Java's main problem that no technology can solve: "A severe shortage of skilled Java developers is placing new Java projects in jeopardy in more than 30% of AD organizations making a transition to the new language and platform" (Application Development and Management Strategies research note, 28 May 1998). It points out that it really doesn't make any difference if you are a COBOL, VisualBasic or C++ developer. It doesn't matter, per se, that you've been fishing before and know how to cast with tackle and worms - distributed object computing, or fly-fishing, is a completely different art.
Like fly-fishing, you can't simply read a book and walk out to the stream an expert. To really learn and excel you must work with another person who knows the stream and the craft. I've always pushed back on the notion of software engineering. It's not that I don't believe in the usefulness of modeling tools, good documentation and coding practices; it's more that I don't think you can learn all you need to know about programming by simply reading a book and learning the standard templates. These are the things that come with experience and, in effect, are best passed down through an "oral tradition."
While the technological advances in Java will make it easier to do things like create distributed applications, the developer still has to think through the application architecture. A good example, ease of use, that many have seen leading to poor results is in the area of threads. Creating multithreaded applications is a snap with Java. However, spawning threads without thought will lead to failure, and new issues like transactional integrity and non-uniform VM implementations will arise.
Fortunately, the road we travel is one that's been traveled before. Distributed CORBA-based Smalltalk systems are running major business systems around the world. CORBA technologies have evolved through several iterations to become portable and cover core architecture, design and base business objects. There are good books on fundamental patterns, tools that help you understand object relationships and full-spectrum training to build your core techniques. The waters have been fished before and there are great mentors who can amplify this book knowledge with the wisdom of experience.
Now is a great time to gain experience and learn to read the waters. While mainstream IS fixes and tests Y2K problems, you can learn good distributed architecture. Find a guide who knows the waters and has seen the flies that work and the ones that don't. Then your tacklebox will not only be filled with great-looking tools, but you'll be able to apply them with skill - and you'll have entered a higher programming plane.
About the Author
Thomas Murphy is the director of marketing for ObjectShare. He's acted as the product manager for ObjectShare's PARTS for Java and Visual
Smalltalk product lines. You can e-mail him at