Pronto Introduction

January 2007: Pronto 0.4 has been released and is available for download.

Overview

Pronto is a Java library that has is being developed with the following aims:

In this context, a Java application could be anything from a Swing based program to a headless dæmon; modestly sized might mean applications with classes which number in the dozens or hundreds. What Pronto is not for is small Java "utilities" (which will see no benefits) nor enterprise level applications (which need something more powerful).

In short, pronto aims to provide Java application developers with a shortcut from a piece of code which does something useful, to an application that can be reliably started/stopped, configured and logged. It is expected that the applications to most benefit are those which must provide extended unbroken periods of reliable execution during which their environment and operational parameters may need to vary.

Licencing

Pronto is released under the GNU Lesser General Public License (version 2). Under this licence, your freedoms to use this software are protected without preventing its use in non-free applications to the extent permitted by the license.

Project Structure

This project is currently in an early stage of development.

Pronto is envisioned to be largely composed of five modules with the intention being that developers will be able use their functionality independently of Pronto's usefulness as an application 'host'. The five main areas of functionality are anticipated to be:

Configuration
Dynamic implementation of interfaces with 'live' configuration information.
State
Provides for the definition and operation of simple state engines.
Control
Reliable starting/stopping and restarting of the application.
Logging
Simple configuration with dynamic control over logging levels.
Run-Levels
The facility to tier the application into separately attainable runlevels.

Only the implementation of the logging and run-level modules remains.

Project Resources

This project is hosted at SourceForge. At that site you will find a project page for Pronto with links to downloadable releases, issue trackers and general project information.

Pronto's development is managed using Maven 2. Consequently, a maven generated site is available that provides reference information. It includes project dependencies, javadocs and cross-referenced source code.

The maven site is only deployed intermittently and may not reflect the current state of development.

Packaging and Dependencies

The compiled Pronto code is currently packaged as a small collection of jars named module-x.x.jar. For each such jar there is a corresponding source code jar (module-x.x-sources.jar) and documentation jar (module-x.x-javadoc.jar). This arrangement allows the modules to be used independently where necessary.

jar dependencies as of version 0.4

When the project is code-complete, Pronto will be able to act as a host for Java application code, at that time, the packaging will be reviewed with the aim of ensuring that application deployment is straightforward. This anticipated change will not prevent the direct use of Pronto modules; Pronto will always be usable in both modes.

At present, Pronto does not have any external dependencies. It requires Java 1.5.

Roadmap

There are no established time frames for Pronto's development but there is a clear development plan:

  1. Build each module of Pronto independently and to a high standard. This will allow substantial portions of the Pronto code base to be available to other developers at the earliest opportunity.
  2. Complete the project code by uniting the modules and providing comprehensive guidance on how (any why) to use Pronto for structuring an application's deployment and runtime.
  3. Wait for Pronto to be used in a number of projects before refining the APIs and declaring a 1.0 version.

At the current rate of development, Pronto should be code complete around the start of Q2 2007. However, a consequence of 3 above is that there will probably be a significant delay between the first robust implementations (version 0.6+) and the first proper release (version 1.0).