InfoQ

News

First Public Release of Impala Provides Dynamic Modules for Spring

Posted by Charles Humble on Jun 03, 2008 12:01 AM

Community
Java
Topics
Announcements ,
Build systems
Tags
Spring
Developed and distributed using the Apache Licence, Version 2, and using the Java 1.5 runtime, Impala provides a means by which a developer can divide Spring MVC-based web applications into a set of modules that form a hierarchy. Every application using the framework contains a root module and may also contain one or more sub modules. The main purpose of the root module is to define a set of interface beans and to provide a home for Java interfaces and shared/domain classes used in the application, whilst the sub modules are typically more domain focused. The framework allows modules to be dynamically added, updated or removed within a running application, and supports viewing and reloading of modules using Java Management Extensions (JMX). Impala strongly favours test driven development as a development methodology, and provides an "interactive test runner" based on JUnit 3 which is intended to reduce the develop/deploy/test cycle, particularly in the context of integration testing.

The project team have just released their first milestone release which can be downloaded here. This release is tightly coupled to Eclipse and Ant, and supports Tomcat and Jetty as its servlet container options. The final 1.0 release is expected to add additional IDE support for Netbeans and IntelliJ, with JDeveloper also under consideration. As well as support for Spring MVC a generic web integration mechanism is planned. Impala is not currently OSGi compliant although this is also planned for the first full release.

From the RoadMap - the following features have been implemented for the first milestone release:

  • Interactive test runner: a Java main application which can load, update and reload modules, as well as run tests.
  • Suite test runner: support for efficient, rapid running of a suite of integration tests.
  • Simple scaffolding, allowing building of new projects.
  • Eclipse web application runner (using Jetty), allowing multi-module web applications to be developed without builds.
  • War deployment build - supporting creation of war files which can be deployed in a standard JEE application server or servlet container.
  • Non-war deployment build for Jetty - a specialised deployment structure with an embedded Jetty server.
  • Internal refactoring to remove wrinkles in architecture.
  • Spring MVC integration with support for multi-module, dynamically reloadable web applications being built using Spring MVC.
  • JUnit 3.8 support, specifically in the interactive test runner.
  • Automatic module updates using a file system modification detector.
  • Manual module updates using JMX administration console.
  • Deployment build with automatic tagging of release versions.
  • Ant-based build system which can be used in Impala-based applications.

Impala clearly has some overlap with Spring OSGi and an entry on the Impala blog provides a comparison. The project is considering some convergence with OSGi, ultimately allowing OSGi to be used as an alternative runtime for Impala applications.

The Impala project lead is very keen to get community involvement in the project. If you are interested have a look here.

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.