July 6, 1999

Open Source Development Tools

I'm currently thinking about revising my Intro to Java Programming Course to split across two semesters, one focusing on basic object oriented principles and techniques and the other focusing on GUI design and programming. Right now I'm thinking about the first semester, and part of what I'd like to do is use better tools such as debuggers, profilers, black and white box testers and so forth. This is in an academic setting where I can't require students to purchase anything, and where I don't want them to depend on proprietary systems. Students are about evenly split between Unix and Windows with an occasional Mac thrown in for spice. Consequently I am looking for free, preferably open source, and preferably cross-platform tools including:

I'd like a simple IDE that isolates programmers from CLASSPATH details. Otherwise it should have pluggable features that allow the easy integration of different editors, compilers, runtimes, profilers, debuggers, and other tools. I do not specifically need visual RAD (rapid application development) tools at this time.

Before responding, please note what I am not looking for. I am aware of the various payware solutions like Visual Cafe, JBuilder, Visual Age for Java, NetBeans, and so forth (including their watered down academic and evaluation versions). These most definitely do not suit my needs for this project. Beyond that, any suggestions you have are greatly appreciated. Please email them to elharo@ibiblio.org. No free books this week, but I hope to eventually incorporate the responses into an improved course for everyone to learn from.

Summary Answer

There were many suggestions for various tools, though most of them failed to fit my needs for one of three reasons:

There were some good and useful tools suggested, however. I've winnowed down the list to a few I'll be looking more closely at in the future.

The JDK 1.2 includes basic profiling information as an undocumented option to javac. Supporting tools include

Testing Tools

Besides jdb the only debugger anybody suggested was IBM's alphaWorks JIKES Debugger. Unfortunately this is limited to Java 1.1.6. I hope there'll be a lot more debuggers in the future once the Java Platform Debugging API is finalized. Also, no none pointed to any good tutorials on jdb. Documentation for that debugger seems severely lacking.


A lot of IDEs were suggested but most of them were payware, and not usable in a class setting. The exceptions were

I'm going to keep an especially close eye on BlueJ.

Original Answers

From: Jeff Rogers <jorogers@nortelnetworks.com>
To: "'elharo@ibiblio.org'" <elharo@ibiblio.org>
Subject: Open Source Dev Tools
Date: Tue, 6 Jul 1999 14:03:07 -0400 

A course I recently attended used an IDE called "Kawa". Most of the engineers in the class liked it fairly well, and these are people who've worked with JBuilder, Visual Cafe, etc. I liked it too (though not as well as CodeWarrior). Not sure how well it works on a Mac. See <http://www.tek-tools.com/> for more info. From their web site: "KAWA is currently available for a 30-day free evaluation at www.tek-tools.com. Pricing for KAWA starts at $59 for a single developer license. Special academic and volume quantity pricing is also available."

The company also offers a separate GUI-builder product. I've tried it out but didn't care for it much. I found it to be one of the more awkward of the interactive GUI-builders. My comparisons are with JBuilder and Visual Cafe.

Have you considered trying to work out a deal with a tool provider where they let you use time-limited versions in return for the publicity? Just a thought.... Best of luck....

-- Jeff Rogers jorogers@nortelnetworks.com

Sender: nsandhu@water.ca.gov
Date: Tue, 06 Jul 1999 09:00:32 -0700
From: Nicky Sandhu <nsandhu@water.ca.gov>
To: elharo@ibiblio.org
Subject: tool suggestions

Hello, Some of the other tools that are freely available and might be useful are

From: Olivier Dedieu <Olivier.Dedieu@inria.fr>
Content-Transfer-Encoding: 7bit
Date: Wed, 7 Jul 1999 08:17:37 +0200 (MEST)
To: elharo@ibiblio.org
Subject: Open Source Development Tools

Hi Elliotte,

Here are some entries of our 'Java Channel' (which is a kind of shared bookmarks) concerning :

Profilers : http://webtools.dyade.fr:8888/Java/search?term=s1:88

Testing Tools : http://webtools.dyade.fr:8888/Java/search?term=s1:2433

Debuggers : http://webtools.dyade.fr:8888/Java/search?term=s1:60

IDEs : http://webtools.dyade.fr:8888/Java/search?term=s1:68

If you are looking for other tools (lexer/parser, compiler, disassembler, scripting, ...) or anything about Java, check out the home page of the Java Channel : http://webtools.dyade.fr:8888/Java/

Feel free to subscribe the Java Channel and publish your own annotation about tools you experimented (with the link 'edit your own annotation' or 'publish annotation'). The aim of the JavaChannel is to share knowledge about Java through good or bad Web pages/tools/...

(You may also be interested by a similar channel about XML : http://webtools.dyade.fr:8888/XML/)


 Olivier Dedieu - INRIA - WebTools
 web: http://www-sor.inria.fr/~dedieu  
 Pharos team: http://webtools.dyade.fr/pharos/
 JavaChannel: http://webtools.dyade.fr:8888/Java/

by mail.transparent.com (2.5 Build 2639 (Berkeley 8.8.6)/8.8.4) with SMTP id AA931278598; Tue, 06 Jul 1999 12:30:00 -0400 X-Mailer: ccMail Link to SMTP R8.30.00.7 Date: Tue, 06 Jul 1999 12:33:36 -0400 From: Kent Johnson <kjohnson@transparent.com> To: <elharo@ibiblio.org> Subject: Classtools Content-Transfer-Encoding: 7bit Content-Description: "cc:Mail Note Part" Status:

I have used JInsight, from alphaWorks, to profile an application. The graphical display makes it very easy to pinpoint where the time is going. I recommend it.

Kent Johnson                   Transparent Language, Inc.
kjohnson@transparent.com       http://www.transparent.com

Date: Tue, 6 Jul 1999 22:19:56 -0400 (EDT)
From: ENGEL <rengel1@nycap.rr.com>
Subject: Classtools
Apparently-To: elharo@ibiblio.org


One tool that I have found is fantastic is grasp. What I like best about it is that you can set up all the classpath and path variables from the editor and they don't disturb the system settings. Also the control structure diagramming is very cool. Also handles projects well. http://www.eng.auburn.edu/grasp/

I also recommend wipeout although that is only for unix/linux. This thing is great for maintaining projects. I love the class browser. http://www.softwarebuero.de/wipeout-eng.html

Thanks for posting your class notes. They are great and I've been recommending them.

Greg Engel rengel1@nycap.rr.com http://members.xoom.com/apostle1

Date: Wed, 07 Jul 1999 12:48:49 +0100
From: David Warnock <david@sundayta.co.uk>
Organization: Sundayta Ltd
To: elharo@ibiblio.org
Subject: Classtools


re: Question of the Week: Open Source Development Tools

I will watch with interest the answers you get. Here are my 2 cents


In JDK 1.1 java has the -prof option. I have seen in the past tools to analyse the output but could not find them today. Does JDK 1.2 lose this from java?


I used to use kawa which had an OK debugger but then they tried to interface to the jdk debugger api and it seemed hopeless.

The IBM jikes debugger looks OK does not seem to have been improved for a while and does not seem to support jdk 1.2


I think you have some good points here. I used to find kawa good on the windows platform but it had 4 problems

It seems to me that these should be relatively simple to replace in a java tool but that will raise extra problems


My feeling is that we should start with a XML format configuration file that could be a standard for free IDE's. Henc, we need and example file and a DTD initially. This needs to support plugable everything ie

it will need to know

If we could design the XML file then we could start adding wrappers that take their configuration from it. We could obviously write this in java but the resource requirements might be high (multiple vm's running at the same time) and you have the problem of installing that tool initially.

I wonder if we could help that by making the tool to build the initial configuration file an applet so that there was no install complication. I realise that it cannot save a file locally very easily so maybe it just displays the output in the browser for users to "save as" them selves. The home web site would allow the jar file for the ide to be downloaded, would have a wizard to build the configuration file and also the script/batch file/whatever to execute the ide.

Some of the wrappers are really simple like compile (parse xml build command line for compiler [eg jikes] and then execute).

Others already exist at least in part (I have seen tools to build make files - but jikes dependency checking is pretty good so I have not needed them)

More complex but really useful wrappers would be for the profile output and jdb.

Other obvious things include a user interface to manage the configuration and then a user interface to allow all the wrappers to be called.

It seems to me that this might be a userful free software project that could be tackled at least in part as a project for your course.

By the way I totally agree on NOT having visual RAD tools as I think it makes learning artifically simple and just puts off learning the basics. It does not promote real understanding and in any event we find ourselves more productive working without visual RAD.

We are currently recruiting a new member of staff and I intend that they will work through your course as a starting point. I will pass on any comments that result from that.

Thanks and sorry for the long message.


-- David Warnock Sundayta Ltd

Sender: david@metalab.unc.edu
Date: Wed, 07 Jul 1999 13:34:27 +0100
From: David Warnock <david@sundayta.co.uk>
Organization: Sundayta Ltd
To: elharo@ibiblio.org
Subject: Classtools


I found the tool to look at the profiles created by java -prof it is at


-- David Warnock Sundayta Ltd

Date: Wed, 07 Jul 1999 13:33:37 -0400
From: John Richardson <jtrichar@us.oracle.com>
X-Mailer: Mozilla 4.07 [en] (WinNT; U)
To: elharo@ibiblio.org
Subject: Classtools

Debuggers: try DDD at http://www.cs.tu-bs.de/softech/ddd/, I've used this with C,C++ code with great results, it claims to work with java as well, but I haven't tried it personally. Testing: DejaGNU at http://www.gnu.org/manual/dejagnu-1.3/html_chapter/dejagnu_toc.html

Sender: mark@mail.neis.net
Date: Wed, 07 Jul 1999 13:47:03 -0400
From: Mark Donahue <mdonahue@vianow.com>
Organization: VIA
To: elharo@ibiblio.org

Konstantin Knizhnik has a tool called Jlint available at http://www.ispras.ru/~knizhnik/

 Mark Donahue
 v. 207.828.8680 x3038
 f. 207.828.8645

Date: Thu, 08 Jul 1999 08:50:51 +0200
From: Ottone Maurizio Grasso <tsvog1@comune.torino.it>
To: elharo@ibiblio.org
Subject: Classtools

For writing test code that spans more than a single unit I'm experimenting with aspects (which have a broader scope I haven't understood yet): http://www.parc.xerox.com/aop/aspectj/

AnyJ is an IDE which is free for Linux use and is based around a modular architecture: http://www.netcomputing.de/

Looking forward to read about your opinions ...

Date: Fri, 09 Jul 1999 01:14:30 -0700
From: Harish Singh <harishr@prodigy.net>
To: elharo@ibiblio.org
Subject: Classtools

Mr. Harold. I've used Jipe available from http://www.users.globalnet.co.uk/~eis/jipe.htm. This is a rudimentary IDE available with source which may be very attractive for your purpose. I've used it with jdk without swing installed and it seems to do the job very well. And most of all it supports projects and classpath overriding which is extremely important to me as well. I work with many packages and use the "project->properties" menu to include classpath for the packages I use in the current project. In short, a real gem of an IDE.

Best wishes , Harish

From: "Jim Jackl-Mochel" <jmochel@foliage.com>
To: <elharo@ibiblio.org>
Subject: Classtools
Date: Fri, 9 Jul 1999 10:42:05 -0400
Content-Transfer-Encoding: 7bit

Hey There, fan of it so far since I find that my retentive coding process catches most of what it catches.

for a Java equivalent.

to interrogate a class about its methods and then run short tours on the methods and basically exercise it a bit. To set up the data structures is not really that difficult. Managing the output and configuration will take a while.

Good luck in the hunt and please post the results on Cafe...

Date: Sat, 10 Jul 1999 22:42:59 -0400
To: elharo@ibiblio.org
From: Rich LaMarche <rlamarch@downcity.net>
Subject: Classtools

Here are two more for your list:

Profilers Jinsight from IBM http://www.alphaworks.ibm.com/formula/jinsight/

Debuggers Jikes Debugger http://www.alphaworks.ibm.com/formula.nsf/toolpreview/FD69B7E20C32011A882565 340002EC13

Rich LaMarche                Good programmers write code, 
rlamarch@downcity.net        great programmers steal code. -- Anon

From: "Ken or Pat Siberz" <siberz@mindspring.com>
To: <elharo@ibiblio.org>
Subject: Classtools
Date: Sun, 11 Jul 1999 09:09:36 -0700

Elliotte: � I am currently teaching an introductory Java course for C programmers at UC Berkeley Extension.� You may recall I talked to at the CityJava meeting in San Francisco.� � I, too, am looking for an inexpensive development environment for my students.� Here's what I've settled on: � For development I have them download the Sun JDK 1.2 and run it from the command line. � For an editor I have them download TogetherJ >from www.togetherj.com -- its free, it includes a syntax-directed editor, and it has versions for Windows and Solaris.� I also use its UML diagramming in class to show the structure of programs. � In this first course I do not cover debuggers and profilers.� I tell them that careful design and good Java programming greatly reduces the need for a debugger. � My choice for a textbook is Just Java 4th edition, though it lacks exercises. � I am glad to hear that you are considering revising your Intro textbook.� I would need a single volume for a one-semester course, since at Berkeley Extension many students are professional programmers who take only the one course.� Some may then take additional courses on advanced topics, like networking, RMI, CORBA, etc., but they need AWT, Swing and GUI in their first course. � Thanks for your excellent javafaq site.� I require that my students refer to it, and I assign readings from your Java FAQ.

From: "Booth, Peter" <peter.booth@csfb.com>
To: "'elharo@ibiblio.org'" <elharo@ibiblio.org>
Subject: Classtools
Date: Sun, 11 Jul 1999 15:52:46 -0400


You mention that you're looking for a free, open source IDE that isolates students from CLASSPATH issues. I can't suggets anything that is perfect, but an imperfect product that I have been using is the recent Visual Age Java 1.2 Tech Preview edition. It's a nice IDE for anyone who has a big fast machine and is freely available. Of course, it's a commercial product, it is limited to 500 user written classes (will your students write more than 500?), and it doesn't use files.

Good luck, whatever you decide. After 8 years of C (and Fortran) programming I still found CLASSPATH issues a bear for weeks.

Peter Booth

PS - i liked the XML book, it helped me.

From: "Booth, Peter" <peter.booth@csfb.com>
To: "'Elliotte Rusty Harold'" <elharo@ibiblio.org>
Subject: RE: Classtools
Date: Mon, 12 Jul 1999 07:17:30 +0900

The limit appears to be 500 classes imported into the workspace from the repository. This stops me from using it for real work, because I import a bunch of third-party stuff in addition to the work I do. IBM also have a Visual Age 3.0 beta Java 1.1.8 product that doesn't have the class size limitation, also available as free download.

I use this latter version 8 hours a day, and am very happy with it.


Date: Tue, 13 Jul 1999 15:29:19 -0400
From: Reginald Braithwaite-Lee <reg@klgroup.com>
Organization: KL Group Inc.
To: elharo@ibiblio.org
Subject: Classtools

Hello again!

We do not currently have any 'academic' versions of JProbe. I was interested in your comment that academic versions of other products do not suit your classroom needs. Could you explain?

I would like to understand what you, as a teacher and 'thought leader' need from tools for the classroom.


p.s http://www.ispras.ru/~knizhnik/ This guy wrote JLint, the Lint for java you were asking about.

Reginald Braithwaite-Lee                    KL Group Inc.
+1 416 594 1026 x 358                   <reg@klgroup.com>
"Bad artists copy. Great artists steal."  --Pablo Picasso
          "Real artists ship."            --Steve Jobs

Date: Tue, 13 Jul 1999 16:07:30 -0400
From: jrwilliams@fr.com (JQW)
Subject: Classtools
To: elharo@ibiblio.org


Probably a million people already mentioned jlint. I had some trouble loading the page -- IE told me I need to load some PanEuropean language support. But then with the right magic combination of clicking and "back" it showed up.


I saw the link through the Gnu-Java page, which lists some good packages you should know about if you don't already:

http://www.gnu.org/software/java/java.html http://www.gnu.org/software/java/java-software.html

Thanks for your great page,

--Jeff Williams (usually jsquared@erols.com)

Date: Wed, 14 Jul 1999 07:38:55 -0500
From: "Sears, William D" <William.Sears@navistar.com>
Subject: Classtools
To: "'elharo@ibiblio.org'" <elharo@ibiblio.org>


I have been enjoying your collection of Java news for some time and you finally had a question that I could actually contribute to.

Profilers - no idea

Testing Tools - JUnit is what I use.� Great stuff. My partner and I have made a few modifications which we need to send back to the original authors - things like NotEquals and EqualsRel (which checks for a relative tolerance).� Also, note that the original tests only "fail" if things are demonstrably false - there are some cases where it is not "true", but the test passes. (e.g. null's).

Debuggers - jdb (but see below)

IDE - JDE (http://sunsite.auc.dk/jde/)� "an Emacs Lisp package that interfaces Emacs to command-line Java development tools".� Very useful, free, and some people prefer it to the commercial development tools.� You should be able to distribute a project file to hide the class path issue, though I've never tried it.� Emacs is in just about every place that has Java, though the Mac version always tends to be a little behind the curve.� As to debugging: "jdb will be replaced by a debugger (jdebug) developed from scratch for use with Emacs".� Deserves a look.

From: rlamarch@csc.com
X-Lotus-FromDomain: CSC
To: elharo@ibiblio.org
Date: Wed, 7 Jul 1999 13:56:46 -0400
Subject: Question of the week - OS Dev Tools

Profilers - ProfileViewer Uses output of java -prof. Does not work with Java2 http://www.capital.net/~dittmer/profileviewer.html

Testing Tools - Jlint Source code provided, must be built for deployment platform. http://www.geocities.com/SiliconValley/Orchard/5802/

Testing Tools - BeanLint Analyzes and alerts you to potential problems with your JavaBeans. http://www.javaworld.com/javaworld/jw-12-1998/jw-12-beans.html

IDE - BlueJ BlueJ is an integrated Java environment specifically designed for introductory teaching. http://www.sd.monash.edu.au/bluej/

IDE - ElixirIDE The only difference between the Lite (free) version and the pay version is that you can only open 10 java sources files concurrently per project. Probably okay for your purposes. http://www.elixirtech.com/index.html

Hopefully, you'll publish the results next week. I'd be interested in what other people suggest. Keep up the great work on your site. You have one of the best sites to keep up to date with Java.


Date: Wed, 7 Jul 1999 10:46:05 -0700 (PDT)
From: "G. Barnes" <gsbarnes@u.washington.edu>
To: elharo@ibiblio.org
Subject: Re: Question of the Week: Open Source Development Tools


I saw you question about open source Java development tools on the Cafe au Lait website (http://metalab.unc.edu/javafaq/).

At JavaOne, Cygnus gave a talk about gcj, their new frontend to gcc for Java. It's not clear to me that it's completely finished (I don't think Swing is implemented yet), but it would give you the ability to use gdb to debug.

To use gdb, you'd have to compile to native object code (gcj compiles to either native code or .class files), but I presume you could debug in native code, and then recompile into .class and everything would work.

I also presume that if this idea works, you could use any other gcc-based tools, like a profiler if there is one, although presumably you'd have to be more careful in trusting that a profiler on native code would give the same results as on .class code.

For more information, their website is http://sourceware.cygnus.com/java/ On this page, they claim to be 'developing a complete free software toolkit for developing in the Java Language.'

[ Cafe au Lait | Books | Trade Shows | Links | FAQ | Tutorial | User Groups ]

Copyright 1999 Elliotte Rusty Harold
Last Modified August 3, 1999