The day before I left for vacation, I received the wonderful news on June 14th in my email from Oracle that not only did I pass the
SCJD, but scored a perfect 400 points!
I was sooo paranoid that I might have missed a detail that would result in an automatic failure; guess my meticulousness paid off! I admit I can be a little OCD, and reviewed my submission multiple times over a period of a couple of weeks before I sent it to Oracle, and went over my entire assignment with a fine toothed comb after I completed it in a span of 10 months.
I whole heartedly thank everyone responsible for this site and all the kind helpful souls on these forums with helping me pass this thing with flying colors! Especially the
JUnit tests and
Ant scripts posted here, invaluable tools.
I was assigned URLyBird 1.2.2. I worked on it on and off over 10 months, and I honestly can't say how many hours I spent on it, maybe around 120 hours or so. I first tackled the database file and Data class, implementing all the required methods in the interface. Working my way out, I chose RMI, and developed my server, using a business delegate and service locator
patterns to decouple the server from the client to run either locally in standalone mode or remotely. I lastly worked on the GUI, which probably took me the longest as I had very little experience with Swing, and am spoiled from using GUI builders. I admit though, that was probably the funnest part of the assignment once I got the hang of it. My biggest learning curve was the layout managers. Then I tidied everything up, wrote my choices and user documentation (as plain text), tested the crap out of it, held my breathe while I sent it off to Oracle, took the essay exam, and exhaled once I received my results about 5 weeks later, yay!
Despite quite a lot of personal sacrifice doing this with a family while working more than full time on a new development project, it was a great learning experience, and I truly believe it helps sharpen any
Java developer's abilities as the assignment covers important areas such as multithreading and design patterns.