In my last blog, I described a set of criteria which can be used to determine how lightweight a framework or technology is. Let's consider Impala against the criteria described above:
1. How much system resource does the technology use?
Impala adds an almost negligible overhead to a plain Spring application.
2. Do applications need special runtime support to run?
Impala simply runs on the JVM. It's only runtime dependencies are Spring and logging libraries.
3. Are any special build steps required for the application?
No, it can be run from within Eclipse without any build steps.
4. How difficult is it to test applications which use the technology?
The interactive test runner and integration test support make Impala applications easy to test in a very productive way.
5. Can applications be updated dynamically, or do updates require a restart?
6. How easy is it to modularise applications which use the technology?
Modularity is built in from the ground up.
7. Do applications require any code generation, either source code or byte code?
None, other than that which is used in the equivalent Spring application.
8. How quick are applications to start?
Not perceptibly slower to start initially than the equivalent plain Spring application, but requiring dramatically fewer restarts.
9. How complex is the technology to understand?
Impala is simple to understand. The developer only needs to have a understanding of the basic principles, architecture and project conventions to get going. Only in very few places is interaction with Impala APIs required.
10. Is any special tool support required to be productive with the technology?
Impala works in a vanilla Eclipse installation without any additional required plugins.
Overall, I'd argue that Impala passes this lightweightness test with flying colours. I'm also pretty convinced that an equivalent comparison with alternative technologies would be less favourable.
See more details on these definitions for lightweightness.