Abstract
Increasingly threading has become an important architectural component of programming languages to support parallel programming. Previously we have proposed an elegant language extension to express concurrency and synchronization. This language called Join Java has all the expressiveness of Object Oriented languages whilst offering the added benefit of superior synchronization and concurrency semantics. Join Java incorporates asynchronous method calls and message passing. Synchronisation is expressed by a conjunction of method calls that execute associated code only when all parts of the condition are satisfied. A prototype of the Join Java language extension has been implemented using a fully functional Java compiler allowing us to illustrate how the extension preserves Join semantics within the Java language. This paper reviews the issues surrounding the addition of Join calculus constructs to an Object Oriented language and our implementation with Java. We describe how, whilst the Join calculus is non-deterministic, a form of determinism can and should be specified in Join Java. We explain the need for a sophisticated yet fast pattern matcher to be present to support the Join Java compiler. We also give reasons why inheritance of Join patterns is restricted in our initial implementation.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Appel, A.W.: Compiling with Continuations. Cambridge University Press, Cambridge (1992)
Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for csharp. In: Proceedings of FOOL9 (2002)
Berry, G., Boudol, G.: The chemical abstract machine. Theoretical Computer Science 1(96), 217–248 (1992)
Buhr, P.A.: Are safe concurrency libraries possible? Communications of the ACM 38(2), 117–120 (1995)
Colby, C., Jagadeesan, L., Jagadeesan, R., Laufer, K., Puchol, C.: Design and implementation of triveni: A processalgebraic api for threads + events. In: International Conference on Computer Languages, IEEE Computer Press, Los Alamitos (1998)
Crnogorac, L., Rao, A., Romamohanarao, K.: Classifying inheritance mechanisms in concurrent object-orinted programming. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 571. Springer, Heidelberg (1998)
le Fessant, F., Maranget, L.: Compiling join patterns. In: Nestmann, U., Pierce, B.C. (eds.) HLCL 1998, Nice, France. Electronic Notes in Theoretical Computer Science, vol. 16, Elsevier Science Publishers, Amsterdam (1998)
Maranget, L., Fessant, F.L., Conchon, S.: Join language manual (1998)
Fournet, C., Gonthier, G., Lvy, J., Maranget, L., Rmy, D.: A calculus of mobile agents. In: Sassone, V., Montanari, U. (eds.) CONCUR 1996. LNCS, vol. 1119, Springer, Heidelberg (1996)
Fournet, C., Gonthier, G.: The reflexive cham and the join-calculus. In: Proc. 23rd Annual ACM Symposium on Principles of Programming Languages, pp. 372–385. ACM Press, New York (1996)
Fournet, C., Laneve, C., Maranget, L., Remy, D.: Inheritance in the join calculus. In: Kapoor, S., Prasad, S. (eds.) FST TCS 2000. LNCS, vol. 1974, pp. 397–408. Springer, Heidelberg (2000)
Gosling, J., McGilton, H.: The java language environment (1995)
Hilderink, G., Bakkers, A., Broenink, J.: A distributed real-time java system based on csp. In: Third IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, ISORC 2000, Newport Beach, California, pp. 400–407. IEEE, Los Alamitos (2000)
Hoare, C.A.R.: Communicating sequential processes. In: McKeag, R.M., Macnaghten, A.M. (eds.) On the construction of programs – an advanced course, pp. 229–254. Cambridge University Press, Cambridge (1980)
Hoare, C.A.R.: Monitors: An operating system structuring concept. Communications of the ACM 17(10), 549–557 (1974)
Stewart Itzstein, G., David, K.: Applications of join java. In: Proceedings of the Seventh Asia Pacific Computer Systems Architecture Conference ACSAC 2002, Melbourne, Australia, pp. 1–20. Australian Computer Society (2002)
Stewart Itzstein, G., Kearney, D.: Join java: An alternative concurrency semantic for java. Technical Report ACRC-01-001, University of South Australia (January 1, 2001)
Maranget, L., Fessant, F.L., Conchon, S.: Jocaml manual (1998)
Matsuoka, S., Yonezawa, A.: Analysis of inheritance anomaly in object-oriented concurrent programming languages. In: Agha, P., Wegner, P., Yonezawa, A. (eds.) Research Directions in Concurrent Object-Oriented Programming, pp. 107–150. MIT Press, Cambridge (1993)
Odersky, M.: Functional nets. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, pp. 1–25. Springer, Heidelberg (2000)
Odersky, M.: Programming with functional nets. Technical 2000/331, Ecole Polytechnique Fédérale de Lausanne (March 2000)
Steele, G.L.: Rabbit: A Compiler for Scheme. Masters, MIT (1978)
Welch, P.H.: Java threads in the light of occam-csp. In: Welch Bakkers, P.H. (ed.) Architectures, Languages and Patterns for Parallel and Distributed Applications. Concurrent Systems Engineering Series, vol. 52, pp. 259–284. WoTUG IOS Press, Amsterdam (1998), http://www.cs.ukc.ac.uk/pubs/1998/702
Zenger, M., Odersky, M.: Implementing extensible compilers. In: ECOOP 2001 Workshop on Multiparadigm Programming with Object-Oriented Languages, Budapest (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Itzstein, G.S., Jasiunas, M. (2003). On Implementing High Level Concurrency in Java. In: Omondi, A., Sedukhin, S. (eds) Advances in Computer Systems Architecture. ACSAC 2003. Lecture Notes in Computer Science, vol 2823. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39864-6_13
Download citation
DOI: https://doi.org/10.1007/978-3-540-39864-6_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-20122-9
Online ISBN: 978-3-540-39864-6
eBook Packages: Springer Book Archive