Diffusive Programming Article

Version 0.2.1

Download: Diffusive version 0.2.1

Version 0.2.0 worked, but apparently only allowed a limited set of methods to be diffused:

  • Methods with object return types
  • Methods with a single object argument (i.e. not primitive) or an array of arguments.

Version 0.2.1 now fixes this and updates FreezeDry to version 0.2.6 which was part of the problem. At this point, all methods should properly diffuse.

More specifically:

  1. Added a new example that has a non-concurrent, current, and diffusive implementation. This example demonstrates performance from single-thread to multi-threaded to diffusive. See the ThreadedVolumeCalc.
  2. Fixed bug where methods that had primitive arguments and return types didn't diffuse, and instead threw an exception.
  3. Fixed bug where multi-argument methods couldn't be diffused, rather they had to be specified as an array.
  4. Fixed concurrency issues in the PersistenceSerializer and ObjectSerializer classes.
  5. The diffusers now server up a management console--though this isn't complete.

Version 0.2.0

Download: Diffusive version 0.2.0

This is first version that allows users to run Diffusive from the distribution JAR files, and to separate the application (to diffuse) from the distribution JARs. Previous version required Diffusive to be run from an IDE.

  1. Developed command-line interfaces for DiffuserLauncher, and for the RestfulDiffuserServer. These new interfaces allow you the ability to set various options and configuration items. To get more details, execute the jars from the command-line with the --help option:
    java -jar Diffusive_Launcher_0.2.0.jar --help
  2. or
    java -jar Diffusive_Server_0.2.0.jar --help
  3. Developed command-line interfaces for the XML configuration objects: RestfulDiffuserConfigXml and the RestfulDiffuserServerConfigXml that can generate and validated configuration files.
  4. Added three examples with increasing complexity:
    1. A stand-alone local diffuser that allows you to run diffusive without starting a diffuser server.
    2. A local diffuser example that runs a local RESTful diffuser server and the diffuser launcher on the same machine.
    3. A single remote example that runs a local RESTful diffuser server to provide class resources, a remote RESTful diffuser server to perform the execution, and a local diffuser launcher.
  5. Fixed a bug related to the loading of class files that were neither in the JAR, or in the JAR's manifest's Class-Path (which wasn't so easy). This is needed so that JAR files containing the user's application can be run and loaded for RestfulClassLoader and RestfulDiffuserClassLoader.
  6. Improved some JAX-RS exception mapping. Not yet at the point I'd like it to be.

Version 0.1.3

Download: Diffusive version 0.1.3

Updated the configuration files so that it can be run locally right out of the box (based on suggestion from Anteneh Nurlien).

  1. Updated the configuration files so that restful_server_config.xml and random_diffuser_strategy.xml don't have any end-points. This allows diffusive test cases to be run locally without any configuration. Just run the RestfulDiffusiveServer class, and then the DiffusiveLauncher class, and it should run.
  2. Fixed bug that prevented diffusive from running when no end-points were specified in the configuration files.

Version 0.1.2

Download: Diffusive version 0.1.2

Main change is the new capability to configure diffusers from XML files. Also small updates to incorporate fixes and added features from FreezeDry.

  1. Modified Diffusive's server and diffuser configuration classes to load an XML file containing the basic configuration properties. As part of this, add XML files for configuring the diffuser strategy. This allows the diffuser strategy to be specified in diffuser configuration XML file. Now the diffuser server can be configured from restful_server_config.xml, the diffusers can be configured from restful_diffuser_config.xml, and the diffuser strategies can be configured from random_diffuser_strategy.xml and random_weighted_diffuser_strategy.xml
  2. Updated FreezeDry from version 0.2.2 to version 0.2.4 (see FreezeDry updates for more details).