First, about installing Cygwin, Marcus sent me this: This works for me: 1. Go to www.cygwin.com 2. Click on the "Install or Update now" below the green icon, and do whatever you need to do in your browser to run it. 3. Click "Next" on the "Cygwin Net Release Setup Program". 4. Select "Install from Internet" and click "Next". 5. Select your preferred install location, and "Unix" for Default Text File Type (the latter shouldn't be crucial). Click next. 6. Select some suitable temporary location on "Select Local Package Directory" panel. Click "Next". 7. "Direct Connection" should work on the next panel unless you need a proxy server (e.g. satellite broadband). Click next. 8. I find the "http://mirrors.kernel.org" is a very reliable mirror. Click "Next". 9. The metadata about packages will download and be parsed. Now you should see a list of package categories. Click on "Devel". 10. Scroll down until you see gcc. There will be packages like "gcc", "gcc-ada", "gcc-core", "gcc-g++", and then a bunch of gcc-mingw-*. Below that you'll see "gcc-objc". Select that. I'd get "gcc-java", too, or just all of those. Click "Next". 11. Downloading and installation will begin. You probably don't want either "Create icon on Desktop" or "Add icon to Start Menu" because presumably you've already done that. Now, about installing the Swarm pretest. Get this: ftp://ftp.santafe.edu/pub/swarm/binaries/w32/latest/Swarm-2.2-pretest-11.tar.gz and untar it somewhere. You make that directory known to Cygwin as Cygwin as /Swarm-2.2. You do that by mounting the directory. Literally, its like this. In a Cygwin terminal type: cd /cygdrive/X (replace "/X" with "/" and then the letter of the drive you want to install Swarm on) tar zxf ~/Swarm-2.2-latestPretest.tar.gz (where "-latestPretest" is the latest pretest available) mount 'X:\Swarm-2.2' /Swarm-2.2 Remember to set SWARMHOME to /Swarm-2.2 and PATH to something like /Swarm-2.2/bin:/bin. Inside the Cygwin terminal, that would mean typing export SWARMHOME=/Swarm-2.2 export PATH=/Swarm-2.2/bin:/bin:$PATH I'm not a windows user, but I believe you can do that in the environment settings of the system icon in the control panel. To use GCJ, compile like below. (This is for Java heatbugs.) Note the addition of "-L/Swarm-2.2/lib" -- that's just to pick up the modified libgcj.a. CLASSPATH=/Swarm-2.2/share/swarm/swarm.jar gcj --main=StartHeatbugs *.class /Swarm-2.2/lib/gcj*.o -L/Swarm-2.2/lib -o jheatbugs And run the binary like so: LTDL_LIBRARY_PATH=/Swarm-2.2/lib ./jheatbugs For using Sun JDK, you may need to edit the javacswarm and javaswarm scripts. Or tweak jdkcswarm and jdkswarm to name the version of Sun JDK you prefer. ================================================================= These are notes forwarded to me by Tim Howe . As you can see, he wrestled with the problems of downloading the package, untarring it, and I think some of the advice he gives here is not exactly the "right thing", but he said it worked, and he was willing to write it down, so I respect that very much. Straight-shot Unambiguous Instructions for Installing and Confirming Java-based Swarm on Windows XP, etc. An Attempt at a Complete Step-by-step Procedure Assuming Almost No Foreknowledge of Unix, Cygwin, Windows, Java, or Swarm This document tells how I installed Java-based Swarm on Windows XP, confirmed by the successful invocation of the Swarm sample application jheatbugs. I have included additional notes for readers who might not be familiar with some of the software used. Thanks to Mary Conner of Utah State University for helping to straighten out some of the kinks in these instructions. Although Swarm has been reported in the past to work without Cygwin (the free Unix-like software tool set from Cygnus Corporation), as of November, 2003, Swarm appears to require Cygwin. Even if Cygwin isn't absolutely required, it can be very useful when you're working with Swarm, for example in invoking ancillary tools such as replicator.pl. So these instructions assume the need to install Cygwin, as well as Java, Swarm itself, and jheatbugs. Part 1: Installing Cygwin. I used Cygwin's setup.exe to perform its Default behavior, and explicitly to Install the few extra packages required by Swarm (see the list below). Details: open cygwin.com in a browser. Choose "Install or update now!" That merely downloads a program named setup.exe. Open setup.exe and accept all defaults (for Local Package Directory, just use a directory with plenty of space; for Download Site, pick a mirror at random from nearby mirrors). If you have already installed Cygwin and your installation of Cygwin is possibly incorrect for Swarm, you should uninstall it by choosing Uninstall at the top level of setup.exe's Select Packages window. Then use the Windows regedit command to delete the two Cygnus Software entries in the registry (the Uninstall does not delete them). It's probably not necessary to uninstall the Desktop icon and the Start Menu icon. For more information, google . In addition to the Cygwin default packages, I explicitly installed Devel - make Editors - VIM (some may prefer Emacs or another editor) Interpreters - Perl Libs - libpng12 Libs - tcltk Text - less Details: click the "+" on each appropriate Category, scroll to the appropriate package, and then click the little circular icon until it shows a version number (use the first, highest version number unless you have some particular reason to choose an older version). You can install these packages at the same time that you install the base (default) installation, or afterward. Note: you may wonder why we need Text - less. The reason is that Cygwin's "man" requires "less", and as of November, 2003, there seems to be a bug in Cygwin's dependency logic such that it sometimes installs "man" without installing "less". If you invoke setup.exe and choose "Install from Internet" more than once, invocations after the first one are economized - setup checks the files and refrains from downloading if Cygwin has not updated them. "Install from Local Directory" may be faster, but not by a whole lot - and it is reported not to work with Windows XP.) To confirm the installation, I chose Start - Programs - Cygwin - Cygwin Bash Shell. That opened a window containing the Bash shell. In the shell, I invoked pwd ls man ls I saw no error messages; I saw the user manual for the command "ls". I pressed q to exit from the user-manual utility "man". Part 2: Installing Java. In a browser, I opened java.sun.com and downloaded Java Development Kit (JDK) 1.4.2_02. I accepted all installation defaults. To confirm the correctness of the installation, in a Cygwin window, I invoked java -version I saw no error messages; I saw the correct Java version number. Details: on an earlier attempt at installing Swarm 2.2-pretest on Windows XP, I installed JDK 1.4.1 rather than JDK 1.4.2_02. However, after I completed the installation, when I invoked javaswarm (see below), there was no response (except that my Cygwin prompt came back). Further investigation showed that the program was silently dying inside the call to Globals.env.initSwarm(). With JDK 1.4.2_02 this problem did not occur. Part 3: Installing Swarm. I downloaded Swarm-2.2-pretest-10.tar.gz.tar. The directory I happened to put it in was c:/software/4/swarm. (As explained below, in my profile file I set an environment variable so that I would no longer have to use the hardcoded directory name. Of course, throughout this document, you will substitute the path appropriate for you wherever you see my path ".../software/4/swarm".) I invoked cd c:/software/4/swarm tar xvf Swarm-2.2-pretest-10.tar.gz [pj snipped a digression here] That unpacked the archive into the file c:/software/4/swarm/Swarm-2.2. To check the existing mount points (as suggested by SwarmOnlineFAQ.html, which I found through google), in a Cygwin window, I invoked mount -m The response was mount -f -s -b "C:/cygwin/bin" "/usr/bin" mount -f -s -b "C:/cygwin/lib" "/usr/lib" mount -f -s -b "C:/cygwin" "/" mount -s -b --change-cygdrive-prefix "/cygdrive" These appear to be the default Cygwin mount points. Details: in Unix, a mount point is a virtual top-level directory that is mapped to some directory in the Windows file system. For example, given the mount points shown above, /usr/bin is a virtual top-level directory because it's a directory whose name starts with "/", which in Unix indicates the top of the directory tree, just as "c:" or "d:" indicates the top of a directory tree in Windows. Given the mount points above, /usr/bin is exactly equivalent to c:/cygwin/bin. Some Cygwin utilities require the mount points listed above, and Swarm utilities require a mount point for /Swarm-2.2. In a Cygwin shell, I invoked export HOME=/cygdrive/c mount $HOME/software/4/swarm/Swarm-2.2 /Swarm-2.2 I ignored the warning message "/Swarm-2.2 does not exist". I confirmed the mount by invoking ls /Swarm-2.2 and seeing no error messages. Through my profile file I invoked export HOME=/cygdrive/c export SWARMHOME=$HOME/software/4/swarm/Swarm-2.2 export JAVA_HOME=$HOME/j2sdk1.4.1 PATH="." PATH="$PATH:$SWARMHOME/bin" PATH="$PATH:$HOME/cygwin/bin" PATH="$PATH:$JAVA_HOME/bin" export PATH alias ls="ls --color=yes" alias sp=". (Replace this sentence, including the parens, with the pathname of your profile file.)" # source profile export PS1='\033[32;40m-$PWD \!- \033[37;40m' # white on black; green prompt Details: in "c:/Documents and Settings", on some Windows systems at least, you will find a directory whose name matches your Windows user name. In that directory, create a file named .bash_profile and put the commands above into the file. Close all Cygwin windows and open a new Cygwin window (it will load the definitions from your new profile file). To confirm, invoke echo $SWARMHOME and see if the response looks correct. From then on, whenever you change your profile file, invoke sp in every open Cygwin window to load ("source") the new definitions. For more information, google , or in a Cygwin shell type man bash and press the space bar till you find to an explanation of profiles. Since my Java directory is c:/j2sdk1.4.1, and $SWARMHOME/bin/javacswarm has /cygdrive/j2sdk1.4.2 hardcoded in, I modified $SWARMHOME/bin/javacswarm (in two places) to change the hardcoded path to $JAVA_HOME. I also changed "jikes" to "javac". Thus $SWARMHOME/bin/javacswarm, instead of the lines ... _JAVACLASSES='/cygdrive/c/j2sdk1.4.2/jre/lib/rt.jar' ... jdkdir="/cygdrive/c/j2sdk1.4.2" ... JAVAC="jikes" ... contains ... _JAVACLASSES="$JAVA_HOME/jre/lib/rt.jar" ... jdkdir="$JAVA_HOME" ... JAVAC="javac" ... I modified $SWARMHOME/bin/javaswarm also (in two places) to change the hardcoded path /cygdrive/c/j2sdk1.4.2 to $JAVA_HOME. Since $SWARMHOME/bin/javaswarm contains no reference to jikes, I made only two changes to the file, not three as for javacswarm. Part 3: Installing Jheatbugs. From swarm.org I downloaded jheatbugs-2.1.tar. I used tar to unpack the archive (tar worked fine on jheatbugs-2.1.tar, though it had failed on Swarm-2.2-pretest-10.tar.gz.tar, as discussed above). I chose to unpack jheatbugs into my directory c:/swarm/src. I invoked cd c:/swarm/src/jheatbugs-2.1 # that's where I put StartHeatbugs.java make The response was an error message regarding the constructor for FArgumentsImpl. This error occurs because in earlier versions of Swarm, the constructor took three arguments, and now it takes only two arguments - but jheatbugs has not yet been changed to reflect the change in the constructor's arguments. I edited HeatbugModelSwarm.java and removed the third argument to the constructor (with the value "true"). I invoked make I saw a warning message about "$" in identifiers, but I ignored it. I invoked ls -l *.class I observed the newly created class files. I invoked javaswarm StartHeatbugs I got the error message BLT support file `bltGraph.tcl' not found If the directory `/cygdrive/c/software/4/swarm/Swarm-2.2/share/blt2.4' not the intended location for the BLT support files, please adjust BLT_LIBRARY to the right place. I looked for bltGraph.tcl in all of $SWARMHOME and found no copy. The environment variable BLT_LIBRARY was not defined. However, I did find a copy of bltGraph.tcl in an old installation of Swarm-2.1. I copied bltGraph.tcl, and all other files in the same directory with it, to my new installation of Swarm with the command cp -r c:/Swarm-2.1.1/share/blt2.4/* c:/software/4/swarm/Swarm-2.2/share/blt2.4/ I invoked javaswarm StartHeatbugs and the program ran correctly. ====================================================