• Doing java dev for more than 10 years, I think this is a valid question. Java is not about the core J2SE anymore, I was fortunate that java evolved along with my career, so i picked things up as they came to market. Further google is excellent if you know what you are looking for, however in this case, the author does not even know what he is looking for.
Nowto answer the question.
First read Just Java by Peter van der Linden (if I spelled the name correct). Excellent book.
Get Eclipse IDE and learn jdbc, JSP/servlets, and struts preferable in that order. Except for struts Just Java should give you a primer on each, struts has a decent website with tutorials.
I would skip EJB/J2EE for now and jump to spring and later hibernate. Youwill find great tutorials on their websites.
Somewhere along the process also introduce yourself to JNDI, particularly JNDI when it talks to LDAP, this is a given when u are coding an enterprise app.
At this point you would know enough to do a decent job as a java developer, more importantly you would know what to do next.
This is what I can think of on labour day longweekend :)
• As a Java developer for nigh on ten years now, and someone who painfully learned how to program database connections by hand, then use orms like Hibernate, I might caution against Struts (though the rest of your order-of-learning is excellent). Struts was definitely in my path of learning, but I am not sure what it offers these days that isn't done more comprehensively - and to mymind, more cleanly - with Spring.
Of course, there are a lot of legacy systems these days built on Struts - for good reason. So if you're looking to work on older code, it's not a bad thing. But if you're planning a career with stuff that is from scratch, I think that Spring forces one to code in a better manner than nearly any other framework out there.
It may be, of course, that I'mjust in love with inversion of control - which I think is one of those things that, if you understand it, gives you a much better command of abstracted design.
One other thing I think is pretty cool is JavaBLACKbelt [javablackbelt.com], which has a pretty good, community developed set of quizzes that are useful for gauging your own command of the language.
• The language itself won'tbe a problem if you've done C and C++, nor should OO concepts. So the difficulty is with APIs - what is worth it, and what isn't.
In terms of Java APIs (core or otherwise), I'd learn in roughly this order:
* Servlets & JSPs then Struts, Tiles, Spring, etc
* JDBC, then Hibernate
* Axis (web services) and ApacheHTTPClient
You don't need to learn them off by heart - I've seen people advance very slowly because they're trying to do that. It is enough to know what is what, so that when you have a problem, you know there is a solution, and where it is.
In terms of interfaces, I wouldn't bother with Swing or AWT really, until you need them. SWT ain't too bad (Eclipse uses it, and it's cross platformenough - Windows, Linux, Mac, Pocket PC, ...). Maybe you could be fancy and learn Fenggui instead! Then you could learn JOGL and write 3D games and the like.
Oh, and learn how to do Java on the command line first, use ANT to build and compile and deploy, then try Eclipse or NetBeans as an IDE. This way you'll avoid all the niceties that the IDE gives you that inhibits your initial learning.I wouldn't bother with half of the enterprise wank, like Enterprise Beans and all that.
• I've helped out with interviews where I work, and here's some of what we look for:
o Experience - not just in Java, but also in the industry.
o Core Java, Essential J2EE and Web Frameworks - understanding of core Java, its querks (reference checks: .equals() verses == for...