Some reader favorites:
EJB fundamentals and session beans
Create a scrollable virtual desktop in Swing
Wizard API updated!
Tim Boudreau has released a new version of the Swing Wizard library (version 0.997) that fixes the WizardException bug reported in JavaWorld's recent Open Source Java Project profile. The article's examples have been reworked to test out the new, improved WizardException. Thanks, Tim, for this helpful fix!
Open Source Java Projects: The Wizard API
This little universe, of course, isn't new -- it's been accomplished in many ways in many different situations. But at some point we must ask ourselves if there is a more overarching way to solve this recurring problem.
This article describes just such a solution -- one I've built using Java's elegant Remote Method Invocation (RMI). The Java code required to build the necessary infrastructure for this kind of software is remarkably minimal, and the result is extremely flexible.
While writing about this software problem or trying to explain it in the classroom or to my clients, I've found that I constantly use the phrase "objects-of-interest" in order to describe the thing -- whatever it might be -- that a given group of people was working on. Then it occurred to me that these things could simply be called subjects instead, though I knew that this might be a bit of a daring wordplay. (Think: server plus object equals: sobject, or subject.)
If we want to build a sensible environment for a group of people to interact with a group of subjects, there are a number of requirements:
Remote method invocation provides a way to build wormholes to join the object galaxies contained in different virtual machines. Effectively, RMI creates special reference "wires" that extend from one galaxy to another, and tries to makes sure that the method-call "sparks" along these wires visit the other galaxy and return intact. There are two important differences between local method calls and RMI: RMI sparks happen in slow motion compared to local method-call sparks, and the intergalactic wires can sometimes go down.
Developers often choose to have RMI's remote objects reside exclusively on a machine they call the server, with their counterpart proxies on the client machine. This is fine until you need to allow the server to initiate an event -- for instance, in collaborative software in which one client's updates must be broadcast to all the other clients. In this context, the client must also play the role of server in that it must be ready to receive updates at any time.
It's time to rethink the ideas of client and server. The key difference between server and client objects in a collaborative system is their one-to-many relationship. The relationship can be nicely described as a fanning out of connections between the singular subject and the multiple remote subjects, which are the things that the people see.
Free Download - 5 Minute Product Review. When slow equals Off: Manage the complexity of Web applications - Symphoniq
![]()
Free Download - 5 Minute Product Review. Realize the benefits of real user monitoring in less than an hour. - Symphoniq