Originally posted by Wojtek Ciechanowski:
What you recommend for me?
Which is easier to understand and better in terms of future job searching?
You asked some conflicting questions. First, read what follows as being my opinion...your mileage will vary.
If you are future-thinking, I would recommend getting to know
JSF. I'm not a huge JSF fan, but I have a gut feeling that it's the "next big thing". I am a big fan of Tapestry and I think it might be worth learning as well.
Does that mean that you shouldn't learn Spring? Let me clear something up that a lot of people don't understand. The largest portion of Spring has nothing to do with the web or web frameworks. It's an IoC/AOP container. Sure, it has it's own MVC sub-framework, but the real benefit of learning Spring is to reap the benefits of IoC and AOP (especially through declarative transactions).
Once you've started using Spring in your business layer, you have many choices for web frameworks. You can use Spring MVC which is very similar to Struts, but a bit more versatile (and with that versatility comes a bit of complexity, but it's really not as complex as most people make it out to be). You can also easily use Struts, WebWork/XWork, JSF, or Tapestry to front your applications. My personal favorite (right now) is Tapestry, but I've also thrown Spring MVC and Struts at the front of several of my applications.
So to sum up...I would
strongly recommend that you learn Spring, but keeping in mind that it's more than a web framework. It will benefit you regardless of which web framework you choose. Then, for future-thinking, I'd check into JSF or Tapestry. Then again, for right-now-thinking, there are still a lot of Struts jobs out there, so it might behoove you to get to know Struts (and use Spring in your business layer).