Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Session-based Distributed Programming in Java
[go: Go Back, main page]

Session-based Distributed Programming in Java

Raymond Hu (homepage), Nobuko Yoshida (homepage), Kohei Honda (homepage)

Abstract

This paper demonstrates the impact of integrating session types and object-oriented programming, through their implementation in Java. Session types provide high-level abstraction for structuring a series of interactions in a concise syntax, and ensure type-safe communications between distributed peers. We present the first full implementation of a language and runtime for session-based distributed programming featuring asynchronous message passing, delegation, and session subtyping and interleaving, combined with class downloading and failure handling. The compilation-runtime framework of our language effectively maps session abstraction onto underlying transports and guarantees communication safety through static and dynamic session type checking. We have implemented two alternative mechanisms for performing distributed session delegation and prove their correctness. Benchmark results show session abstraction can be realised with low runtime overhead.


Note (2008-04-15): page contents are currently being updated. Benchmark results and examples will be added for this new SJ version over the next couple of weeks. Tutorials for using SJ are also coming soon.

Downloadables:
Note: if the above archives get mistakenly saved by your browser as .tar.tar, just rename them to have the correct .tar.gz suffix.

This project is implemented using the Polyglot compiler framework.


Benchmark results from Section 5 of the above paper.


To compile an SJ program, from the sj directory do

   bin/sjc tests/src/.../MyProgram.sj -d tests/classes/...

and to run a compiled program, do

   bin/sj -cp tests/classes/... MyProgram

Note: the SJ compiler currently accepts only Java 1.4, due to the version of Polyglot used.


Some additional material:


Updated 2008-06-15.