Tools of the Trade

These are tools that will be very useful if you want to create a project that leverages the R3 toolkit. There are three core components, the Eclipse IDE, Java, and Subversion.

Required / Highly Recommended

  1. Eclipse IDE
    The Eclipse IDE is (in my opinion) the best development environment out there (regardless of programming language). I occasionally work in C# with VS .NET 2005, and they have different advantages... but Eclipse has some features that are way ahead of the game. Trust me on this one. At the time of this writing, we use Eclipse 3.2. Remember, CTRL+1 is your friend. I also use ALT+SHIFT+R a whole bunch.
  2. Java 6
    Java is a great language. I also like C#, but the Java development environment (see above) is so good that I only use C++/C# if I absolutely have to. Also, I upgraded to Java 6 before I started the R3 project, so I have no idea if R3 will even compile under Java 5 or earlier. If you are on Java 5, let me know if you run into any trouble compiling. If you are on any version earlier than Java 5, I can't really help you. There really isn't any reason to not use Java 5.
  3. Java Comm
    One of the drawbacks of Java is that you don't get easy access to system-level resources, like the COM ports. Java Comm provides that access. Java Comm is currently on version 3.0, but there is no 3.0 release for the Windows platform. Instead, we use the older 2.0 release. You can probably find it with a quick Google search. There is also an open-source implementation of Java Comm called rxtx.

    If you would like to leverage R3's pen streaming functionality, you will need to install Java Comm 2.0 in each of your Java installation directories. For example, in my C:\Program Files\Java\jre1.6.0\lib, I have copies of the comm.jar and files. I also place these two files in my C:\Program Files\Java\jdk1.6.0\jre\lib. You do not need to worry about win32com.dll, as R3 includes it. However, if you are making your own custom solution, you will need to place the dll in the working directory of your software.

  4. Java Advanced Imaging
    JAI is a high-level image processing library. It's good in some ways, bad in others. R3 uses JAI, so you will need to install it. In reality, we just include the JAI jars in the R3 distribution, but for higher performance you will want to install JAI's performance packs in each of your JREs.
  5. TortoiseSVN
    R3's source code is hosted on Google's subversion servers, so you will need a subversion client to download the code. At the moment, I would recommend downloading 1.3.5, even though early access versions of 1.4 are available. In testing, I found that 1.4 uses a new Subversion working copy format, which is incompatible with the current version of Subclipse (which is really useful).

    Tortoise is a plugin for Windows Explorer, and will let you check out and manage code through the right-click menu.
  6. Subclipse
    If you host your own project on a subversion server, I would recommend installing Subclipse, which is a subversion plugin for Eclipse. It allows you to easily track refactored code without the pain. If you do not install Subclipse, Eclipse will be unaware of your subversion working copy. At the moment, it does not support the same working copy format as TortoiseSVN 1.4, so I'd recommend not installing the newest version of Tortoise, so they can work together.


  1. Adobe (Macromedia) Flash Professional 8/9
    A great tool for throwing together graphical UI prototypes or interactive storyboards without having to write a bunch of code. Currently, there is an alpha release of Flash 9 that supports ActionScript 3.0. AS3 is substantially different from AS2. If you are a Flash hacker, then AS3 might confuse you for a day or two. However, if you are a Java hacker and have never played with Flash before, I would recommend jumping straight into Flash 9 and AS3. R3 can interface with Flash. You build a prototype UI in flash, and can script your UI through R3's streaming pen actions.

    I have a love/hate relationship with Flash. It is great for making quick and dirty UI prototypes. However, pretty soon you hit a ceiling and ask: "Why can't I just hook this up to my Java/C# backend?" Adobe provides a 30-day trial so you can poke around and see if it works for you.
  2. Cygwin
    Some things are better in a UNIX-like environment. Period. While R3 does not leverage any packages from UNIX-land, many times I will find that I pop open cygwin to do something quick, such as examining a Postscript file with vi/emacs, using telnet to test one of my socket-based programs, or ssh-ing into a web server to manage my documentation. With cygwin, you can also take advantage of command-line subversion (if you dislike TortoiseSVN). If you are already in Mac OS X-land, good for you. For Windows folks, I recommend taking a look at Cygwin when you have the time.


Ron B. Yeh
Stanford University