I graduated in December in Computer Science and have acquired a Software Engineering position. I have been banging my head up against the wall for 2 months trying to learn Hibernate, Spring and everything else that has been thrown at me in my first project. Prior to accepting this job I had experience only in programming. Application architecture and engineering tools have been very difficult to grasp. I was hoping that someone would be able to tell me a good place to start understanding how Java based web applications work. There are so many components and I can't figure out how everything goes together. So, my questions are.
Start with the basics.
By this I mean just servlets and a Web container, probably Tomcat. You should understand the servlet lifecycle no matter what frameworks you happen to throw on it afterwards.
Next, if you wish, throw JSPs into the mix. JSPs are just glorified servlets anyway (they're compiled into servlet code and then into bytecode).
After that add an MVC framework. Years ago that used to be Struts (1). Nowadays it's a little more difficult. I like Spring MVC but that is somewhat predicated on Spring too. And I think you'd be better off (for now) bypassing more Ajaxy type frameworks (like Tapestry or Wicket) or the more end to end solutions (like Seam) as overcmpolicating the issue. The point you're trying to comprehend here is just what the MVC concept is, how it works and why you're doing it.
After that add Spring. The point here is to learn the principle of Dependency Injection / Inversion of Control (IoC). This is an extremely important concept in modern Java development and software development in general.
The above actually follows how these technologies evolved, in the order they evolved. They did so for a reason and following that path will help you understand that.
Don't listen to anyone who tells you that you don't need to understand low level concepts and technologies like the pure servlet API. It's nonsense.
I think Mike Gunderloy's book Coder to Developer may be worth a look.
Regarding learning a new technology, there really is no better way than to just use it and practice with it as much as you can.
My way of learning is to build something on my own. I usually pick something trivial that can be implemented quickly and then using the enterprise technology XYZ of the moment so that I can poke around and learn the particulars. In fact, I'm doing this very thing as I'm trying to learn ASP.NET MVC.
By the time you are an expert at your tools and the languages/tech that you are using, a new crop of kids will be using newer better tools and the languages/tech. You will then have to learn those to get a job. So get used to this process
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With