Thursday, June 18, 2009

TimeTrak: GWT+Spring+Hibernate = Awesome

I'm starting a new series about developing interactive web applications using the Google Web Toolkit (GWT), Spring MVC, and the Hibernate persistence libraries. When I started researching these technologies, I could not find adequate and straighforward information about this combination: at best, books I considered from local bookstores were outdated by 2 years or more!
So I've been digging around on my own, looking at forums, and figuring out things myself.

The series will consider all issues involved in developing a web application the way I do it, which may be different from best practices and other industry standards. This is simply how it works for me currently. The goal is to share knowledge and lessons learned. I am still learning these technologies myself, but I know this information will be useful to someone out there just getting started.

You will need: pretty good Java programming skills, good web design skills (for the presentation layer, that is, HTML/CSS), a mind of a software developer (to design applications and how the various components interact), an understanding of relational database concepts (especially object-oriented models - ORM), and good IDE (I use Eclipse a lot, but I'll write the segments for using NetBeans for the benefit of their documentation project), and lots of time. This will be an AJAX application, but you surprisingly don't need Javascript and a whole lot of XML skills to get it working.

The application I will build in this series is a solution to a current need of mine: it'll be a small scale project management application suitable for contract software developers to manage their tasks, invoices, and clients. That's it! Developers can set up projects and define tasks under the projects, give access to clients, and bill clients through the system. Clients can review projects and their progress, view status reports, get a daily email of work done on their projects, and pay their invoices online. Look ma, no papers.
Now I know there might be some super duper commercial product on the market that does these things, but the goal here is to learn to write one myself using these technologies. The whole project is built in Java. I'm calling this project TimeTrak, after an existing project I already have with the same name. This is like a 2.0 version of it.