AsyncObjects Framework Home Page

This is a web site that contains information about
the AsyncObjects framework. The AsyncObjects framework
simplifies writing asynchronous event-driven applications
in Java. It mainly builds upon ideas and syntax of
E programming language.
However, it also draws ideas from other programming
languages like Occam and frameworks like
SEDA
as well. In addition to core library that supports common
asynchronous communication patterns. The framework provides
a wrapper for NIO-based sockets that simplify creation of
network applications that support a high number of concurrent
connections.

The framework automates the following common tasks
for event loop programming:

Designating destination for events

The desitnation of events is a java object. This object has
a proxy that dispatches events to its event loop. The proxy can
be passed around.

Posting events to event loop

It is as simple as invoking a method on the proxy of
the objects.

Creating modular asynchronous components

The components are Java objects that extend specific
base class and implement their asynchronous interfaces.
Normal OO application development techniques can be used.

Combining components into the single asynchronous application

The components do not need to directly create threads
and to be aware about them. This remove major source of integration
problems for asynchronous components. The event loop itself is managed
by framework. And this event loop might suppor multiple components
at the same time. No special efforts are required from the
application developer to achieve this.

Returning results from asynchronous operations

The request-response asynchroous operations return
promise
that resolves when operation is finished. The application
might continue exection when promise is resolved. The When utility
class simplifies listening on promise.

The current version of the framework is 0.3.2 (alpha) released
on 2007-06-04. The project is released under Apache License 2.0.
The framework requires Java 1.5 since it is heavily depends on
Generics. Please see the following links for more information
about the framework.