Last week, I passed the Sun Microsystem's SCJP certification for Java 6. This certification is a pre-requisite for many other higher-level Java certifications.
This exam is one of the trickiest I've ever passed, so just one piece of advice: don't go unprepared.
It actually evaluates your skill as a developer rather than simply your knowledge of the language or tools. Many of the questions on the exam will hinge on subtleties of syntax. You will need to have a thorough knowledge of the Java language in order to succeed. Furthermore, you have to give up all the checks done by your favorite IDE and apply the simple rule "When the compiler's not happy, ain't nobody happy" as in almost every question, possible answers are "does the code sniplet compile?" and "does the code sniplet raise an exception at runtime?".
Anyway, this was a good opportunity to fully understand powerful mechanisms I was not using that much before, like Generics, Inner classes etc.
For exam preparation, I would recommand the "Sun Certified Programmer for Java 6 study Guide" by Kathy Sierra and Bert Bates (Mc Graw Hill)