I'm new to TheServerSide.com and relatively new to J2EE. I've written one J2EE app at a previous job (actually, it was working at Sun of all places :-) ). However it was a learn-as-you-go type project and I definitely made many design blunders along the way.
I graduated from college with a CS degree 6 months ago, and I'm 22. I have decided on J2EE architect/developer as a career path long-term.
My main question is, what sorts of techniques did some of you experts use to learn J2EE effectively? How do you decide which technologies are the most important to learn?
Sometimes I get overwhelmed with this stuff. I sometimes fotget that I'm still very young and have plenty of time to learn this stuff.
Any input is appreciated....
Here is what I would advise.
First, decide what kind of client technology you are interesting in building: web clients or GUI clients. The two have very different development paradigms. Given that you are interested in J2EE, I am guessing you want to do web development.
Get some good books on Java web development. My two favorites are Core Java Servlets and JSP and More Java Servlets and JSP, by Marty Hall. These books have a pretty good coverage of the essentials. Get a copy of the reference implementation (Tomcat) and work on some code.
Next, decide which, if any, web framework you are interested in using. Struts is the oldest and most popular, but is definitely showing its age. You might look at Webworks and Tapestry as well. Many organizations use home grown frameworks, so you may not get a choice here.
As for the other J2EE standards ... it depends on what you think you might be working. JDBC and XML are probably a given; EJB, JMS and Web Services are more iffy (it depends on your project). The reality is that most projects are "learn as you go", and it is difficult in advance to predict which technologies will be useful.
Don't neglect books on general development issues. The big four are Source Code Control (CVS), Unit Testing (Test Driven Development by Kent Beck is good), Automated Builds (Ant) and Software Patterns (I like Patterns of Enterprise Application Architecture by Martin Fowler). Pragmatic Programmer by by Andrew Hunt and David Thomas is a good overview text on these kinds of issues.
Don't feel compelled to learn everything at once. Start with Servlets/JSP (and maybe Pragmatic Programmer) and pick up the other stuff as they seem important. The best way to learn to code is to write the code, so pick a mini-project (a blogger web app is good) and just do it.