Developing the Jspresso framework : using IntelliJ IDEA

Developing the Jspresso framework (not a Jspresso based application, but the framework itself), raises big challenges in terms of tooling. We are not talking about design nor architecture nor build system, but about everyday work writing, runing, testing and debugging the framework internals and how IntelliJ IDEA helps in solving these challenges.

Jspresso mixes different languages, technologies, libraries, and we need to work with an IDE that unifies the developer experience.

For instance, when coding some Javascript for the HTML5 frontend, we need :

  • Javascript coding assistance. In this area, we need a tool that understands the qooxdoo type system (properties, events, binding) as well as other JS libraries we use.
  • Javascript inspection. Since Javascript is a dynamic language, we definitely need the code to be inspected and deeply analysed while typing. Parsing JSDoc comments is absolutely necessary so that the developer can give hints to the IDE regarding the actual runtime types of the variables, funtion parameters and return values, …
  • Javascript debugging. When running and debugging the HTML5 Jspresso UI channel, we definitely want to be able to start the test application, set break points, inspect variables from the different scopes (local, closure, global), and so on. Of course, someone could argue that there are plenty of good tools for achieving these goals, like Firebug, Chrome dev tools, Safari dev tools, … but each requires you leave the IDE and open the source code somewhere else.

We could raise very similar points regarding Flex/Actionscript development (and with the Apache move, wee need the Flex integration to go forward very fast) or Groovy development (the SJS DSL is developed in Groovy); not to mention Java development, of course !

Beyond multi-language support, we need a strong integration of the libraries we use in Jspresso (Spring, Hibernate, …) in the IDE so that it can raise problems at development time and assist coding. These integrations are generally available and well supported in different IDEs but it’s a must have.

Then comes other tools integration. For instance, we often use JProfiler in order to track memory leaks and / or performance problems. Being able to run JProfiler from the IDE with all the session parameters already configured is a big advantage in terms of efficiency.

Last but not least, we need the IDE to understand our base build without any further configuration. Jspresso strongly relies on Maven for all its building blocks including Flex compilation and Javascript packaging. The Maven configuration (i.e. the poms) must be the (only) reference for the build configuration and the IDE must understand it and configure the project accordingly. Using a new library or changing a library version must be instantly reflected in the IDE project so that you are sure to run what is going to be packaged.

After more than a year using IntelliJ IDEA, the IDE has proved to cover almost all of the challenges that the Jspresso development raises. We almost never leave the IDE, whatever the phase we’re in (writing code, debugging, profiling, …), and it definitely helps us to spare time and effort to concentrate on what’s important for us : code quality and efficiency.

Categories: IDE

Leave a Reply