I am going to be building a J2EE web app as a sort of continuing education project for myself when I've finished my SCWCD. My goal is to build a relatively simple app, but still use MVC model 2 and industry standard tools and frameworks so that I gain experience with them. It may also serve as a useful testbed for transitioning to the "next big framework" as time passes. I am a J2EE developer at work but am constrained by the approved technology that the customer uses.
So I would like the advice of the JavaRanch community. What architectural decisions are are appropriate if my goals are to: - Get a deeper knowledge of all aspects of developing and deploying a J2EE web app - Learn the technologies that will be most useful/marketable in the next 2-3 years - Not spend any money beyond a J2EE/JSP hosting company
Here is my starting point, although I may not use all of these to start with. I would be VERY interested in your recommendations including what areas I have left out and how you would disagree with my choices:
If your goal is to learn JSF, then by all means. If your goal is to learn anything other than JSF, I'd advise against it. You won't learn much about the underlying technology by relying on such a framework -- especially one that is so niche and contrary to the way that everything else works.
I'd say something similar about frameworks such as Struts and Spring MVC. If your specific goal is to learn these framwroks, then fine. Otherwise, you'll learn a lot more by writing your own simple and light-weight Front Controller implementation.
Actually, for logging I'd use Jakarta Commons Logging which can be configured to use either of Log4J or java.util.logging. The latter seems to be pretty much universally loathed among most web app developers that I know.
subject: What technologies should I use for new web app?