Skip to main content

JoCaml: A Language for Concurrent Distributed and Mobile Programming

  • Chapter
Advanced Functional Programming (AFP 2002)

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

Included in the following conference series:

Abstract

In these lecture notes, we give an overview of concurrent, distributed, and mobile programming using JoCaml. JoCaml is an extension of the Objective Caml language. It extends OCaml with support for concurrency and synchronization, the distributed execution of programs, and the dynamic relocation of active program fragments during execution.

The programming model of JoCaml is based on the join calculus. This model is characterized by an explicit notion of locality, a strict adherence to local synchronization, and a natural embedding of functional programming à la ML. Local synchronization means that messages always travel to a set destination, and can interact only after they reach that destination; this is required for an efficient asynchronous implementation. Specifically, the join calculus uses ML’s function bindings and pattern-matching on messages to express local synchronizations.

The lectures and lab sessions illustrate how to use JoCaml to program concurrent and distributed applications in a much higher-level fashion than the traditional threads-and-locks approach.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

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

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abadi, M., Fournet, C., Gonthier, G.: Secure implementation of channel abstractions. Information and Computation (2000)

    Google Scholar 

  2. Alexander, D.S., Hicks, M.W., Kakkar, P., Keromytis, A.D., Shaw, M., Moore, J.T., Gunter, C.A., Jim, T., Nettles, S.M., Smith, J.M.: The switchware active network implementation. In: The ML Workshop, International Conference on Functional Programming (ICFP). ACM SIGPLAN (September 1998)

    Google Scholar 

  3. Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C#. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 415–440. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  4. Birrell, A.D., Guttag, J.V., Horning, J.J., Levin, R.: Synchronization primitives for a multiprocessor: A formal specification. Research Report 20, DEC SRC (August 1987)

    Google Scholar 

  5. Cardelli, L., Gordon, A.: Mobile ambients. In: Nivat, M. (ed.) FOSSACS 1998. LNCS, vol. 1378, pp. 140–155. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  6. Conchon, S., Le Fessant, F.: Jocaml: Mobile agents for objective-caml. In: ASA/MA 1999, pp. 22–29. IEEE Computer Society, Los Alamitos (1999)

    Google Scholar 

  7. Fournet, C., Gonthier, G.: The reflexive chemical abstract machine and the join-calculus. In: Proceedings of POPL 1996, pp. 372–385. ACM, New York (1996)

    Chapter  Google Scholar 

  8. Fournet, C., Gonthier, G.: The join calculus: a language for distributed mobile programming. In: Barthe, G., Dybjer, P., Pinto, L., Saraiva, J. (eds.) APPSEM 2000. LNCS, vol. 2395, pp. 268–332. Springer, Heidelberg (2002), Also available from http://research.microsoft.com/~fournet

    Chapter  Google Scholar 

  9. Fournet, C., Laneve, C., Maranget, L., Rémy, D.: Implicit typing à la ML for the join-calculus. In: Mazurkiewicz, A., Winkowski, J. (eds.) CONCUR 1997. LNCS, vol. 1243, pp. 196–212. Springer, Heidelberg (1997)

    Google Scholar 

  10. Fournet, C., Lévy, J.-J., Schmitt, A.: An asynchronous, distributed implementation of mobile ambients. In: Watanabe, O., Hagiya, M., Ito, T., van Leeuwen, J., Mosses, P.D. (eds.) TCS 2000. LNCS, vol. 1872, p. 348. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  11. Gray, R.S.: Agent tcl: A transportable agent system. In: CIKM Workshop on Intelligent Information Agents, Fourth International Conference on Information and Knowledge Management (CIKM 1995), Baltimore, Maryland (December 1995)

    Google Scholar 

  12. Hayden, M.: Distributed communication in ML. Technical Report TR97-1652, Cornell University, Computer Science, November 11 (1997)

    Google Scholar 

  13. Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21(8), 666–677 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  14. Johansen, D., Renesse, R.V., Schneider, F.B.: An introduction to the tacoma distributed system version 1.0. Technical Report 95-23, University of TromsO, Norway (June 1995)

    Google Scholar 

  15. Le Fessant, F.: The JoCAML system prototype (beta 1.08) (1998–2002), Software and documentation available from http://pauillac.inria.fr/jocaml

  16. Le Fessant, F.: Detecting distributed cycles of garbage in large-scale systems. In: Principles of Distributed Computing (PODC), Rhodes Island (August 2001)

    Google Scholar 

  17. Le Fessant, F., Maranget, L.: Compiling join-patterns. In: Nestmann, U., Pierce, B.C. (eds.) HLCL 1998: High-Level Concurrent Languages. Electronic Notes in Theoretical Computer Science, vol. 16(3). Elsevier Science Publishers, Amsterdam (1998)

    Google Scholar 

  18. Le Fessant, F., Piumarta, I., Shapiro, M.: An implementation of complete, asynchronous, distributed garbage collection. In: Conf. on Prog. Lang. Design and Impl. (PLDI), Montreal, Canada. ACM SIGPLAN (June 1998)

    Google Scholar 

  19. Lea, D.: Concurrent Programming in Java: Design Principles and Patterns, 2nd edn. Addison-Wesley, Reading (1999)

    Google Scholar 

  20. Leroy, X., et al.: The Objective CAML system 3.05. Software and documentation available from http://caml.inria.fr

  21. Milner, R.: Communication and Mobile Systems: the π-Calculus. Cambridge University Press, Cambridge (1999)

    Google Scholar 

  22. Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes, parts I and II. Information and Computation 100, 1–40, 41–77 (1992)

    Article  MATH  MathSciNet  Google Scholar 

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

    Chapter  Google Scholar 

  24. Pierce, B.C., Turner, D.N.: Pict: A programming language based on the pi-calculus. In: Plotkin, G.D., Stirling, C., Tofte, M. (eds.) Proof, Language and Interaction: Essays in Honour of Robin Milner. MIT Press, Cambridge (2000)

    Google Scholar 

  25. Reppy, J.H.: Concurrent ML: Design, application and semantics. In: Lauer, P.E. (ed.) Functional Programming, Concurrency, Simulation and Automated Reasoning. LNCS, vol. 693, pp. 165–198. Springer, Heidelberg (1993)

    Google Scholar 

  26. Rouaix, F.: A web navigator with applets in caml. In: Fifth WWW Conference, Paris (May 1996)

    Google Scholar 

  27. Schmitt, A.: Safe dynamic binding in the join calculus. In: IFIP TCS 2002, Montreal, Canada (2002)

    Google Scholar 

  28. Schmitt, A., Stefani, J.-B.: The M-calculus: A higher order distributed process calculus. In: Proceeding 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2003). ACM, New York (2003)

    Google Scholar 

  29. White, J.: Telescript technology: Mobile agents. In: Bradshaw, J. (ed.) Software Agents. AAAI Press/MIT Press (1996)

    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 chapter

Cite this chapter

Fournet, C., Le Fessant, F., Maranget, L., Schmitt, A. (2003). JoCaml: A Language for Concurrent Distributed and Mobile Programming. In: Jeuring, J., Jones, S.L.P. (eds) Advanced Functional Programming. AFP 2002. Lecture Notes in Computer Science, vol 2638. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-44833-4_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-44833-4_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-40132-2

  • Online ISBN: 978-3-540-44833-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics