All the development I’ve done to date for Procinity has made use of Struts 2, Freemarker for templating, Hibernate for persistence, and Spring for dependency injection. I’m really liking the way all this hangs together. Some of the plus points, in my view:
- Unit testing is a breeze. Using a dependency injection framework like Spring makes testing the units as true units a pleasure.
- The code naturally separates nicely along MVC lines.
- The code is genuinely easy to maintain. I can set it aside for weeks, forget all about it, and quickly pick up where I left off when I return. I wish I could say the same about what I’m doing in J2ME.
Some things I’m not so sure about:
- Hibernate occassionally uses a few more queries than I would if I were putting together the same queries by hand.
- Between Struts 2 and Spring, I occassionally feel like I’m up to my eyeballs in XML configuration.
- Struts 2 does not seem geared towards RESTful URLs. I am using the SmartURLs plugin to avoid “.action” suffixes and the like, but still, framing URLs as actions like Struts 2 does seems contrary to the resource-oriented approach of REST.