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 )

/calc/
   ajava fileAButton.ajava
   java fileAButton.java
   ajava fileACharButton.ajava
   java fileACharButton.java
   ajava fileAComponent.ajava
   java fileAComponent.java
   ajava fileAContainer.ajava
   java fileAContainer.java
   java fileADigitButton.java
   ajava fileADigitPad.ajava
   java fileADigitPad.java
   ajava fileAFrame.ajava
   java fileAFrame.java
   ajava fileALU.ajava
   java fileALU.java
   ajava fileAOpPad.ajava
   java fileAOpPad.java
   ajava fileAPanel.ajava
   java fileAPanel.java
   ajava fileCalculator.ajava
   java fileCalculator.java
   ajava fileClickEvent.ajava
   java fileClickEvent.java
   ajava fileEvent.ajava
   java fileEvent.java
   ajava fileKeyboardEvent.ajava
   java fileKeyboardEvent.java
   ajava fileListIterator.ajava
   java fileListIterator.java
   ajava fileMain.ajava
   java fileMain.java
   ajava fileNumberBox.ajava
   java fileNumberBox.java
   ajava fileStdout.ajava
   java fileStdout.java