The right way (tm)

Recently I've decided to pick a development project that I started on last year but never finished, or even came close to finishing for that matter. It's basically a web application with a database back-end which could be written in any language of my choosing, using any combination of frameworks that I like. To get a quick prototype I stuck to technologies that I was familiar with, which means a MySQL database accessed via Hibernate running a Glassfish+JSP front-end.

Now that I've got the initial prototype up and running on my local PC I am naturally looking for ways to do things better. As far as the database is concerned, I'm very unhappy about managing database connections and transactions myself in what becomes a fair amount of boilerplate code. On the View part of the app I haven't made any choices at all yet, so I have a lot to read up on. As my experience is mostly in designing the back-end, I found I was neglecting the front-end a lot, thinking that all the UI stuff will sort itself out later. It won't.

To make my life easier on the database side I decided to take a look at Spring. Spring should be able to help me to inject the database connection wherever I need it, and it contains nifty things (like annotations) to specify transactions in a cleaner way as well. That's the theory. In practice though, I spent one afternoon learning the basics of Spring, one evening getting an example application to run, and another afternoon to realize that Spring is so hopelessly complex that I should never even have considered it for a small-scale project like mine. Even now I'm still quite confused about what Spring is even supposed to do, as the docs repeatedly tell me I can use it for anything I like, or integrate it with third-party libraries. As for integrating it with Hibernate, I only found unclean methods that were based on an older version of Spring. Concluding that Spring wasn't worth the effort for me, I left it far behind. I'm not sure yet if I will look for an alternative, I might just stick with my own boilerplate code until the codebase grows too large.

I'm not very good at web page design. Creating small-scale sites is no problem at all, and I know my way around CSS and HTML fine. Even Javascript and AJAX is no problem, but I've never actually used all these technologies on a large-scale project. Even though that's not relevant for my personal project, I'd like to learn some new things while I'm at it, so I browsed the net for some better way of doing the model-view-controller approach. It turns out there are a lot of better ways. A whole lot. So many in fact that I have no idea what to choose. Widgets, Facelets, Portlets, etc. etc.

I wanted to give the Google Web Toolkit a try after finding out that it was working together with Spring Roo. I already had the Spring IDE installed on my PC, so I thought it would be a piece of cake to experiment with it a bit. My enthusiasm was cut short by not being able to create a new project in the IDE because it kept crashing on me after clicking the Finish button. Normally this would not bother me much, but I had already spent an afternoon trying to get a very simple Spring tutorial to work and was thoroughly fed up with everything Spring-related. Mismatching versions of IDE, application server, documentation and examples left me in despair. No more Spring for me. Instead I'll focus on actually getting my project done.

Posted in Tech

Submit comment






After approval your comment will be visible publicly. Your email will never be visible publicly.