Jacob - The Java Commando Base
Jacob is a Java class browser and project manager for Emacs.

Unlike traditional browsers the windows are vertically aligned and the full vertical screen size is still reserved for editing. Height of browser lists (packages, classes, methods) can be dynamically changed. Now you can spend all the screen real estate for your methods or classes, just as you like it. Additionally Jacob generates a makefile to compile, run, and/or archive (with zip and rcs) your application.

See how Jacob fits together on a screen with NTEmacs (works with XEmacs too): (800*600 Screen Resolution)
Here are more menu and dialog screen-shots. Especially noteworthy is this picture of the Class Wizard.

You can always find the latest version of this page at: http://www.kclee.com/clemens/jacob/

Table of Contents


System Requirements

Developed on Linux (KDE), tested on Windows 95/NT and Solaris (fvwm95).


Latest Version: jacob34.120.zip
If you want to get notified when new updates for Jacob are available press the following button:

(thanks for your interest)
If your browser is not configured to send email, you can send your request manually to me


The installation process might look a little bit complicated. But that's only if you have not used the Emacs editor yet. In that case it is in question if Jacob is useful for you anyway. (Hey, how about dropping your favorite editor and switching to Emacs on this occasion?) The other installation complication comes from the fact that Jacob and Emacs are intended to share the screen real estate in a way it is shown on this screen shot. Of course Jacob knows how to put itself into position. But you have to give Jacob the exact geometry data (only once) so it can change the Emacs frame to the correct size. (This can be specified very easily through the preferences dialog.)
  1. Downloading Java Development Kit and Swing
  2. Jacob requires the Java Developer's Kit (JDK) Version 1.1.3 or above. If you do not already have this version installed, you can download it via web from Javasoft. Follow the link to "JDK 1.1" and download the version applicable to your environment.

    Swing is part of the Java Foundation Class library which will be part of the next JDK 1.2. Swing can be downloaded from Javasoft's Developer Connection (requires membership). If you don't have a password yet, you can get it for free there. By the time of this writing the latest Swing version is 1.0.1 (part of JFC 1.1).

  3. Downloading the Emacs Editor and the Gnuserv Package
  4. Windows: For editing source code while browsing through your project classes you need the Emacs editor and the Gnuserv package. You can get a version for Windows 95/NT from the Gnu Emacs for Windows NT and Windows 95 Page. There you can also find instructions for installing the Gnuserv package.

    Unix: Jacob does work only with XEmacs not Gnu Emacs under XWindows. Fortunately the Gnuserv package is part of the XEmacs distribution which itself seems to be part of most standard Unix/Linux installations.

    The Gnudserv package provides a mechanism to send the Emacs editor external commands like loading a specific file or changing the size of the editor window etc. After installing the package as described at the above location you have to put the following statements in your ".emacs" file to get the gnuserv functionality:

       (require 'gnuserv)
       (setq gnuserv-frame (selected-frame))

    The last statement is optional and prevents Emacs from popping up a new frame every time a new java source file is loaded through a command from Jacob.

  5. Downloading other Utilities
  6. If you want to use the makefile and configuration management services from Jacob you need such standard tools like make, mv, rm, zip and rcs. I did not find a free make tool for Windows that worked for me. I had problems with the gnu make from Cygnus because it needs a special shell for its sub processes. I use either smake from Symantec or nmake from Microsoft. Both execute the generated makefiles well.
    The generated makefile uses the unix synonyms 'mv' and 'rm' instead of 'move' or 'del' under Windows for compatibility reasons to the Unix environments. All the Gnu tools for Windows can be found at the Cygnus Gnu-Win32 Project Page. Unfortunately you have to download almost the hole package (> 10 MB) and every program needs a big cygnus.dll (~1MB) in memory even if you only use one or two little programs out of the compilation. If you don't have or don't want to install 'mv' and 'rm' under Windows here are two simple batch files that do almost the same: mv.bat and rm.bat
    A free zip utility for every operating system can be found at the  Info-ZIP home page.
    rcs57nt.zip contains x86 binaries for the RCS tool. RCS needs additionally the gnu diff tool.

  7. Downloading the Java Commando Base
  8. Just download the following archive: jacob34.120.zip

  9. Unzip it
  10. If you just update Jacob, make sure you get your old jacob.ini file to safety up-front.

    The zip-archive consists of the directories/packages jacob, ccl, javancss, and html. The last one is a HTML browser package (see Copyright Notice). Put them all somewhere so that your classpath can later on reach all these packages. May be you should create an extra directory (for example 'jacob34.120') first, so these packages are separated from the rest of yours and you know later on which directories belong to the Jacob application.

    Make sure you use an up to date version of unzip. Some older versions (someone had problems with version 3.0; I use version 5.30) extract everything in lower case letters. In that case use option -U and everything will be fine too.

  11. Set the Environment Variables
  12. Go to the jacob directory and edit the JACOB.BAT file to set the CLASSPATH and JAVA_HOME variables according to your system. For example, if you extracted the archive inside the directory c:\java_apps\jacob34.120 you got the directories c:\java_apps\jacob34.120\jacob, c:\java_apps\jacob34.120\ccl\util, c:\java_apps\jacob34.120\ccl\awt, c:\java_apps\jacob34.120\javancss and c:\java_apps\jacob34.120\html (there might be even more). Than your CLASSPATH should look something like c:\java_apps\jacob34.120;c:\jdk1.1.5\lib\classes.zip;c:\swing-1.0.1\swingall.jar. It should also point to packages of your projects you want to use with Jacob. (This can also be done inside of Jacob. Jacob let's you specify the CLASSPATH for every project separately.) Set also the JAVA_HOME variable. As an alternative you can go to the jacob directory and edit in the JACOB.BAT file the entries for the CLASSPATH and JAVA_HOME variables. Later you can use JACOB.BAT to start Jacob. For Unix users the same applies accordingly to the jacob file. It's file mode must also manually be change to a mode so that it can be executed.

  13. Setup Windows Shortcut
  14. For Windows users there are two icons in the jacob directory that can be used for shortcuts.


    One is for 16 color desktops, the other for 256 colors.

    [Windows users: If you use the batch file to start Jacob from a shortcut, you might want to replace the java.exe invocation with javaw.exe. Then you don't get this nasty extra dos frame. But before doing so, make sure Jacob works as intended, because otherwise you might miss some debug information.]

Starting Jacob and Basic Setup

  1. Start Emacs
  2. The Gnuserv server should also be active now.

  3. Start Jacob
  4. Run the JACOB.BAT batch file.

    If you encounter the following error,

    ...java.lang.NoClassDefFoundError: com/sun/java/swing/JList
          at jacob.Controller.<init>(Controller.java:318)
          at jacob.Main.main(Main.java:17)
    please read the faq.
  5. Setup of the Screen Real Estate
  6. Jacob expects exactly one Emacs full screen window (frame). It reduces the Emacs frame-width a little bit and puts the Jacob frame on the right side of the screen.
    To control this behavior, select "File->Preferences..." from the menu and set the "Jacob Frame Width", "Emacs Original Frame Width", and  "Emacs Working Frame Width" parameter until the Emacs and Jacob frames are perfectly aligned on the screen. Changes will be immediately active after clicking the OK button.
    Set both "Emacs Width" parameter to the same value if you don't want to change the original width of the Emacs frame.
    (Under Solaris there is a bug that puts the Jacob frame after closing this dialog (with OK) at the wrong position. As a workaround just restart Jacob. It's no problem, because the dialog won't be used very often.)


The purpose of this mini-tutorial is to get new Jacob users started and to demonstrate some of it's features. On this page is also a mini-FAQ included.


The documentation (manual) is on a separate page. Its structure is equivalent to Jacob's menu structure.

What's New

Version 34.120 has been released on May 4, 2002

A couple of minor bug fixes.

Fixed Bugs

  1. 'jacob' shell script could not follow relative link to Jacob home.
  2. Generated project shell scripts could not follow relative link to each project home.
  3. Original classpath gets added in generated Unix project shell script.
  4. Usage of $@ instead of $* in generated Unix project shell script.
  5. tools.jar from the JDK is now in Jacob's class path by default, needed e.g. to create javadocs.
  6. Original security manager gets restored before exiting Jacob.
  7. XEmacs did not start up on Solaris when Jacob gets started first.
  8. Default JDK home directory gets now setup correctly, JRE home was used by before.
  9. Missed distributing licenses directory with example open source licenses for the Licensor tool (which adds a license header to each source file).
Here is the documentation about changes of previous versions.

Copyright Notice

The copyright for Jacob is owned by myself, Chr. Clemens Lee. Jacob itself is distributed under the GNU General Public License version 2.

Jacob contains JavaDump and the JCF class file manipulation package (only binaries). "All included source code, binaries, and information ("the Software") are Copyright 1997 Matt Yourst ("the Author"). Permission is granted to use the included files [in Jacob's case the packages lti.java.jcf] for any purpose so long as appropriate credit is given to the Author."


Additional credits to

Related Links

An addition to Emacs and Jacob is BrowseJavadoc. It lets you search for keywords in the Java API Documentation and loads the respective javadoc page into your browser and points to the right place. It's intended to use inside an editor macro. Hit F1 and you get the documentation to the word your cursor is over, similar to an ordinary IDE. BrowseJavadoc comes together with an Emacs Lisp package.

Another useful java program is Echidna by Luke Gorrie. It's not specially useful for Jacob or for software development in general, but if you have more than one or two java applications running at the same time it saves quite some system resources, especially under Windows 95. It's a tool to execute different java applications in one virtual machine. Also, if you use Echidna to start the javac compiler from it (thought you can't use a Makefile then), that will save you the loadup time of the compiler for each class.

Well, the most obvious things that Jacob is missing, is a debugger, a gui builder and maybe an object-oriented modelling tool for UML (unified modelling language). I have put some thoughts (as of 01/12/1998) about these tools on a separate page.

General Java Stuff

Useful Java Programs

Emacs and Win32 Stuff

Java Browsers and/or IDEs

Private Local Links

These links are only for my private and convenience use.
Chr. Clemens Lee, email to: clemens@kclee.com           (my resume)