Piccola is a small, pure language for building applications from software components. Piccola is small in the sense that its syntax is tiny, and it is pure in the sense that it provides only compositional features — computation is performed entirely by components of the host programming language. The semantics of Piccola is defined in terms of a process calculus, an extension of Milner’s pi calculus in which values communicated are forms, rather than tuples. A "form" is essentially an extensible nested record which also serves as a namespace in which expressions may be evaluated. This simple mechanism is responsible for much of the expressive power of Piccola.



There currently exist two experimental implementations of Piccola: JPiccola is used to compose Java components, and SPiccola can compose components written in Squeak.


  • Download the JPiccola 3.7c distribution (~800KB zip file — includes JPiccola jar file, JPiccola Guide (pdf), and demo scripts
  • Download external jar libraries (copy these to the extlib folder of the download, if you do not already have newer copies)
  • Browse or download the JPiccola source files (cvs repository)


Please be aware that the syntax of Piccola has evolved over time. The current download implements the Piccola 3 syntax. Older papers may use Piccola 2 or Piccola 1 syntax.


For a brief introduction to Piccola, see the paper Applications = Components + Scripts — A tour of Piccola" (This paper uses the Piccola 2 syntax.) For a more thorough and up-to-date overview, see the JPiccola Guide (included in the JPiccola distribution).

There are several PhD theses, Diploma theses and Student projects on Piccola.

The semantics of Piccola are described in the PhD thesis of Franz Achermann, Forms, Agents and Channels — Defining Composition Abstraction with Style. Much of the motivation for introducing forms is explained in the paper, Explicit Namespaces.

Last changed by admin on 21 April 2009