PAL: Exploiting Java Annotations for Parallelism

  • Marco Danelutto
  • Marcelo Pasin
  • Marco Vanneschi
  • Patrizio Dazzi
  • Domenico Laforenza
  • Luigi Presti


We discuss how Java annotations can be used to provide the meta information needed to automatically transform plain Java programs into suitable parallel code that can be run on workstation clusters, networks and grids. Programmers are only required to decorate the methods that will eventually be executed in parallel with standard Java 1.5 annotations. Then these annotations are automatically processed and parallel byte code is derived. When the annotated program is started, it automatically retrieves the information about the executing platform and evaluates the information specified inside the annotations to transform the byte-code into a semantically equivalent multithreaded or multitask version, depending on the target architecture features. The results returned by the annotated methods, when invoked, are futures with a wait-by-necessity semantics. A PAL (Parallel Abstraction Layer) prototype exploiting the annotation based parallelizing approach has been implemented in Java. PAL targets JJPF, an existing, skeleton based, JAVA/JINI programming environment, as Parallel Framework. The experiments made with the prototype are encouraging: the design of parallel applications has been greatly simplified and the performances obtained are the same of an application directly written in JJPF.


Asynchronous method invocation wait-by-necessity annotations skeletons grids 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Java specification requests 175: A metadata facility for the java programming language., September 2004.Google Scholar
  2. [2]
    Mpi: A message-passing interface strandard., 1994.Google Scholar
  3. [3]
    M. Aldinucci, M. Danelutto, and M. Vanneschi. Autonomic QoS in ASSIST Grid-aware components. In Euromicro PDP 2006: Parallel Distributed and network-based Processing. IEEE, February 2006. Montbéliard, France.Google Scholar
  4. [4]
    G. S. Almasi and A. Gottlieb. Highly parallel computing. Benjamin-Cummings Publishing Co., Inc., Redwood City, CA, USA, 1989.Google Scholar
  5. [5]
    C. T. Bruneton E, Lenglet R. Asm: a code manipulation tool to implement adaptable systems, grenoble, france. Adaptable and Extensible Component Systems, Nov. 2002.Google Scholar
  6. [6]
    D. Caromel. Service, asynchrony, and wait-by-necessity. Journal of Object-Oriented Programming, Nov/Dec 1989.Google Scholar
  7. [7]
    D. Caromel and L. Henrio. A Theory of Distributed Object. Springer-Verlag, 2005.Google Scholar
  8. [8]
    D. Caromel, L. Henrio, and B. Serpette. Asynchronous and deterministic objects, 2004.Google Scholar
  9. [9]
    M. Cole. Bringing Skeletons out of the Closet: A Pragmatic Manifesto for Skeletal Parallel Programming. Parallel Computing, Volume 30, Number 3, pages 389–406, 2004.CrossRefGoogle Scholar
  10. [10]
    Programming model Institute home page, 2006. Scholar
  11. [11]
    M. Danelutto and P. Dazzi. A java/jini framework supporting stream parallel computations. In Proc. of Intl. PARCO 2005: Parallel Computing, September 2005.Google Scholar
  12. [12]
    P. Dazzi. Jjpf: a parallel programming framework based on jini. Master’s thesis, University of Pisa, July 2004. JJPF: uno strumento per calcolo parallelo con JINI.Google Scholar
  13. [13]
    N. DiPasquale, T. Way, and V. Gehlot. Comparative survey of approaches to automatic parallelization. In MASPLAS’05, April 2005.Google Scholar
  14. [14]
    C. Dittamo. Annotation based techniques for the parallelization of sequential programs (in Italian), July 2006. Graduation thesis, Dept. Computer Science, Univ. of Pisa.Google Scholar
  15. [15]
    J. Dünnweber and S. Gorlatch. Component-based Grid Programming using the HOC-Service Architecture. In I. H. Fujita, editor, New Trends in Software Methodologies, Tools and Techniques, Frontiers in Artificial Intelligence and Applications. IOS Press, 2005. ISBN 1-58603-556-8.Google Scholar
  16. [16]
    D. C. et al. Proactive., 1999.Google Scholar
  17. [17]
    K. J. et al. Future for European Grids: GRIDs and Service Oriented Knowledge Utilities, January 2006. Third report of the Next Generation Grids expert group, available at ist/ grids/ pub-report.htm.Google Scholar
  18. [18]
    I. Foster and C. Kesselman. The Grid: Blueprint for a New Computing Infrastructure. Morgan Kauffman, 1999.Google Scholar
  19. [19]
    GGF RPC WG home page, 2006. Scholar
  20. [20]
    MPICH-G2 home page, 2006. Scholar
  21. [21]
    A. S. Grimshaw. The mentat computation model data-driven support for object-oriented parallel processing. Technical report, Dept. Comp. Science, Univ. Virginia, 28 1993.Google Scholar
  22. [22]
    E. N. G. G. E. Group. Next Generation Grids 2 Requirements and Options for European Grids Research 2005-2010 and Beyond, July 2004. pub/ ist/ docs/ ngg2_eg_final.pdf.Google Scholar
  23. [23]
    M. Klemm, R. Veldema, M. Bezold, and M. Philippsen. A proposal for openmp for java. In Proceedings of the International Workshop on OpenMP, June 2006.Google Scholar
  24. [24]
    Krzysztof Czarnecki and Ulrich W. Eisenecker. Generative Programming - Methods, Tools, and Applications. Addison–Wesley, June 2000.Google Scholar
  25. [25]
    L. Henrio et al. Proposals for a Grid Component Model. Technical Report D.PM.02, CoreGRID, December 2005.Google Scholar
  26. [26]
    Y. Nakajima, M. Sato, T. Boku, D. Takahashi, and H. Goto. Performance Evaluation of OmniRPC in a Grid Environment. In Proc. of SAINT2004, Workshop on High Performance Grid Computing and Networking, pages 658–664, January 2004.Google Scholar
  27. [27]
    Ninf: A Global Computing Infrastructure, 2006. Scholar
  28. [28]
    Novell. Mono project., 2005.Google Scholar
  29. [29]
    M. Philippsen. A survey of concurrent object-oriented languages. Concurrency: Practice and Experience, Volume 12, Number 10, pages 917–980, 2000.zbMATHCrossRefGoogle Scholar
  30. [30]
    M. Philippsen and M. Zenger. JavaParty – transparent remote objects in Java. Concurrency: Practice and Experience, Volume 9, Number 11, pages 1225–1242, Nov. 1997.CrossRefGoogle Scholar
  31. [31]
    F. Y. Tim Lindholm. The Java Virtual Machine Specification. Sun Microsystems Press, second edition edition, 2004.Google Scholar
  32. [32]
    S. Tse. Typed intermediate languages. Technical report, Dept. Comp. Science, University of Pennsylvania, 2004.Google Scholar
  33. [33]
    R. V. van Nieuwpoort, J. Maassen, G. Wrzesinska, R. Hofman, C. Jacobs, T. Kielmann, and H. E. Bal. Ibis: a flexible and efficient java-based grid programming environment. Concurrency and Computation: Practice & Experience, Volume 17, Number 7-8, pages 1079–1107, 2005.CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC 2008

Authors and Affiliations

  • Marco Danelutto
    • 1
  • Marcelo Pasin
    • 1
    • 2
  • Marco Vanneschi
    • 1
  • Patrizio Dazzi
    • 3
    • 4
  • Domenico Laforenza
    • 4
  • Luigi Presti
    • 3
  1. 1.Dept. Computer ScienceUniv. of Pisa – Italy & CoreGRID Programming Model InstituteItaly
  2. 2.EIA/FRFribourgSwitzerland
  3. 3.IMT (Lucca Institute for Advanced Studies)LuccaItaly
  4. 4.ISTI/CNR – Pisa – Italy & CoreGRID Programming Model InstitutePisaItaly

Personalised recommendations