I was also very confused with so many Java frameworks available. But the more you hear about frameworks, you have more confusion. If you are student and you have free time for testing and experiment, try to run some simple hello world app in each framework. To Java frameworks with similar functionality, some are popular than others [popular means the framework have many users]. Using popular frameworks, you have greater chance to receive supports from frameworks communities and may be easy to find a job with skills you gain during using frameworks.
From my experience, those following are popular:
- For bean management: Spring, de-factor standard
- For ORM: Hibernate
- For MVC: Webwork+Velocity (now Strut2), SpringMVC. I think webwork+velocity is the best combination. It is so simple to have a view with Velocity template.
For modular design: It is very important for you as a architect from the beginning seriously think of modular design. It helps to reduce complexity of your application, leverage concurrent development.
- maven module: maven also supports modular design but I feel this is so complex.
- osgi approach: according to what documented in osgi website and forum, I think this is worth a try. Publishing a module in osgi is no more than just registering an osgi service.