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)
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)
Software testing while one of the most important tasks done in a development
project is often misunderstood and abused by everyone from programmers and
managers to testers.
Wikipedia calls testing "an empirical investigation conducted to provide
stakeholders with information about the quality of the product or service
under testing, with respect to the context in which it is intended to ... (more)
Doing network I/O on the user interface (UI) thread is bad. Most developers
know that and can tell you why; unfortunately, it's still done. At this
year's JavaOne, one of the keynote JavaFX demos bombed because the network
was slow, something that would be forgivable had the entire application's UI
not frozen, which required it to be restarted, only to trip up again a few
minutes later.
... (more)
A programming API represents a documented contract between a function that
provides some kind of computing service and those who wish to use it. In
Java, once an API is used there is a physical contract between the two that
the compiler and JVM enforce. If at some point in the future the author of
the API wishes to make changes, they are limited in scope; if the author
renames methods or... (more)