I am not a fan of struts. It is at best… well, after dumping on the JSF love fest maybe I shouldn’t alienate everyone. So I’ll pass on the struts critique.
What I’m really not a fan of is having to re-learn and re-work our architecture everytime there is a new ‘flavor of the month’ framework or a new version ‘much improved’ that I must incorporate. Keeping up with the hot, new and improved frameworks is time consuming and expensive. We are beginning to turn the corner from library sharing being a benefit, to being a burden. Struts, a large, comprehensive framework led to JSF, an abstracted confusing little framework that addressed many of the so-called the weaknesses of struts. But since it didn’t work with struts we were in a one step forward, two steps back scenario. It still puzzles me how the same person could have written both without hooking them together. It also points out how disjointed this community is on how best to grow. Enter Spring, which by all accounts is great. I mean who doesn’t want dependency injection? You can add it to the stack of all of the other technologies you are probably using to make up for whichever framework you’ve adopted. What about ORM and persistence, you’ve got to have a tool for that right?
So, how many people in your company really understand the stack of technologies you have brought in to make your job easier and you more productive. One? Two? Are they the ones doing the work daily? Has the project turn-around time improved? Probably not. Unless you work at technology company that bills expertise by the hour, I bet you’re not really seeing the value you thought would be there when you adopted J2EE.
I work in an insurance company where my users care more about turning around projects, whether we have implemented the latest craze. The typical programmer does not have the time or desire to stay up to speed on the myriad of technologies that potentially could be placed on our stack. They don’t know what dependency injection is and don’t care. If it is easy for them to understand and helps turn out product faster, it is good. Otherwise, it’s a hassle. This is a flat rejection of cool, sophisticated implementations of patterns that add little or no value to the typical web page. If 95% of your pages do not have a Form, then centering your development around a framework that focuses on forms, but provides little else, makes no sense.
So, what do I like? J2EE. Yup, plan old J2EE… let me explain.
I guess I’m questioning whether, in the end, buying into all of the hoopla over server side frameworks really helps. I agree that some of it is pretty cool, but the question of value seems questionable. From what I’ve seen the value of each tool is divided by each tool on the stack, not enhanced; and the complexity of the environment is squared by each tool added. That home grown MVC J2EE framework that only does what I need and is simple enough for anyone is looking pretty darn good…