ActiveJava

Copyright Tristan Aubrey-Jones May 2008.

Abstract: A project investigating and developing an implicitly concurrent programming language, based on a metaphor taken from the physical world is reported. Uses a programming paradigm where programs consist of systems of autonomous agents, or active objects which communicate via message passing. A language enhancing Java with actors and linear types is presented. Example programs are written, compiled, and executed to evaluate the usefulness of the language. The language found to provide a familiar notation for implicit parallelism, and a compelling new model for concurrency, combining the performance of shared variables with the elegance of message passing.

Introductory Slides (PDF), Report (PDF),
ActiveJava compiler prototype (ajavac), ActiveJava runtime library (ajava_lang).

Examples:

calc - pocket calculator actor program
dining - dining philosophers actor program (never deadlocks)
sort - parallel quicksort implementation ("SortBenchmark" sorts 10,000 random integers using actors, java threads, and sequentially and compares)
To compile examples use:
compile.bat ./calc
compile.bat ./sort
compile.bat ./dining
To run examples use:
run ./calc Main
run ./dining Main
run ./dining Main fast
run ./sort Main
run ./sort SortingBenchmark

home Home   up Up   ( Download ZIP Archive )

/sort/
   ajava fileDebugIntSorter.ajava
   java fileDebugIntSorter.java
   ajava fileEvent.ajava
   java fileEvent.java
   ajava fileIntSorter.ajava
   java fileIntSorter.java
   java fileIntSorterThread.java
   ajava fileListIterator.ajava
   java fileListIterator.java
   ajava fileMain.ajava
   java fileMain.java
   java fileSorterMethods.java
   ajava fileSortingBenchmark.ajava
   java fileSortingBenchmark.java
   ajava fileStdout.ajava
   java fileStdout.java