# The Launch Module Examples

For these examples you need to create three launch configurations for your tools tools
(the name of the launch configuration is the quoted string in the list):

* “Prepare” – An External Tools configuration which prepares my test environment
* “Server” – A PyDev supplied, Python Run configuration to launch my Python server
* “Client” – A Java configuration to launch my Java client

## Running The Examples

1. Create three launch configurations named as above
2. Right-click on the desired script (e.g. 01 simple launch.js)
3. Choose Run As –> EASE Script

Alternatively paste the lines from the examples into the Rhino Script Shell
console. You get auto-completion of the names of the launch configurations
and the launch modes too!