The Protelis Programming Language for Aggregate Computing

Practical aggregate programming, hosted in Java.

Learn more

Why Protelis?

The goal of the Protelis language is to make it easier to build a resilient and well-behaved networked system out of an assortment of different potentially mobile devices. Protelis is designed for the paradigm of "aggregate programming", a way of thinking about and decomposing problems that can be solved with a network of distributed sensors and computers. Aggregate programming tries to produce reliable and robust collective behavior from uncoordinated local interactions between machines. That's hard to do, but Protelis helps!

Protelis is a language

Protelis is a language, not just a library. Because it's a language, Protelis can handle some of the tough parts of distributed systems implicitly, preventing some common mistakes and problems. Although Protelis is not Java, it's designed to look similar. Developers who already know Java can more easily learn Protelis.

Protelis and Java

Protelis is hosted in and integrated with Java. It is lightweight and can take advantage of the large and well-established ecosystem of Java infrastructure and libraries.

Field calculus

Protelis can ensure safe and resilient composition because it is built on field calculus. Field calculus is a theoretical model of aggregate programming much like lambda calculus is for functional programming.