I made another bold because students have tried to give me distributed computing labs that run on a local machine with localhost. This is not OK. None of the issues that arise with real distributed computing happen if the machine is using the same classloader, etc. Hence this lab must be set up to run on two machines. I will test it with one part on Unix and the other on a Windows machine. Make sure that your code works in such a scenerio.
So, the last lab must be something with distributed computing. It can be either
Now, my guess is that most of you want to take the easy way out and do a straight forward, simple RMI program.
Now then, this makes the lab hard to give specs for since its main content (and/or lesson) is not necessarily the complexity of the remote program (which you can adapt from your previous work) but more the issues of distributed computing. Don't forget about the paper on distributed computing and how such programming differs from using a single address space.
As usual, you need to write an explicit and clear ReadMe. It is also required that the grader should not have to edit anything in your code in order to make it work. See this page for more on how to submit.
So, in addition to the regular information submitted: ADT's, OM's, readme's, I also want one more file. A WhatILearned.html or .txt file (access to such a page on a website) wherein you indicate the information you newly acquired by doing this distributed objects lab. It is painfully obvious that quite often what one learns is not seen in the program because you learned what not to do.
This page should include problems that arose as well as information on design thoughts explicitly relevant to distributed computing. I know that some of you are having problems trying to run your stuff on different machines.
You should mention the problems and how you solved them. For a distributed computing example, did you use the factory design pattern, how was "cross-traffic" minimalized, how did you decide what methods or objects should be exported to (or imported from) remote machines, etc.
Important: If your lab is rather "simple" and did not use any distributed ideas, then you should consider in this document
what would happen to your tool if you did make it more complex. Suppose
that you added some features, would your design still work? Would it be a network hog? The idea is that I want to see that you thought about
distributed issues and I want to explicitly see your thoughts. If the program you write was so simple that there were no distributed issues, then
think about a program that would need to consider such issues and discuss them!
Also, please feel free to share what you are learning as you learn it...just as this lab "shares" work over machines, it would be nice if while implementing this you share comments and questions with the class.
OK, don't forget: What I Learned using Distributed Objects
Not a huge document...just an informative file like a readme.
Advanced Java Lab 4: RMI
Worth 10 points as follows:
Design and Object Model: 1 point
Documentation (inline and ADT info): 1 point
Readme: 1.5 points
WhatILearned: 1.5 point
Remote Access (set up to work in a distributed environment -
without me changing things): 3 points
Implementation: 2 points