Hi guys, it is a pleasure to share my experience about passing the
SCJD Certification.
Finally I got the result on December 17 2008. I was waiting since November 2008. After taking the essay exam, I always checked for the result every 2 hours fearing about the automatic fail.
Before I share about my result, let me share my brief overview on my certification road:
On July 19 2007, I failed
SCJA. It was a long story.
On August 27 2007, I passed
SCJP 5.0. Answering the question, "Do you know about the
Java Programming Language ?". I said, "YES I CAN!!!"
On January 4 2008, I passed SCJA. Revenge was just the beginning.
On December 17 2008, I passed SCJD. Answering the question, "You know about the language, can you build something with it ?". I said once again, "YES I CAN!!!"
I passed SCJD with the following score :
General Con: 100 88
Documentation: 70 70
OOD: 30 30
GUI: 40 27
Locking: 80 80
Data Store: 40 40
Network Server: 40 30
Total: 400 365
I don't really care about the score. Passing is passing right ? When I get the certificate, I'll make the bigger duplicate and put that duplicate into the frame. The big frame.
Here's the major steps for what I did when I was working on the assignment :
- Find out how to read the database scheme
- Implement the interface provided by Sun
- Implement the networking layer
- Implement the GUI layer
- Create the application entry point.
Of course in the middle of development, I tested all the methods. I tested it without
JUnit. I
test it in my own way. I also documented my choices.
Database Layer
To implement the database layer I created my own interface that extends the DBMain interface and provide 2 additional methods to book room and to search hotel and location. I also used Facade
pattern in one class that delegates to 2 behind-the-scene classes. To read the database file back and forward, I used RandomAccessFile. For synchronizing, I used ReentrantLock.
Network Layer
I used plain socket (maybe I'm the one who like to burden myself). I develop the multithreading server. To process client's request, I created one method with huge switch statement. It was a complex protocol. I recommend to not use plain socket. Use RMI instead and your life will be easier. I created 7 classes just to provide networking solution.
GUI Layer
I created simple GUI, it is too simple so I got 13 points deduction. I create 2 JTextField with the companion JLabel to input the hotel name and the hotel location. I also created 2 JButton to book the room and search the room.
Locking mechanism
I used a class which has Map<Integer,
Thread> because I used plain socket. Don't use this Map<Integer, Thread> if you want to develop with RMI solution.
I hope my thread can help you with your own assignment. Don't hesitate to ask me if you get a problem with your assignment as I always check the SCJD forum frequently.
I'd like to thanks to the following : (the order is not matter)
- Apress who published such a good book (SCJD Exam with J2SE)
- Andrew Monkhouse and friends who write the book (SCJD Exam with J2SE)
- Paul Anil
- Roberto Perillo
- And all of the members of this forum who helped me out.
Thanks for reading such a long thread. Remember, passing the certification needs a lot of determination and effort. Intelligence has a little thing to do with it.
That's all. For the participants who still work on the assignment, good luck !!!
Jeffry Kristianto Yanuar (Java Instructor)
SCJP 5.0, SCJA, SCJD (UrlyBird 1.3.2)