Behind the Scene: Development Environment

July 13th, 2007 by Jeremy Chone

As discussed in our Application Platform and Server(s) articles, our runtime is based on Java, MySQL and Linux; but what, you may ask, are we using to build this runtime?

Here is a quick peek at our development environment:

IDE: Eclipse 3.3 with AJDT 1.5, Mylyn, and soon Aptana.

AJDT 1.5 is an Eclipse extension to support AspectJ programming. It is a very well done eclipse extension based on the AspectJ library, which makes Aspect programming almost as if it were part of the Java language. Thankfully, the bug we had encountered in Eclipse 3.2/AJDT 1.4 has been solved.

We have not started using Mylyn yet, but are planning to use it since we are using Trac as our issue-tracking system.

We are also planning to use Aptana as soon as it officially supports Eclipse 3.3, although the default Eclipse 3.3 HTML/CSS is pretty good.

Source Control: Subversion, TortoiseSVN

Subversion is probably a no-brainer as a free source control. Subversion http support (and especially Apache integration) makes secure remote access configuration a really easy step.

We are big fans of the TortoiseSVN Windows extension, which makes Subversion accessible to almost any computer user. This is one of the reasons that we decided to use Subversion as our content-management back-office tool (article about our back-office tools coming soon).

Bug Tracking, Wiki: Trac.

Life before Trac was complex and fragmented. You had to look for a Bug System, a task management system, a Wiki, and eventually a Source Control web front-end. Trac took the approach of offering a simple integrated approach for bug tracking, collaborative editing (i.e. Wiki), and web access to source control. Trac is also easily extensible, which is allowing us to tailor it exactly to our needs. A simple customization can sometimes make a big difference!

Anyway, big thanks to the Trac team for their approach and execution. Looking forward to the next version.

Build System: Ant and CruiseControl

Like any Java developer, we are using Ant to build our application. Its integration with Eclipse and Tomcat is just what we need. We are also planning to use CruiseControl as a release management tool.

Testing Framework: JUnit 4

We are using JUnit 4 for our unit test. The Fixtures (i.e. @Before/@After) features have allowed us to build a simple and efficient test framework for our application. In short, we are using @BeforeClass to create the application context, and @After to clean the database.

Advice needed: While we are comfortable with our JUnit choice for unit testing, we are not sure about what we should use for our HTML/HTTP testing. The httpUnit project seems to have been put on hold. Any advice would be appreciated.

User Interface Design: Adobe Photoshop CS3, Flash CS3

If you can afford them, these are just the best tools to build your user interface assets and screen mockups. We are using Photoshop CS3 to design the main screens and graphic assets, and Flash CS3 to build screen flows for early User Interface testing. We might use Flash/Flex Builder in the future to build some application components.

Disclaimer: I once worked at Adobe as Director of Product Management for Flex and ColdFusion. So, I might be a little bit bias. Nevertheless, Photoshop has always been among my top three favorite desktop applications (along with Excel and Eclipse).

Leave a Reply