Excellent question! This is a good question for a lot of people new to Java, as well as most recent college graduates.
The short answer is, learn the following:
1) OO skills. Learn good programming techniques, whether its Java, or C++, or whatever. Good programming skills are useful no matter what types of applications you work on.
2) Learn project management. This doesn't mean learn to be a project manager; rather learn about what's involved. All too often programmers only know how to program, and don't understand the larger context in which they work.
3) Learn meta-topics. This relates to issues 1 and 2. Some useful things include: Design
Patterns, UML, QA processes, debugging skills.
4) Technique. Understand Java. That doesn't mean learn the APIs, it means understand how it works. What Java is good at, where it fails. Read some books on Java performance.
5) Java APIs and issues. Only after you've begun to explore the first 4 subjects should you bother with specific Java APIs and topics, such as threading, EJBs, J2ME, Servlets, etc. If you have good skills from the above, learning any of these should be easy.
6) Learn related technologies, e.g. XML
For the most part, I think certification is worthless (see my other posts in this forum).
Try to focus on general OO and programming skills, that's the mark of a good programmer, not whether he's used some API. The best ones at my company learn API sets within a week, and have a good sense of how to use them within a month. How? Because they understand OO, so they can understand APIs from more than just a mechanical standpoint.
I'm going to be giving at talk at MIT in late January on this topic. I should have a website up with notes and links. If you email me then, I can give you more specific information.
--Mark
hershey@vaultus.com