Originally posted on
SUN, MAY 6, 2007 AT 18:36
This past week has been one of choices. I had to sit down and decide what technologies to use in a project that is well underway. The project required a number of services:
- Data access
- Security
- Presentation layer
Before I could really settle on frameworks and specific technologies, I need to select a language. I wanted to use open source technologies, and of course, I didn't want to learn a new language during this particular project. For me, this narrowed the field to one of:
Another goal was to use a framework that provided a lot of functionality, since I don't want to have to roll my own for things like data access and security. I'm sure there are PHP frameworks that provide all or most of the functionality I expect, but I haven't used any of them, so maybe next time. Ruby has great data access and data modeling thanks to ActiveRecord, but I still feel like a bit of a newb with other Rails and Ruby technologies. This leads me to J2EE, which gives me options including:
I find Spring MVC easier to use than Struts, and I was recently involved in a project using Spring, so I've chosen Spring MVC + JSTL. I am also interested in looking into the idea of using Spring's XSTLView as a REST-style web service.
For the presentation layer, I really vacillated between using Flex and using XHTML+CSS+Javascript. I finally decided to go the XHTML route because I want to aim for a completely zero-client presentation. I am very tempted to use SVG, but I have concerns around portability: Adobe Viewer in some browsers, native SVG in other browsers. As well, I doubt that a majority of my users will already have the Adobe SVG Viewer installed, or alternately that they can be persuaded to use only Firefox or Safari.
I need to provide some charts for data visualization, I will use, as a starting point at least,
PlotKit. Again, this is motivated by the desire for zero-client. This also has the added advantage of doing some negotiation between choosing between SVG and HTML Canvas depending on browser and/or object detection.
Data access was pretty easy given choice of Spring. I will, for this project forego Hibernate and just use the JDBC classes in the Spring framework since they are nearly as easy to use most of the time, and considerably easier to use some of the time. For the persistence layer, I will be supporting the usual suspects, MySQL, Oracle, MS SQL and PostgreSQL - in that order.
For security, I've selected
Acegi Security, since it works well with Spring, is flexible, let's me change my mind and doesn't mangle my code. In less than four hours of reading and typing, I was able to integrate pretty sophisticated security that I probably won't have to mess with until much later in the development cycle.