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 ./diningTo run examples use:
run ./calc Main run ./dining Main run ./dining Main fast run ./sort Main run ./sort SortingBenchmark
Home
Up
(
Download ZIP Archive )
AButton.ajava
AButton.java
ACharButton.ajava
ACharButton.java
AComponent.ajava
AComponent.java
AContainer.ajava
AContainer.java
ADigitButton.java
ADigitPad.ajava
ADigitPad.java
AFrame.ajava
AFrame.java
ALU.ajava
ALU.java
AOpPad.ajava
AOpPad.java
APanel.ajava
APanel.java
Calculator.ajava
Calculator.java
ClickEvent.ajava
ClickEvent.java
Event.ajava
Event.java
KeyboardEvent.ajava
KeyboardEvent.java
ListIterator.ajava
ListIterator.java
Main.ajava
Main.java
NumberBox.ajava
NumberBox.java
Stdout.ajava
Stdout.java