--- Setting up your Environment --- Chapter 1: Setting Up Your Environment As much as I would like to dive into Tapestry right now, we must first talk about your development environment. The joy and the pain of Java development is the volume of choice available. There's just a bewildering number of JDKs, IDEs and other TLA1s out there. Let's talk about a stack of tools, all open source and freely available, that you'll need to setup. Likely you have some of these, or some version of these, already on your development machine. * JDK 1.5 Tapestry 5 makes use of features of JDK 1.5. This includes Java Annotations, and a little bit of Java Generics. * Eclipse 3.3 Since we're emphasizing a free and open source stack, we'll concentrate on the best IDE. Eclipse 3.3 comes in various flavors, and includes a reasonable XML editor built-in. * Jetty 5.1 Jetty is an open source servlet container created by Greg Wilkins of Webtide (which offers commercial support for Jetty). Jetty is high performance and designed for easy embedding in other software. I've chosen the 5.1 release, rather than the cutting edge Jetty 6, because it is compatible with Jetty Launcher (see below). You can find out more about Jetty from its home page: {{{http://mortbay.org}http://mortbay.org}}. You can download Jetty from {{{http://docs.codehaus.org/display/JETTY/Downloading+and+Installing}http://docs.codehaus.org/display/JETTY/Downloading+and+Installing}}. Note about Log4J: Jetty includes an incompatible version of Log4J. If using Jetty 5, you must get a more recent copy of Log4J, version 1.2.14 or later, and replace the copy of log4j.jar in the Jetty <<>> (external libraries) directory. Just delete the old log4j.jar and copy the new one in its place. * Jetty Launcher Jetty Launcher is a plugin for Eclipse that makes it easy to launch Jetty applications from within Eclipse. This is a great model, since you can run or debug directly from you workspace without wasting time packaging and deploying. Jetty Launcher was created by Geoff Longman, and is available from http://jettylauncher.sourceforge.net/. Installation is easy, simply point Eclipse's update manager at {{{http://jettylauncher.sourceforge.net/updates/}http://jettylauncher.sourceforge.net/updates/}}. If you are behind a firewall, you will need to set up a manual proxy configuration in Eclipse (Window, Preferences..., General, Network Connections). <> * Maven 2.0.8 Maven is a software build tool of rather epic ambitions. It has a very sophisticated plugin system that allows it to do virtually anything, though compiling Java code, building WAR and JAR files, and creating reports and web sites are its forte. Perhaps the biggest advantage of Maven over, say, Ant, is that it can download project dependencies (such as the Tapestry JAR files, and the JAR files Tapestry itself depends on) automatically for you, from one of several central repositories. We'll be using Maven to set up our Tapestry applications. Maven 2.0.8 is available from {{{http://maven.apache.org/download.html}http://maven.apache.org/download.html}}. * Maven Plugin The Maven Plugin for Eclipse integrates Maven and Eclipse. It includes some features for editing the pom.xml (the Maven project description file which identifies, among many other things, what JAR files are needed by the project). More importantly, a Maven-enabled project automatically stays synchronized with the POM, automatically linking Eclipse project classpath to files from the local Maven repository. The plugin is available by pointing the Eclipse update manager at {{{http://m2eclipse.codehaus.org/update/}http://m2eclipse.codehaus.org/update/}}. Make sure to use version 0.0.10. * Tapestry 5.0.x You should not have to download this directly; as we'll see, Maven should take care of downloading Tapestry, and its dependencies, as needed. <> === {{{first.html}Continue on to Chapter 2: Your First Tapestry Application}}