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
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/
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).
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:
(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
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.
Just download the following archive: jacob34.120.zip
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.
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,
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.
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.]
The Gnuserv server should also be active now.
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.
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.)
A couple of minor bug fixes.
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."
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.