Skip to main content

On Implementing High Level Concurrency in Java

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2823))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Appel, A.W.: Compiling with Continuations. Cambridge University Press, Cambridge (1992)

    Google Scholar 

  2. Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for csharp. In: Proceedings of FOOL9 (2002)

    Google Scholar 

  3. Berry, G., Boudol, G.: The chemical abstract machine. Theoretical Computer Science 1(96), 217–248 (1992)

    Article  MathSciNet  Google Scholar 

  4. Buhr, P.A.: Are safe concurrency libraries possible? Communications of the ACM 38(2), 117–120 (1995)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. 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)

    Chapter  Google Scholar 

  7. 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)

    Google Scholar 

  8. Maranget, L., Fessant, F.L., Conchon, S.: Join language manual (1998)

    Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. 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)

    Chapter  Google Scholar 

  12. Gosling, J., McGilton, H.: The java language environment (1995)

    Google Scholar 

  13. 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)

    Chapter  Google Scholar 

  14. 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)

    Google Scholar 

  15. Hoare, C.A.R.: Monitors: An operating system structuring concept. Communications of the ACM 17(10), 549–557 (1974)

    Article  MATH  Google Scholar 

  16. 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)

    Google Scholar 

  17. 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)

    Google Scholar 

  18. Maranget, L., Fessant, F.L., Conchon, S.: Jocaml manual (1998)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. Odersky, M.: Functional nets. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, pp. 1–25. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  21. Odersky, M.: Programming with functional nets. Technical 2000/331, Ecole Polytechnique Fédérale de Lausanne (March 2000)

    Google Scholar 

  22. Steele, G.L.: Rabbit: A Compiler for Scheme. Masters, MIT (1978)

    Google Scholar 

  23. 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

  24. Zenger, M., Odersky, M.: Implementing extensible compilers. In: ECOOP 2001 Workshop on Multiparadigm Programming with Object-Oriented Languages, Budapest (2001)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics