I would take the exam sooner rather than later. Better to practice Java on the exam so that you can hit the ground running in a future Java job where people's impressions of your coding skills actually matter. Don't toodle around in a real work situation to beef up an exam score that no one really cares about. (All they care is that you passed.) Certifications get your foot in the door, but remember that nothing is better for your career than a good reference or word of mouth.
Also, if you are a non-working student, you have the luxury of time which you often don't have in a real work setting where hustle counts.
I would say some practical experience definitely helps you pass the assignment. However, it's not necessary in every case. If you have done a few school assignments/projects in Java, you should be ready for SCJD. It would be even better if you have learned Model-View-Controller design patter in class.
I am a 4th-year university student and just passed SCJD. My experience tells me that as long as someone is famaliar with Java basics, this person should be able to pick up new knowledge and skills quickly. To help you get started, I suggest studying synchronization and sockets concepts, not just how to do them in Java, but the general concepts. Doing SCJD assignment is a rewarding experience. What you learn from the process will be your assets forever. If you are not too busy with school, pass it as early as possible.
Hope this helps.
Kang Wang SCJP, SCWCD, SCJD
Kang Wang<br />SCJP, SCWCD, SCJD (great thanks to the ranchers)