Capsule Reviews of JAVA tools
Last modified Jan 28, 2002.
Time moves on, and since I last maintained this page 3.5 years ago there
has been a massive shakeout among the tools listed here, to the extent
that the information here is basicly useless. I'm leaving it
as an historical document (a few of the links are still live).
Personally, I still use Kawa 3.0, which seems to be
among the casualties. Among the live links, Forte
looks like a good bet.
These reviews are all based on brief examinations of the programs in
question, running under windows NT 4.0. My objective was to select a set
of tools to use for my own work. I'm publishing these capsule reviews to
save you all some trouble.
Development Environments
-
Brewmaster (New May 1 1997)
-
Symantec Cafe (New March 11, 1997)
-
ED (updated November 26,1997)
-
IavaDraw (new March 23, 1997)
-
Java Workshop (updated May 2000)
-
Dick Chase's Java Editor (new March 23, 1997)
-
Javelin
-
JPad and JPad Pro (updated April 28, 1997)
-
Kawa (updated April 22, 1998)
-
Microsoft Visual J++ (Update March 6, 1997)
-
MJE
-
Mojo (update 3/29/97)
-
OEW(updated 3/29/97)
-
VisualAge (New May 1, 1997)
-
WingEditor 1.02(formerly JavaEditor) (new
March 2, 1997)
-
Forte Tools, formerly Netbeans, formerly Xelfi,
updated May 2000)
My current Pick of the litter among the simpler and cheaper IDEs is Kawa
with JPad Pro nearly tied. Kawa wins because of it's
GUI to JDB, but JPAD has a better editing environment. . |
Java Decompilers
(update June 15, 1997) Special in-depth
JavaWorld story about these three decompilers
Other tools
|
Bold links are for worthwhile tools, written in Java
Other reviews
Sam's Java page: Sam seems
to specialize in reviews of GUI-builders.
Java World (aug 96) reviews of Macintosh
IDEs and (april 98) reviews of Visual
IDEs
Lan Times
reviews java IDEs (Aug 5, 1996)
The reviews
Assure is a runtime analysis tool for thread behavior. It checks
for thread deadlocks, thread stalls, and data races. Using assure
is a two part process, in phase 1 you run your application/applet under
Assure's instrumented JVM, which creates a log file. In phase 2,
you run Assure's UI which presents the results, shows you the source code
that it has reported as suspected.
Not all the things Assure complains about are necessarily errors, and
not all real errors can be found by this tool, and the problems it points
out can be very subtle and hard to comprehend what the problem might be.
Nonetheless, I was shocked by the number of problems Assure found in
my "thoroughly debugged" code. I don't plan to write any more major
applications without it.
I wrote an extened review of Assure which appears in JavaWorld
Things that work
Bugs, Misfeatures, and Gochas
-
something of a resource hog
-
it's analysis could be more specific to java
(note: current version is 2.0)
Brewmaster is a repository based system. The process of importing my
projects was smooth, except for one glitch in the parser which is "already
fixed".
The GUI has lots of little panes and tiny little icons, which do not
have pop-up identification or other self documentation, which makes it
something of a puzzle to learn to use.
The class browser/editor combination itself seems pretty solid, and
once you get used to the paradigm for navigating, pretty usable. Changes
are parsed when you save them, so it is impossible to store a syntactically
incorrect program in the repository.
The biggest problem with brewmaster is that it's support for compiling,
debugging and running programs is tedious and very limited.
Things that work
-
Import, browsing, and editing work.
Bugs, Misfeatures, and Gochas
-
Glitches in importing can't be fixed within the brewmaster interface, so
you have to resort to an external editor.
-
Compiling, and interactions with JDK in general, occur in shell windows
which disappear immediately. In one case, compilation clearly got a bunch
of errors, but the window with the errors disappeared, and brewmaster seemed
to think everything was fine.
-
In one case, the repository became corrupted.
-
Error messages from the parser are inserted into the text itself,
which creates even more errors. You have to not only fix your syntax errors,
but remove the error messages.
-
Export rearranges the order of methods in the output file, which makes
them hard to compare with the original version.
There is no review here of Symanec Cafe or any of its cousins. I have tried
various free betas of Cafe, and had difficulty. Symantec's technical support
by email for these betas has been nonexistent, and Semantec doesn't offer
free trials of it's non-beta versions.
In view of their generally good reputation and many apparently satisfied
customers, I've decided not to write a review based on my unsatisfactory
experiences. Your mileage may vary. I finally added this note so I could
stop answering "Why No Cafe" messages.
ED is an extension of a pre-existing editor/IDE for Java. It also has support
for lots of other specialized types of documents. If you work with many
types of documents and multiple programming languages, ED is worth investigating.
Things that work
-
The editor, and the IDE generally, are very featureful, and very customizable.
Bugs, Misfeatures, and Gochas
-
None noted. ED's main problem as a Java environment is that it lacks
specialization for Java.
(note: current version is 3.11)
IavaDraw is a conventional IDE with some useful extras. The two most
useful that I noticed are an integrated C-like preprocessor, and the option
of changing its menu structure to the German language. Actually, since
IavaDraw's authors are in Germany, it's probably the option to change the
menus to English. In any case, if Deutsch is your first language, this
would be a significant feature.
Unfortunately, the product is pretty buggy. At first I was unable to
get the compiler to run; apparently it Iavadraw works only with
JDK 1.1 final. Even with that problem resolved, I never got a satisfactory
project built from my existing sources.
At one point Iavadraw's internal state got so confused that it couldn't
be restarted successfully. A day later that problem seemed to have fixed
itself - generally, Iavadraw had a marked propensity to hang up (and have
to be terminated from the task manager) or to spontaneously crash with
some sort of access violation. And, whenever there was trouble with any
of the Java tools it tried to invoke, there was no useful feedback about
the nature of the problem.
Things that work
-
Basic editing and project construction limps along
Bugs, Misfeatures, and Gochas
-
There is no useful feedback about the nature of any problems the tools
encounter. For example, if "run" does apparently nothing, that's what information
you get about what happened; nothing.
-
The editor is somewhat flaky - sometimes doesn't cut, paste, or position
the cursor reliably. It also uses a really ugly mono space font (with gaps
between letters) to highlight.
-
Project construction (from existing files) has to be done one-file-at-a-time,
and you have to add a dummy top level. There seems to be no provision for
absorbing a pre-existing project structure.
-
recompiles much more than necessary (every file every time, or close to
it)
-
is confused about the relationship between directory structure, classpath,
and java packages. I couldn't get it to put my project's output in its
proper directory. At some point it made copies of my sources in a parent
directory of their original home. It put output class files in c:\temp
rather than the output directory I specified.
(note: Java workshop seems to be discontinued, with Sun throwing support
to Forte Tools, which are successor to Netbeans)
Dick
Chase's Java Editor (version 2.07)
(note: current version is 2.08a)
Dick Chase's Java Editor is a very rudimentary, no-frills java editor
based on a multiple document frame and JDK. Its principle virtue is that
it is completely free, and the author even offers to provide source code.
It is also very small and light on resource consumption, which may make
it useful for those with extreme low-end configurations.
Things that work
-
Basic compile/edit cycle works.
Bugs, Misfeatures, and Gochas
-
No interface to debugger
-
"run" windows disappear instantly if there was any problem, so you can't
see what was wrong.
(note: current version is 6.3)
Javelin is a radical graphical environment, which generates text files
only as an artifact for the compiler. The concept sounds good, and the
GUI looks pretty spiffy, but the entire interface to the outside world
is obviously ad-hoc; In other words, there are bugs lurking around every
unexplored corner. In the process of my evaluation, the import/export/compile
process broke in many different ways; and the internal database became
corrupted at least three times. The worst of these problems have been fixed
in release 5.02, but there is every reason to believe that each new project
will uncover new ones, at least for some time. Generally speaking, Javelin
shows the classic signs of an immature, poorly tested product, rushed to
market to catch the wave. A lot of things work, but behind every working
feature are a gaggle of bugs with the potential to stop useful work cold.
Things that work
-
The graphical part of the interface works. Your classes are presented as
boxes connected by lines representing inheritance. The contents of the
boxes are data and methods of the class; you can define and edit elements
in a style that hand-holds you through the niceties of the declarations.
Bugs, Misfeatures, and Gochas
-
Integration with windows-nt is marginal. Javelin doesn't fully believe
in long file names. Javelin doesn't create the directories you tell it
to use (and doesn't complain intelligibly about it's inability to create
files in nonexistent directories). Output from Java applications appears
in a window that disappears instantly (so read fast). Error messages from
the "import files" process are delivered by dialog boxes, and are not
permanently recorded anywhere, so take notes.
-
There is no meaningful correspondence between error messages from the compiler
("i.e.; error at line nnn") and anything else. You just have to know where
to find stuff. You cannot click on an error message to get to the error.
-
There are no class navigation tools, other than the graphical interface.
There is no way to find a class or a method by name.
-
There is no support at all for JDB or any other debugging tool.
Finally, it should be noted that the "free evaluation" version is too crippled
to be useful, or to support a meaningful evaluation.
(note: current version is 3.7)
JPad Pro is bigger, better, and slightly more expensive version of Jpad.
The downloadable demo version will only let you edit tiny files - enough
to let you get the flavor, but not enough for any serious work. The principle
improvements of JPad Pro over Jpad are
-
Projects
-
Class Browser
-
Additional capabilities editing HTML and JavaScript files.
Jpad's project capability is worth mentioning because it is unusual. JPad
Pro automatically and dynamically collects all java source files in a hierarchy
into a project. This can be pretty convenient, if your hierarchy contains
no extraneous files, or it can be annoying if it does.
JPad supports both JDK and Microsoft SDK.
Jpad is based on an internal scripting language; the entire IDE is composed
of a set of script driven commands. Consequently, it's potentially very
customizable, and with enough effort, it's possible for you to diagnose
and fix any glitches in its interaction with your environment, add your
own commands, etc.
Things that work
-
JPad Pro is pretty solid and reliable. Except for some minor glitches,
everything there works, and is reliable.
-
Online help via portafiler
Bugs, Misfeatures, and Gochas
-
Interaction with JDB is rudimentary
-
Interaction with microsoft GUI debugger didn't work for me.
-
There are many customizable features, but not particularly well organized
and presented. Getting JPAD to behave as you want it to can be frustrating.
See JPAD pr. JPAD is the same, except without the
project management capability and microsoft SDK support.
(note: current version is 4.0)
Kawa is is based on a multiple document editor frame. Light on the frills,
but what is there is solid.
Things that work
-
The editor is simple, but functional. Includes syntax coloring.
-
There is a fair "project" capability, and files in the project browser
expands into a class browser for the file.
-
Full support for JDK 1.1, some support for beans.
-
Online help linked to JDK 1.1's HTML documentation, with some support for
user's javadoc.
-
Class browser
-
native debugger. That is, a debugger based directly on java's debug
APIs rather than JDB.
Bugs, Misfeatures, and Gochas
-
The debugger GUI is a little light on features, and sometimes can't inspect
objects (those locked by synchronization?)
-
Editor crashes if presented with excessively long lines.
Microsoft
Visual J++ (1.1 preview)
(note: current version is 6.0)
Visual J++ is a java environment embedded in the same framework as Microsoft
Visual C++. Version 1.1 is based on a newly revamped, very clean looking,
revision. Consequently, the development environment is very mature, featureful,
and familiar. Unfortunately, the Java specific elements of the environment
are still buggy. Considering that if any company in the world has the resources
to make such an environment work, it is Microsoft: The other vendors of
Java products had better watch their backs.
Things that work
-
The basic code writing environment is solid.
-
The compiler is very fast
-
Compiler/Debugger integration is first rate - just like visual C++.
Bugs, Misfeatures, and Gochas
-
Compiler produces buggy code in some circumstances.
-
Compiler complains about language constructs where JDK does not.
-
Compiler fails to complain about language constructs where JDK does.
-
J++ extensions and "improvements" to the Java language threaten to corrupt
Java.
Mini Java Editor (MJE) is a tiny JAVA application. Sources are included.
The author is primarily interested in pushing the Java cross platform compatibility
envelope. The server for MJE is not up on weekends.
Things that work
-
There is a simple project capability
-
The editor is rudimentary but functional
-
Interaction with the compiler is good
Bugs, Misfeatures, and Gochas
-
MJE supports edit/compile only. No run command
-
Doesn't offer to save files before exiting
MOJO is a repository based IDE, with a lot of emphasis on automated tools
for constructing GUIs. Their comparison chart distributed at Internet World
advertised that they can now import flat java files, which induced me to
give them a second look.
As it turns out, they still cannot import flat files in any meaningful
way. Their customer support told me to create a new class in the "Coder"
and use cut/paste to import my text from an external editor. What a joke!
Still, I was in a mood to humor them, so I tried cutting/pasting my
simplest class, with an eye to adding my standard class libraries to their
class library. I didn't succeed. Though I'm sure there is a way, Mojo is
definitely not a general purpose programmer's tool.
Things that work
-
the GUI building demo looks good
Bugs, Misfeatures, and Gochas
-
Mojo has no meaningful provision for importing existing code. As such,
it is severely handicapped; nothing but toys ever start from a blank piece
of paper.
(Note: OEW's current release is 3.0)
OEW is a repository based class editor. Unlike some of the other repository
based editors reviewed here, it seems to basically work, but there are
a few killer bugs which reduced it's usability factor to nil.
I imported a large collection of source files, and OEW converted all
the file names to lower case. For example, one of my classes is "BaseOBject.java"
which generates "BaseObject.class". In the explorer/modules menu it shows
up as "baseobject.java", and building complains that BaseObject.class must
be defined in a file named "BaseObject.java"
Since most of my class names use mixed case, this was a pretty severe
problem; but I decided to treat it as a challenge and use OEW to convert
a self consistent group of files to lower case names. The rest of the bugs
noted below ensued. I never did get the project converted.
Things that work
-
The importing and exporting source files works (with bugs)
-
Can draw pretty diagrams of class connectivity.
Bugs, Misfeatures, and Gochas
-
Can't handle mixed case class names in imported files.
-
There seems to be no way to interrupt a build in progress.
-
after some usage, some menus stop working. For example, the "Make/Options"
item works a in a perfectly clean environment, but does nothing at some
later point.
-
code generation sometimes changed "package" declaration to a different
package, then complained about it!. Also, sometimes added extra "package"
declarations in strange places, which the compiler complained about.
-
class foo implements Runnable became class foo extends Runnable,
a very significant difference!
-
OEW crashed trying to add a new module, trying to delete a class, etc.
This, combined with the extreme flakiness of adding extra "package" and
changing "implements" to "extends" declarations in the middle of the file
make me suspect OEW has some internal memory corruption problems, which
make the whole thing unreliable.
-
cut and paste in the editor is unreliable.
-
imported system classes (Frame, Enumeration) as though they were local.
(current version is 3.02)
VisualAge is a repository based java environment, of a really radical
design. After importing my projects, which was completely seamless, my
first shock was to search in vain for the "compile" button - but there
isn't one. Visualage keeps everything compiled all the time, and maintains
a list of unresolved problems.
You can run any class, or execute bits of code in the "scrapbook" window.
There is no distinction between running, debugging, and editing code while
debugging - it's all part of the same integrated process.
When the IDE's Java runtime bugs are fixed, this is going to be a blow-them-away
better development environment.
Things that work
Bugs, Misfeatures, and Gochas
-
navigation in a complex program is hard, unless you know exactly where
you want to go in the project/class/method hierarchy. There are no text
based tools for searching a project, and no database-like "show me who
uses this" functionality.
-
The IDE runtime environment seems to have trouble with synchronization
among threads - my well-debugged project kept locking in states where threads
were waiting for each other, but shouldn't have been. The standalone runtime
environment doesn't have any problem.
-
exported text files are too different from the originals to compare.
(note: current version is 1.6.1)
WingEditor was formerly known as JavaEditor
WingEditor is an embryonic IDE written entirely in java. It piggy backs
on JDK, as most IDEs seem to do. While promising in concept, its not ready
for prime time.
Things that work
-
Basic editor/compiler/debugger connectivity works.
-
Rudimentary project capability
-
GUI interface to JDB
Bugs, Misfeatures, and Gochas
-
Contrary to claims, the version I downloaded seemed to require JDK 1.1
to run.
-
JDB isn't passed the classpath of the project being debugged, so it must
be included in the classpath that javaedit itself is running under.
-
lots of display glitches,
-
the graphical interface to JDB is confusing and easily confused.
Forte tools replaces Netbeans, which replaced Xelfi, which originally occupied
this space. Apparently the whole show has been taken over by Sun,
which has also dropped its Java Workshop product. Forte tools is
also promised to become an Open Source product very soon.
I haven't yet used Forte tools, but their predecessor, Netbeans was
promising.
Netbeans is pure java!, and the best pure java IDE I've seen
- Definitely worth a look, even if not ready for prime time yet.
Classviewer allows you to view the contents of a class file. It presents
enough information to determine the interfaces contained in the class.
Classviewer is really basic, one class at a time, but a tool like this
is absolutely essential to deal with classes in the absence of source code.
Things that work
Bugs, Misfeatures, and Gochas
-
Probably is JDK's problem, but classviewer has trouble finding all it's
component classes unless they classes are in the default classpath.
Hyperprofiler digests and presents profiler output from JDK. The principal
display is a fairly clear display of caller/callee relationships. There
is an auxiliary display of the entire call graph presented on a hyperbolic
plane. It's hard to see much use for the hyper display, but its pretty
and lots of fun to play with.
There are obviously a lot more features to be added, but what is there
is solid and extremely useful.
Things that work
-
It works.
-
Basic 3-pane layout is well labeled and easy to work with
Bugs, Misfeatures, and Gochas
-
Resorting displays is slow and ugly.
Profileviewer digests and presents profile output from JDK, similar to
Hyperprofiler,
but inferior to it in almost all respects. It's basic layout is poorer,
and its harder to install, and its presentation contains less useful information.
Things that work
-
It works.
-
It has more and better finding and sort options than hyperprofiler, and
redisplay is clean.
Bugs, Misfeatures, and Gochas
-
Uses a tiny, hard to read font
-
displays count of calls as a percentage of all calls. Lots of 0.0% entries,
not too useful even when the numbers aren't zero.
DeJaVu
(version
1.0)
DeJaVu is bundled with OEW and is distributed with the
free trial version.
Things that work
-
DejaVu produces output that is very close to ready to compile
-
does not share mocha's disturbing penchant for crashing JDK.
Bugs, Misfeatures, and Gochas
-
DeJaVu's flow analysis fails often, and in those cases it produces code
that is correct but almost impossible to understand.
High
Performance Compiler for Java (version of Oct 1, 1997)
HPJC is a compiler which produces directly executable files from Java
1.1 source. There are some limitations, but it seems to work, and the output
runs fast! I tested the Windows-NT version.
JD,
a Java Debugger (version of Oct 24, 1997)
JD is a 100% pure Java debugger for Java 1.1. The UI and feature set
are crude, but it all seems to work. Sure beats the hell out of JDB!
Mocha is a complete class decompiler, written in Java. Given a class, it
produces a compilable source file for the class. The resulting ".mocha"
file is remarkably similar to the original ".java" file, if you have it.
News:The author of Mocha is deceased, and Mocha has disappeared
from it's original distribution point. The link above is an alternate,
and seems to be within the intent of its original distribution.
Things that work
Bugs, Misfeatures, and Gochas
-
Some classes confuse it so badly that JDK blows up.
(note: current version is 2.12)
WingDis was formerly known as JavaDis
WingDis is another java disassembler, like Mocha; but with the advantage
of having living authors. There is a demo version, but the demo is too
crippled to do a realistic analysis of its capabilities and faults. Wingsoft
gave me a 30-day non-crippled version to test.
In general, javadis is worthwhile to use to look at a class hoping to
glean some insight into it; but I would definitely not trust it to disassemble
a class to be recompiled.
Things that work
-
Seems to be structurally sound. Installs and runs cleanly.
-
does not share mocha's disturbing penchant for crashing JDK.
Bugs, Misfeatures, and Gochas
-
misses some easy conversions; x=x+1 not converted to x++, instead published
as x=this.x+1. Worse, then a construction such as x++ was used in the original
for value as well as for the side effect, the wrong value is sometimes
used.
-
frequently produces code that compiles but is not functionally equivalent
to the original, particularly involving misuse of "super."
comments/suggestions to:
ddyer@real-me.net
If you think your software is treated unfairly, fix your bugs
or convince me they're features. If you want your software reviewed, be
patient, (or send me free software :-)