First of all thank you to the people who post on this board and help out with this certification.
Got my pass mark today from Oracle.
I used serveral books on Swing, Multithreading and Sockets but the most useful is Monkhouse et al.
Sockets were used for performance reasons and it turned out to be relatively few lines of code. I did not make the Data class a singleton, each thread has its own instance of Data and its own file handle to the raf. This means that I did not have to synchronize the delete and update methods. Different records can be locked and updated or deleted simultaneously which improves performance.
After submission I did find one potential issue with the double checked locking that I had used in the SavedProperties class in that I did not make the instance volatile. This can result in out-of-order writes because of the Java memory model.