WOPR logo
Titlebar corner
Button 1
Button 2
Button 3
Titlebar tail


© 2004 Marc-Andre Michel.  All rights reserved.








Home

News

Download

Roadmap

Documentation

License



Sourceforge page



Contact Info




SourceForge.net Logo

Home

WOPR is an experimental message-passing distributed object development framework for java.

An application developed with WOPR is organized into several customisable modules which send messages to other modules in order to communicate. A module can be viewed as a remote thread with several message queues as its inputs, and several outputs.

Because each module is independent from the others, it is possible to deploy an application over the network onto several JVMs (or machines). Furthermore, an application can be altered at runtime (e.g. to change a connection between one module and another, to replace a module by a new one, to change a module's parameter, etc).

See a simple example.

People like screenshots (so do I), so if you want to see the WOPR in action have a look at those ones. They show the example deployed on two WOPR instances.


General architecture overview


Schema




Latest news

February 28th, 2005 After several months of inactivity, WOPR Version 0.1.0 has finaly been released !! All points listed on the roadmap are now fully implemented. The differences between this release and the previous one mainly concern internal stuff. The class design of the module package for example has been slightly improved to gain in flexibility and stability.

This project was started last summer basically to experiment some image processing algorithms. I was looking for something with which I can easily define video sources, filters, etc... and then send the video output to a filter, and the filter output to another filter and so on. Something a bit like LabView you know, where you place your modules and interconnect them together. In addition, I wanted something that can be modified at runtime and, more importantly, something with distributed computing capabilities.

I didn't find anything like that in the open source community so I decided to develop it myself. By the way, it was an excellent exercice since I was new to java and needed some training for my real job.

I'm quite satisfied with the framework so far even though it is still a bit limited. It would need for example some serious improvements regarding the message queues, but I'm already able to experiment what I wanted to and it is sufficient for the moment. Now with hindsight, if I had to write it again, I would probably choose a different way. Instead of developing almost everything from the ground up, I would look at some very interesting frameworks like Spring or PicoContainer as well as some J2EE technologies like JMX. But I would probably not go with an application server like JBoss though.

If I'm doing a bit of history, it's because I reached a point where the chances of a new update of the framework will become increasingly slim. I might port it to the new java 5.0 but it won't be before this summer, Apple is a bit slow when it comes to java, especially when a new version of their prefered (but really nice) OS is about to come...





November 27th, 2004 New sources have been released. Well, the 0.1.0 has still not been released, but all 3 phases are now completed. The WOPR can be fully deployed on remote machines and is now able to download missing classes from other remote WOPR instances.

To allow download of classes from remote locations, each WOPR instance runs an embedded http server (jetty). The RMI interfaces have been updated in order to allow a client application to add to a project new URLs. By using URLs, not only is it possible to point to WOPR embedded http servers but also to standalone servers.

I've added a new ant project: wopr-library. It is intended to contain all concrete modules like the standard ones (e.g. NodeModule) as well as the example modules. I've also moved all the test classes to a new ant project: tests. By doing all those changes the ant scripts are simpler and the whole project is easier to maintain. The seperation of the concrete modules from the main jar will give the possibility to launch 'thin' WOPR instances, that is instances with only the minimum code needed to run empty, and then download the required classes if a project is loaded.

Last but not least, I've added some shell scripts in the 'bin' directory to make the launch of the different applications (wopr, cli and rmiregistry) easier. However, WOPR is developed on UNIX (Mac OS X actually) and the scripts have only been written for UNIX. Support for Cygwin and Windows batch file will be added later on.





October 17th, 2004 New sources have been released. To prepare the implementation of the last part of phase 3 (upload classes and resources to remote WOPRs), I've done some refactoring. The most significant change is the move of the external layer from CORBA to RMI in order to take maximum advantage of the language.

Among other changes, the access to the RMI registry is now done through JNDI and is fully configurable. I'm not really happy with rmiregistry though since it only supports a flat namespace. A hierarchical name structure like in the CosName service is far better when you have to deal with a large amount of objects. But as long as I don't have to manage too much modules, rmiregistry is sufficient.

I've improved the ant scripts as well, so it is now possible to compile and deploy everything from the root directory.

Now if everything goes well the next release will include the last part of phase 3 and will by the way close the development of the first version which will be 0.1.0.





Sept. 20th, 2004 The example has been updated and now reflects the example provided with the source distribution. There is a description about how to run the example in the file .README.





News archive