In previous chapters, we discussed how to design and build servers. In this chapter, we’ll finish the application off by building the launch code and assembling a simple client. In addition, we’ll motivate much of the second section of this book by talking about the server lifecycle. By the end of this chapter, you will have seen all the steps involved in designing and building a distributed application using RMI and will be ready to start thinking about how to make your application scale.
There is an apparent paradox here. The server code, while difficult to think through and frequently tricky to implement, is often less than half of the total application. The client code, which I relegate to Section 9.4, is a large and complex part of the application.
There are two reasons for this apparently confusing situation. The first is that we have, to some extent, already discussed client-side issues when we discussed how to choose servers and design interfaces. A large percentage of that discussion was motivated by client-side concerns: what people will do with the application and how to design servers that support the intended uses.
The second reason is quite simply that most of the
client code doesn’t involve the distributed parts
of the application. While getting an instance of
JTable to refresh properly is a difficult task, and people who write a good user interface are more than worthy of respect, this book is long enough without adding a guide ...