# The FreePastry Tutorial.

This tutorial is designed to get you cooking quickly with the FreePastry API and software toolkit.

#### Version @tutorial_version@; @tutorial_date@. For FreePastry version @freepastry_version@. Maintained by @maintainer@.

## Contents

### Getting Started

- What You'll Need

### Lessons

- Lesson 0.a: Continuations.
- Lesson 0.b: Environment.
- Lesson 1: Minimal code to create/join a pastry ring.
- Lesson 2: Execute the code to launch your new ring.
- Lesson 3: Write a simple application using the commonAPI. (this will show you how to send and receive messages)
- Lesson 4: Running multiple nodes in the same JVM.
- Timer: Scheduling tasks on the FreePastry timer.
- Scribe: Group communication including multicast/anycast.
- Past: FreePastry's DHT.
- Simulator Tutorial: Simulating Larger Networks with FreePastry's Discreet Event Simulator.
- Simulator Tutorial 2: Using a Latency Matrix with FreePastry's Discreet Event Simulator.
- Application Level Socket Interface: Manage your application's communication more precicely.
- SplitStream: Multi-Tree high-bandwidth content distribution system.
- Raw Serialization: More efficient serialization of your Messages (than Java Serialization).
- Raw Serialization 2: Override raw serialization with Java serialization.
- Forwarding: Intercept application messages along the route.
- Transport Layers: How to modify FreePastry's lowest level: the transport layer.
- Cancellable Messages: Keep track of FreePastry's queue size, and optionally cancel pending messages.

### Coming soon:

- Advanced Scribe: Policies.
- Advanced Environment.

## What You'll Need

Before you begin, you should meet the following requirements.

1. An intermediate level of knowledge in the Java programming language. The Java Tutorial is a good place to start.
2. A copy of a current JDK, @min_jre_version@ or later. Sun's J2SE.
3. A basic understanding of Pastry overlay structure. Read the short overview [pdf][ps] of FreePastry.
4. Have a working copy of FreePastry-@freepastry_version@ or later. You can simply download the current jar, or download and build the source.