rolandweber / Pityoulish

A collection of programming/debugging exercises to support a course on Distributed Systems.
Creative Commons Zero v1.0 Universal
7 stars 0 forks source link

Feedback: Java RMI 2018 #78

Closed rolandweber closed 4 years ago

rolandweber commented 5 years ago

Please provide your feedback in the comments.

The exercise took about 2:15 hours, including explanations and two breaks. Students could continue programming during the breaks, and many did. I also kept the server running afterwards for the remaining 30 minutes of the classroom session, while presenting mostly unrelated easy-listening topics. Timeline:

  1. ~15 min: API, Stubs, Registry: server registers, client looks up, client calls server
    JavaDocs of the Remote API and java.rmi.registry
  2. ~30 min + 15 min break: debugging session 1, goal is to fix the MessageBoard client
  3. ~10 min: exporting and registering callable objects, UnicastRemoteObject
  4. ~45 min + 15 min break: debugging session 1, goal is to fix the DirectMessage utility

Several students got in late due to public transportation problems. At the end of the first break, 4 of 14 had completed the MessageBoard part of the exercise. The others continued on that part during the second debugging session. At the end, more than half of the participants had at least registered an outlet on the server. I consider that a success, because the major hurdles have been overcome at that point. With this year's timeline, there's enough to do for the fast coders, while the slower ones have plenty of time to work on the first and more important MessageBoard part.

There was the usual set of problems: connected to the wrong network, not reading the comments in the code, registering an outlet pointing to localhost. Only few IDE-related problems at the beginning. I patrolled frequently to make sure nobody got stuck for too long.

Henceforth, I will consider reading the comments as a learning target, rather than a prerequisite skill.

From one Windows machine, the outlet could be successfully registered without setting the Java property for hostname or IP address. Java seems to become ever smarter about RMI.