[ Index ] [ Individual Project ] [ Placement Presentation ] [ Timetable ]

[ Index ] [ Research ] [ Schedule ]

Evolution of Distributed Java Programs

Last Updated: 28th November 2001

One of the problems that Java had the potential to solve was the upgrading of distributed since it had dynamic linking built in. Unfortunately certain design decisions meant that a remote client could be left in several states due to the upgrade.

The main point in the paper was the problems caused when upgrading a library and how they could be defined in terms of binary compatibility. The paper also presented a tool (DEJAVU - Shak's project) that attempted to solve this problem by testing different versions of classes for binary compatibility and providing a mechanism to upgrade remote clients.

The main failings (and I mean that in the nicest possible way) here were that the tool did not take advantage of several built in features of java (e.g. it ignored the fact that libraries are distributed as jar files with version information) and didn't identify that the Java Management Extensions (JMX) had the potential to solve a large chunk of the problem (distributing new versions of packages to clients).

Either though the tool did not turn out to be the ideal problem solver, the paper did identify the various problems encountered when upgrading, and DEJAVU creating a rule engine that tests for them.

IE UE Description Reaction State
0 0 The feels nothing (ever) NAR
0 1 The clients feels nothing until a trouble-free recompilation makes the modification palpable. NAR
0 2 The client must re-code in order to experience the modification. ERC
1 0 The feels the modification but it disappears after a trouble-free compilation. NAR
1 1 The client feels the modification immediately. NAR
1 2 The client feels the modification but the client developer will needs to re-code as soon as recompilation occurs. ERC
2 0 The client experiences an immediate linking problem. On recompilation, the problem disappears, but the modification never appears. IRB
2 1 The clients experiences an immediate linking problem which a trouble-free compilation resolves. IRB
2 2 The client experiences an immediate problem, which the client developer will need to re-code to fix. IRC
Modification Effects

Key

Immediate Effects

  1. The client links without error and runs eithout any discernible modification effect.
  2. The client links without error and the modification effect is immediately palpable.
  3. The modification is not binary compatible and consequently a link error occurs.

Ultimate Effects

  1. The client rebuilds without error and runs without any discernible modification effect.
  2. The client rebuilds without error and the modification effect appears (or persists if it was previously palpable).
  3. The client encounters a compilation error, and, after re-coding achieves the desired modification.

Classifying Reaction States

  1. NAR - No Action Required
  2. ERC - Eventual Re-Code
  3. IRB - Immediate Re-Build
  4. IRC - Immediate Re-Code


Miles Barr <miles@milesbarr.com>