Java serialization was initially used to support remote method invocation
(RMI), allowing argument objects to be passed between two virtual machines.
RMI works best when the two VMs contain compatible versions of the class
being transmitted, and can reliably transmit a binary representation of the
object based on its internal state. When an object is serialized, it must
also serialize the objects to which its fields refer - resulting in what is
commonly called an object graph of connected components. Although the
transient keyword can be used to control the extent to which the
serialization process penetrates the object graph, this level of control is
seldom enough.
Many have tried to use Java's serialization to achieve the so-called
"long-term persistence" of data - wh... (more)
There are a number of esteemed contests for the greatest and fastest software
developers among us - events where we can pit our coding prowess against
fellow brainiacs and like-minded techies. I think it's high time we had an
alternative set of awards, suited not to aspiring budding Turing machine
engineers, but rooted more in the humdrum real, rather than artificial
academic, world.
Th... (more)
The first part of this article (JDJ, Vol. 8, issue 4) introduced the Standard
Widget Toolkit (SWT), and showed how graphical user interfaces can be created
using some of the basic widgets found in SWT. In addition, layout classes
were described that allow widgets to be arbitrarily positioned and sized
within their parent.
In Part 2, we continue where the previous article left off, describ... (more)
User interface generation tools are something that has always been dear to my
heart. I've enjoyed using them and have been fortunate enough to work on
developing them. However, there's a huge tar pit to be avoided when using
them on projects that I see people heading towards over and over again.
The problem crops up when one tries to automatically generate GUIs from a
model. It doesn't ma... (more)
The task of a layout manager is to position and size each component based on
the size of its container. Each component has a preferred size that can be
used to determine the real estate it wishes to occupy, as well as a minimum
and maximum size. The preferred size is especially useful for components that
contain user-visible strings whose size can change between development and
deploymen... (more)