What's Really Old
1.5.10 - April 16, 2002
- Fixed bug #426: remove support for
the 'assert' keyword as it requires JDK 1.4 and
this version of JSwat does not support that version of the
JDK. Instead, use the 2.0 series.
- Implemented #433: applied Masaru
Ohba's implementation for proportional font support in
the source view text area.
1.5.9 - April 8, 2002
- Removed JDK 1.4 dependencies
again.
- Fixed classpath/sourcepath dialog
table sizing problem apparent only in JDK
1.2.2.
1.5.8 - April 7, 2002
- Implemented #315: source view colors
can now be changed via the preferences dialog, in the
"View, Colors" category.
- Implemented #404: added support for
shared memory connectors in the attach and listen
operations.
- Implemented #420: format of command
line arguments has changed to allow any arbitrary command
and its arguments.
- Implemented #423: popup menu in
watch panel to clear all watches.
- Fixed bug #417: message area stays
scrolled at the bottom even when text is automatically
trimmed from the top.
- Fixed bug #419: show Java parser
exceptions in the messages window.
- Fixed bug #421: made the menu items
line up in all the menus.
- Removed 'detach' because it
is redundant. Use 'close' instead.
- Put the documentation in a separate
downloadable. Not everyone needs the docs every time they
download the binary.
1.5.7 - April 2, 2002
- Reorganized the menus a little
bit.
- Implemented #24: added
'trace' command and equivalent menu item to watch
method entry and exit events.
- Implemented #27: added
'invoke' command to call methods on classes or
objects in the debuggee process.
- Implemented #177: added class and
thread filters to breakpoints.
- Implemented #178: added simple
breakpoint that traces method entry and exit events and
shows the location in the message log. This is related to
feature request #24.
- Implemented #207: added
'this' to local variables panel which shows the
reference type and object identifier of the 'this'
object.
- Fixed bug #413 (mohba): source view
was not handling files with mixed end of line characters
correctly.
- Fixed bug #414 (mohba): source view
was not taking gutter width into account in certain
conditions.
- Fixed bug #415: clarified the VM
"list" operation by renaming it to "List
Connectors" since it does not show remote
VMs.
- Fixed bug #416: fixed null pointer
exception in threads panel.
1.5.6 - March 20, 2002
- Fixed bug #217: all method
breakpoint properties can now be adjusted, including method
name and arguments.
- Fixed bug #411: if sourcepath
undefined, null pointer exception was thrown whenever a
source view needed to be displayed.
- Fixed bug #412: method breakpoint
specifiers can contain primitives in the argument list,
e.g. "method(java.lang.String, char,
int)".
1.5.5 - March 19, 2002
- Minor change to allow the
JSwat-jEdit plugin to work once again.
- Fixed bug 89: added preference
option for the default source file extension. This allows
JSwat to treat non-Java files as if they were source
files.
- Fixed bug 174: added Find and Find
Next icons to the main toolbar.
- Fixed bug 373: added more
information about how JSwat finds source files using the
classpath and sourcepath settings.
1.5.4 - March 18, 2002
- Added Dooren's code for saving
session properties to arbitrary files. Useful for debugging
multiple projects using JSwat.
- Fixed bug #401: changed
'print' command to avoid array reference issue
caused by JDI with arrays of zero size.
- Fixed bug #405: removed a dependence
on JDK 1.3.
- Fixed bug #406: show the breakpoint
number in the message that indicates that the breakpoint
was hit.
- Fixed bug #409: attach action was
not deactivating the current session before trying to
attach to the debuggee.
- Fixed bug #410: watch panel now
calls the toString() method on objects to display much more
readable values.
1.5.3 - February 28, 2002
- Implemented #52: jswat can now
search .zip and .jar archives for source files. Obviously
this is a little slower than searching directory paths, but
the matching results are cached for better
performance.
- Implemented #402: new optional
argument for 'list' command to control how many
lines of output are displayed. Naturally this can be
aliased for the sake of convenience.
- Fixed bug #296: no visible change
with this bug, just changing the underlying Java lexical
analyzer and parser library from JFLex and JavaCC to
SableCC. This makes the JSwat code much easier to maintain
and extend going forward.
- Fixed bug #306: take the classpath
from a new session property instead of always defaulting to
the environment value. The environment value is rarely
useful since it is whatever was used to launch jswat, and
this often is not the same classpath used to run the
debuggee.
- Fixed bug #399: deal with out of
bounds cases in the source view tooltip code.
1.5.2 - February 16, 2002
- Fixed bug #205: wrote instructions
on reporting jswat bugs and created jswat-bugs mailing
list.
- Fixed bug #241: the appropriate menu
items and toolbar buttons are now enabled and disabled when
the session activates and deactivates.
- Fixed bug #391: 'list'
command now defaults to showing the current line and the 9
lines following it. Optional argument 'center'
reverts to the original centering behavior. It is easy to
create an alias for 'list center' that simulates
the old behavior, if so desired.
- Fixed bug #393: handle array
references better in a number of places, in particular the
source view tooltip code. Now evaluates variables inside
square brackets (e.g. "arr[idx].val" is
understood).
- Fixed bug #397 (jshute): Java
parsing module now handles the 'assert'
keyword.
- Fixed bug #398 (jshute): Command
input prompt is clearer with regards to the input modes
(help mode, macro mode, etc).
- Added code from Andreas S. to
display class references as the name of the class in the
local variables panel.
1.5.1 - January 24, 2002
- Implemented #388: added
'list' command to show source code around the
current stepping location; useful while in console
mode.
- Fixed bug #280: can now watch and
print static fields of arbitrary (loaded) classes. This
affects the watch panel, disablegc, dump, enablegc, lock,
print, and set commands.
- Fixed bug #376: work around javac
bug 4404985 in which SourceFile class property had a file
path when it should not.
- Fixed bug #390: apropos clearly
indicates failure when no matching commands are
found.
- Console mode source code view
support now shows current stepping line
indicator.
1.5 - January 13, 2002
- Implemented #20: 'threads'
takes an optional thread group name or identifier and shows
the threads in that group only.
- Implemented #50: 'classes'
takes an optional class filter.
- Implemented #240: added a new
'apropos' command that searches the command
descriptions for a matching phrase.
- Implemented #272: added primitive
source code viewing support in console mode.
- Implemented #384: changed the
'help' command to offer interactive help,
presenting sets of categories to help you find
commands.
- Implemented #385: added
'condition' and 'monitor' commands to
modify breakpoints via the command interface.
- Added 'brkinfo' command to
display properties of breakpoints.
- Fixed bug #309: added
'thread' option to stepping commands.
- Fixed bug #387: null pointer
exception in java colorizing code.
1.4.12 - January 6, 2002
- Fixed bug #369: source view search
facility should not found text that contains spaces when
search phrase does not contain spaces.
- Fixed bug #375: append
".java" to the name of the transformed class when
looking for source files using the class information
provided by the JPDA ReferenceType class.
- Fixed bug #377: account for the view
gutter when selecting text with the mouse.
- Fixed bug #378: colorize just the
strings and and not the characters before and after the
strings.
- Fixed bug #379: allow searching for
patterns containing spaces.
- Fixed bug #380: tab width changes
affect open views once again.
- Fixed bug #381: permit search that
finds pattern at start of view.
- Fixed bug #382: search will find
back-to-back patterns in the view.
- Fixed bug #383: allow searching for
a single character in the view.
1.4.11 - January 2, 2002
- Fixed bug #330: source code viewer
is much faster now.
- Fixed bug #362: deal better with
errors that occur during the session activate, deactivate,
and close operations.
- Fixed bug #371: changes of object
references in arrays went unnoticed by the local vars
panel.
- Fixed bug #374: use correct code to
update object fields and array elements in the local
variables tree.
1.4.10 - December 18, 2001
- Implemented #319: "Select
all" option in the popup menu for text
areas.
- Implemented #333: added shortcut for
Start VM dialog.
- Fixed bug #366: Find Next works once
again.
- Fixed bug #368: searching through
source with tabs now works.
1.4.9 - December 15, 2001
- Implemented #26: (traykoff) new
'exclude' command so we can finally single-step
without stepping into other people's code.
Hurray!
- Implemented #326: (traykoff) cleaner
string printing code for tooltips.
- Fixed bug #129: Java parser now
handles empty statements in class declarations.
- Fixed bug #229: 'options'
now does not accept unknown option names.
- Fixed bug #323: (traykoff) avoid
null pointer exception when opening source file that is
outside of classpath or sourcepath directories.
- Fixed bug #325: (traykoff) deal
better with breakpoints in inner classes and non-public
"extra" classes.
- Fixed bug #332: source view font was
always 12 points in JDK 1.3.
- Fixed bug #335: show "VM
running" when launching debuggee
unsuspended.
- Fixed bug #355: changed shortcut
default from F6 key to F2. However, you will need to change
your existing preferences setting yourself.
- Fixed bug #356: avoid gui deadlock
by modifying interface via AWT event dispatching
thread.
- Fixed bug #359: changing breakpoint
via properties dialog will fire event so source view will
update the row header breakpoint markers.
- Fixed bug #363: added
'assert' keyword to Java lexical
scanner.
- Fixed bug #364: (aschoerk) handle
null return values from getMessage() method when catching
exceptions thrown in the debuggee.
- Fixed bug #365: handle quote by
itself following -cp VM argument when launching a debuggee
VM.
- Made source view colorization ten to
fifteen percent faster.
- Added Raykoff's "last
visited directory" persistence for file
dialogs.
- Added Schoerk's class loader
identifier to the classes panel.
1.4.8 - November 28, 2001
- Fixed bug #321: sourcepath can be
properly overridden from the command line with
-Djava.source.path.
- Fixed bug #322: JDK 1.3 had problems
with source view tooltip indices (the now familiar index
out of bounds exceptions).
- Fixed bug #327: source view font
size would reset to 12 when the user preferences were
changed.
- Fixed bug #328: show a busy cursor
when a source view first opens.
- Fixed bug #329: source view lexical
scanner now handles \u escapes.
- Made the source view loading about
25 percent faster.
1.4.7 - November 25, 2001
- Fixed bug #307: tab width in colored
view was stuck at eight.
- Fixed bug #308: color view now
handles character escapes in strings.
- Fixed bug #312: (jconfigure)
upgrading old user preferences now works.
- Fixed bug #313: preference change
caused color view to lose its color.
- Fixed bug #314: character literals
in colored view not colored.
- Fixed bug #317: color view was
word-wrapping when it should not have.
- Fixed bug #318: toggling color
option did not update open source views.
- Fixed bug #320: color source view
did not automatically refresh.
1.4.6 - November 12, 2001
- Implemented #17: colorize the source
code in the source view. The color view is optional since
it is significantly slower.
- Fixed bug #273: macros may no longer
invoke themselves. You could never do this anyway, now it
is simply being enforced.
- Fixed bug #282: source view tooltips
now consider dots in variable names, so the value of
"obj.field" will be shown when the mouse is over
the "field" part.
- Fixed bug #283: use efficient search
algorithm in source viewer.
- Fixed bug #293: moved two
view-related options from one group to another in the
preferences window. Move is made automatically via the
preferences upgrade process.
1.4.5 - October 27, 2001
- Implemented #141: added
documentation to distribution package.
- Implemented #259: save sourcepath
setting as a session property.
- Implemented #262: (jshute) setting
breakpoints via 'stop' takes the current debuggee
context into consideration to offer shorter location
specifications. For example, "stop 217" while
single stepping will set the breakpoint at line 217 of the
current class.
- Fixed bug #37: (jshute)
'stop' now accepts method without
parentheses.
- Fixed bug #214: (jshute) unresolved
breakpoint error appeared multiple times in the message
window.
- Fixed bug #238: toolbar remembers
its placement in the window.
- Fixed bug #249: deleting unresolved
breakpoint left indicator in the source view
window.
- Fixed bug #269: (jshute)
'up' and 'down' were reversed.
1.4.4 - October 11, 2001
- Implemented #254: breakpoint value
condition allows 'null' value.
- Fixed bug #255: 'print'
hexadecimal representation of characters.
- Fixed bug #256: 'print'
displays appropriate message when user specifies an array
index that is out of bounds.
- Fixed bug #257: locals panel handles
change of field type in object.
- Fixed bug #258: locals panel shows
hexadecimal representation of character values.
- Fixed bug #260: 'load' was
throwing null pointer exception when invoked without
arguments during same run of JSwat.
- Fixed bug #261: check that thread is
suspended before evaluating breakpoint conditions. I would
have thought isAtBreakpoint() would suffice, but apparently
not.
1.4.3 - October 4, 2001
- Implemented #176: breakpoints now
support monitors - any named command (or alias or macro)
can be invoked when the breakpoint is hit.
- Implemented #182: breakpoint suspend
policy can be modified, so thread suspend choices are now:
none, event thread, or all threads.
- Fixed bug #244: 'set' allows
setting an object reference to null.
- Fixed bug #250: handle case of
undefined source path in the "Set Sourcepath"
dialog.
- Fixed bug #252: 'dump' now
dumps the fields of a String instead of just printing the
string.
- Fixed bug #253: update object fields
in local variables panel.
1.4.2 - September 30, 2001
- Implemented #13: simple conditionals
for breakpoints, where the condition is satisfied when a
variable equals a value. Only primitive types (int, float,
etc.) and strings are supported at this time.
- Implemented #78: dialogs for setting
the classpath and sourcepath. Thanks to David Taylor, the
jEdit plugin author, for writing this.
- Fixed bug #242: ensure messages
flusher thread has sufficient priority.
- Fixed bug #243: set suspend policy
before enabling event requests. Avoids an exception thrown
in JDK 1.4.
- Fixed bug #245: classpath no longer
automatically appears in the "Start VM" dialog so
the program can tell if you entered it or not. Now the
program only saves what you entered as the JVM
options.
- Fixed bug #247: handle null variable
value in source view tooltip.
- Fixed bug #248: avoid invalid
request state exception when resolving breakpoint request
that has been modified before resolution.
- Replaced occurrences of
"target" with "debuggee" to be more
logical.
1.4.1 - September 10, 2001
- Fixed bug #222: source view header
background now uses default color.
- Fixed bug #225: 'classpath'
accepts quotes around classpath.
- Fixed bug #226: 'help' on
aliases and macros reports something useful.
- Fixed bug #228: 'methods'
now shows return type.
- Fixed bug #230: watch panel now
supports watching static fields when set up while stopped
in a static method.
- Fixed bug #237: allow 'set'
to modify static fields while stopped in a static
method.
- Fixed bug #239: 'options'
now fires a configuration changed event.
- Implemented #65: display variable
values as tooltip in source view. This is a contribution by
the jEdit plugin author, David Taylor.
- Implemented #219: 'threads'
indicates which thread is the current one.
- Implemented #234: double-clicking a
breakpoint in the panel or dialog will make the breakpoint
properties dialog appear.
- Implemented #235: colorize the line
number background in the source view row header, instead of
the number. Much easier to see now.
- Implemented #236: support "run
to line" in source view popup menu. Sets a temporary
breakpoint and then resumes the debuggee VM.
- Added new 'runto' command
that sets a temporary breakpoint and resumes the debuggee
VM.
- Breakpoints panel now shows brief
breakpoint descriptions.
- Made the toolbar and menu bar of the
main window optional.
1.4.0 - September 5, 2001
- Fixed bug #132: local vars panel
reschedules update if invalid frame.
- Fixed bug #139: watch panel shows
"(no debugging info)" when variable information
is not available. In addition, the print command gives an
explanation about using "javac -g" to generate
debugging info.
- Fixed bug #146: source view prints
parser errors to Log instead of stdout.
- Fixed bug #149: 'locals'
command now shows field variables, too.
- Fixed bug #151: open file dialog now
handles dialog close button.
- Fixed bug #154: redisplay load VM
dialog if input is invalid.
- Fixed bug #155: show normalized
options in Start VM dialog.
- Fixed bug #156: redisplay set
breakpoint dialog if input is invalid.
- Fixed bug #157: check that class
name is valid in set breakpoint dialog.
- Fixed bug #160: capture messages
dialog now remembers filename.
- Fixed bug #161: show appropriate
message in capture messages dialog.
- Fixed bug #164: validate input in
define macro dialog.
- Fixed bug #165: check if session is
active in 'resume' command.
- Fixed bug #166: left align the
options in the preferences window.
- Fixed bug #167: deiconify window
before bringing it forward when using the Windows menu
entry.
- Fixed bug #168: validate input in
new breakpoint group dialog.
- Fixed bug #170: rename
"Input/Output" panel to just "Output".
This matches the way the Messages panel is
named.
- Fixed bug #171: rename
"Callers" panel to "Stack". This is
more logical to me and seems to be what other debuggers
use.
- Fixed bug #172: handle exceptions
properly in the watches panel.
- Fixed bug #173: use correct frame
value so source view is kept up-to-date.
- Fixed bug #175: do not suspend an
already suspended debuggee VM.
- Fixed bug #179: changed some
printStackTrace() calls to use messages area.
- Fixed bug #184: properly delete
breakpoints so they do not try to resolve.
- Fixed bug #186: fixed capture
messages action so it is stateless.
- Fixed bug #187: changing a String
reference now updates correctly.
- Fixed bug #189: catch the
InconsistentDebugInfoException that is sometimes thrown in
the local variables panel.
- Fixed bug #190: update source view
when tab size is changed.
- Fixed bug #191: set program status
when breakpoint fails to resolve.
- Fixed bug #192: double-clicking on
local variables will not exception.
- Fixed bug #196: stop auto-scrolling
to current stepping line when source view is opened by one
of the panels.
- Fixed bug #203: show breakpoint
description when resolution fails.
- Fixed bug #208: 'print'
command calls toString() only if not a String.
- Fixed bug #211: made breakpoint
resolve error messages more clear.
- Fixed bug #220: 'alias' with
unknown alias name printed "null".
- Fixed bug #221: 'help'
command description was weird.
- Fixed bug #227: 'locks' and
'threadlocks' fail when running HotSpot. Now prints
the appropriate error message indicating that the operation
is not supported on HotSpot.
- Fixed bug #231: 'view'
command now takes filename as an alternative.
- Fixed bug #232: stack panel updates
for single step events.
- Implemented #98: allow changing the
source view font size.
- Implemented #109: unresolved line
breakpoints are indicated in the source view by having a
blue line number, if the breakpoint was set using the
source view popup menu.
- Implemented #125: added button to
show source for resolved breakpoint.
- Implemented #150: same command input
does not get added to the history.
- Implemented #158: compacted the
stack panel to show pertinent info only.
- Implemented #159: show the
messages/output and stack/methods panels at the same time.
It is a little more cramped now but should be worth
it.
- Implemented #181: added the
breakpoints panel to the main window.
- Implemented #183: trim the Messages
and Output text areas to a configurable number of
lines.
- Implemented #201: add
"Breakpoint properties" item to source view
popup.
- Implemented #210: add
"Clear" to the popup menu in text
areas.
- Implemented #212: big refactoring of
all the major classes in JSwat to allow support for
different interfaces. JSwat now has two operating modes:
the usual graphical mode and a new text-only mode. Added
-console switch to enable text-only mode. Added commands:
about, options, stdin, vmlist. Useful when running in
text-only mode.
- Implemented #213: 'alias'
command takes functionality of 'aliases' and the
latter command is removed.
- Numerous fixes to many of the
commands, most of which were broken in one way or
another.
- Made the messages print a lot
faster.
1.3.3 - August 21, 2001
- Fixed bug #143: stop clearing the
breakpoints.
- Stop clearing the session
properties, too.
1.3.2 - August 4, 2001
- Fixed #14: Added support for
creating breakpoint groups. A group of breakpoints can be
disabled and enabled together. Groups may contain other
groups.
- Fixed #23: Breakpoints now support
the notion of expiration (dying after N hits).
- Fixed #60: Breakpoints can now skip
over N hits before they begin stopping the debuggee
VM.
- Fixed bug #135: Local variables
panel now updates when an object reference is changed to
point to another object of the same type.
- Fixed bug #136: Source viewer was
not appearing when single stepping into a method. Other
events would have also failed to bring up the source code
viewer.
1.3.1 - July 22, 2001
- Fixed bug 31: local variables tree
now keeps branches expanded.
- Fixed bug 77: added shortcuts for
refresh and VM suspend actions.
- Fixed bug 126: Launching a debuggee
will always be suspended long enough for the session to
activate, then resumed only if the user did not want to
suspend.
- Fixed bug 127: Added an icon to the
main window. Visibility depends on your windowing
environment. Tested successfully on Windows
2000.
- Implemented 128: double-clicking on
"..." will show all of the array elements in the
local variables panel.
- Fixed bug 130: source view now shows
highlighter when stepping through non-public classes
defined in the source file of a public class.
- Fixed bug 131: source view now
gracefully handles parse errors in source files. View popup
will show "Java parser error" in such a
case.
- Fixed bug 133: text in command input
field is not lost when scrolling through command
history.
1.3.0.1 - July 12, 2001
Correcting problem in 1.3.0 build. Version number is
technically still 1.3.0 since the code is the same.
1.3.0 - July 11, 2001
- Fixed bug 12 (and partly 13, 14, 23,
60): Completely reimplemented the breakpoints
functionality. Breakpoints now have support for conditions,
monitors, skipping hits, expiration, and persistence.
Breakpoints are held inside groups, which can reside in
other groups. As yet, some of the new features are not
usable until the user interface is finished.
- Fixed bug 120: Sorted fields in
objects by name to improve readability.
- Fixed bug 123: Changed the shortcut
for 'Find Next' and added a shortcut for
'Find'. As always these are user-configurable via
Preferences dialog.
- Fixed bug 124: Corrected the error
message when local variable information is
missing.
- Changed the localizable resources
code a bit. If you see a 'null' where there should
not be one, please report it.
- Moved the ".jswat*" files
from the home directory to a subdirectory called
".jswat". That is, the settings, session
properties, and preferences files have moved into ~/.jswat/
for better organization.
- Removed the 'ignore' command
since the new breakpoints code can remove the exception
catch using the 'clear' command.
- Added Hugh Emberson's code to
allow configuring tab size in source view. Sadly, JTextArea
ignores the change until the source view is
rebuilt.
- Added Mike Bresnahan's code to
support alternate Java home locations and JVM executables
when launching a debuggee VM.
- Assigned F5 as the default shortcut
key for the Resume VM action.
1.2.7 - May 28, 2001
- Implemented feature request #73,
watch panel remembers the watchpoints from session to
session.
- Fixed bug #97, again. This time use
Timer to ensure view is scrolled to the current line when
the source view first appears.
- Fixed bug #116, make sure session
properties are cleared, even when switching from a remote
session to a non-remote session.
1.2.6 - May 19, 2001
- Implemented feature request #11,
added source code search facility.
- Implemented feature request #64,
added status messages to the main window's title bar
for important events.
- Implemented feature request #103,
added option to show just the class names instead of the
fully-qualified class names.
- Implemented feature request #113,
added a message to the title bar of the main window
whenever a breakpoint is hit.
- Implemented feature request #114,
added support for "this." to print command (and
others).
- Fixed bug #117, source view was
throwing null pointer exception.
1.2.5 - May 5, 2001
- Implemented feature request #45,
print command calls toString() on any Object values. Will
not print anything if the current thread is not suspended
via the JDI. This is a JPDA restriction, not a JSwat
limitation.
- Implemented feature request #88,
highlight the current stepping line. The "==>"
indicator has been removed in favor of the
highlighter.
- Implemented feature request #107,
show a busy cursor while refreshing the panels, launching
debuggee VMs, and attaching to debuggee VMs.
1.2.4 - May 1, 2001
- Fixed bug #106, exception catches
were not being enabled.
- Removed the breakpoint list dialog
since it is horribly broken beyond repair. In the meantime,
use the command line instead.
- Added support for both prefix and
suffix wildcards (*) on class names when setting
breakpoints.
1.2.3 - April 21, 2001
- Fixed bug #55, watch panel correctly
updates field variables.
- Fixed bug #96, watching a null
variable would throw exception.
- Fixed bug #97, source view did not
scroll to current line when the view had just been made
visible.
- Fixed bug #99, load command was not
using classpath argument.
- Fixed bug #100, final field
variables are now shown. Only static final variables are
ignored (since they are constant and thus
boring).
- Fixed bug #101, classpath in jswat
set to whatever is passed to 'load'.
- Added trace reporting support to
jswat. This allows jswat to show what it is doing during
the "quiet" times. Useful for debugging jswat
itself. Not a lot of reporting going on right now, but more
will be added.
- When an exception is thrown in the
debuggee VM, the exception message is now printed to the
messages window. Very handy when ClassNotFoundException
occurs and you want to know which class was not
found.
1.2.2 - April 11, 2001
- Fixed bug #91, callers panel updates
whenever stack frame count changes.
- Fixed bug #92, threads panel now
explicitly updates when session starts.
- Fixed bug #94, window size and
position and other settings saved no matter how the user
closes jswat.
- Fixed bug #95, methods panel shows
methods even inside static methods.
1.2.1 - March 22, 2001
- Fixed bug #70, set command now
refreshes panels after changing variable.
- Fixed bug #86, deleted breakpoints
were not removed from session properties.
- Fixed bug #87, null pointer
exception when connecting to a remote debuggee.
- Changed the way the panels are
refreshed so they rely less on the Session. This should
result in fewer time-wasting visual updates.
1.2 - March 18, 2001
- Added session properties support.
Presently the session will remember the name of the class
you are debugging and any arguments passed to it and to the
debuggee JVM. Also enabled breakpoints are remembered and
automatically reset the next time the session is started.
This fixes feature request #9. Subsequently fixed bug
#72.
- Implemented feature request #32,
allow watch panel to watch local variables, in addition to
field variables.
- Implemented feature request #69,
remember the positions of the main window dividers (the
dividers in the JSplitPanes).
- Implemented feature request #10,
show the source for the main class when the session is
activated.
- Fixed bug #68, breakpoints dialog
had a null pointer exception.
- Fixed bug #71, context change events
should be combined for efficiency.
- Fixed bug #74, source view was not
grabbing current location when opened.
- Fixed bug #76, thread panel would
print "Thread object collected."
- Fixed bug #79, callers panel did not
show status in case of invalid state.
- Fixed bug #80, source view loses
current line indicator after thread change.
- Fixed bug #81, methods panel does
not draw when single-stepping.
- Fixed bug #83, thread panel did not
show current thread in red when the user double-clicked to
make a thread the current one.
1.1.2 - March 3, 2001
- Fixed bug #47, improved the error
message when 'kill' is invoked on suspended
threads. Now shows thread id number.
- Fixed bug #51, added Hugh
Emberson's patch for finding .jswatrc
files.
1.1.1 - February 25, 2001
Fixed bugs #44 and #46, both had to do with custom class
loaders causing breakpoints to become useless. Changed
jswat to be more like NetBeans in that it creates a
ClassPrepareRequest and leaves it enabled forever, setting
the breakpoint each time the class is prepared.
1.1 - February 24, 2001
- Print command now prints arrays and
array elements.
- New methods panel that shows the
methods of 'this' object.
- Fixed bug #54, center the
preferences dialog.
- Fixed bug #56, make use of -classic
an option.
- Fixed bug #57, the methods panel
would throw a null pointer exception when the method had no
line number information.
- Fixed bug #58, watching same field
of two instances was confused.
1.0 - February 7, 2001
- Fixed bug #49. Source view was
scrolling too often.
- Fixed classes panel so it shows
correct tooltip text.
- Changed "Commands" panel
label to "Messages" which makes more
sense.
0.9.7 - February 2, 2001
- Fixed bug #4, the problem with the
source view and setting breakpoints in anything but the
top-level, public class. Changed it to use a Java parser to
find the class definitions and thus know which classes are
on what lines of the file. Now you can set breakpoints in
any class.
- Made a bunch of very minor code
improvements suggested by JTest.
- Fixed class panel again so it
creates the class unload request so it will be notified
when classes are unloaded from the debuggee vm.
0.9.6 - January 25, 2001
- Fixed close action so it does not
terminate the running debuggee VM.
- Fixed class panel to unconditionally
build class tree when session is activated. Fixes bug
#28.
- Fixed the Session.resumeVM() so it
resets the current location before resuming the VM.
Otherwise an asynchronous breakpoint event could cause the
current location to be set before it is reset by the
Session. Fixes bugs #1 and 2.
0.9.5 - January 24, 2001
- Putting suspend() and resume() calls
around all calls to the VirtualMachine.allClasses() method,
per recommendation from JavaSoft.
- Changing local vars panel to not
show final field variables. They are boring since they do
not change. Fixes RFE #6.
- Changed source manager so it does
not clear the classpath when the session deactivates. This
was annoying me. Fixes bug #29.
- Fixed resume command to show
"VM resuming" before actually resuming the VM.
Otherwise events can fire off and messages will appear out
of order and be confusing. Fixes bug #35.
- Fixed disable and enable commands to
not show inappropriate messages.
- Fixed breakpoint list function to
show (none) as necessary. Fixes bug #34.
0.9.4 - January 23, 2001
- Fixed the event request manager so
it actually prints an error message when the event request
cannot be resolved. This fixes bug #36 in which trying to
set a breakpoint in a non-matching method does not report
as an error.
January 14, 2001
I have installed Bugzilla for the purpose of tracking JSwat
issues.
0.9.3 - January 12, 2001
- Fixed popup menu on message and
standard output panels. Added that new paste option a
couple days ago and did not test it very well.
- Fixed array index out of bounds
problem in local vars panel.
0.9.2 - January 10, 2001
- Fixed listen command to work
correctly. It now properly stops listening for incoming
connections after a connection has been made.
- Changed class panel so it updates
much less frequently (around 10 times) instead of doing a
little update for every class that loads. Hopefully this
will make JSwat connect to the debuggee VM
faster.
0.9.1 - January 7, 2001
- Made a workaround to JPDA bug
4331522: setting a breakpoint in class named
"Foo" may actually resolve to another class whose
name starts with "Foo".
- Fixed setting breakpoint from source
view. Previously the SourceManager mapClassName() would
find the first match rather than the best one. This
resulted in messages about the breakpoint being
deferred.
- Added copy/paste functionality to
the command input field and the debuggee VM standard input
field.
0.9 - December 31, 2000
- Changed the distribution format of
JSwat. Source is now in a separate zip file from the
classes. The classes are placed in a jar file by themselves
and the docs are put in a zip file with the jar
file.
- Fixed the preferences upgrade so it
will set the user preferences filename. Without this the
user preferences were not saved.
- Changed source view code to reload
the source only when a debugging session becomes active.
This reduces confusion due to the source view updating
during debugging, causing the view to become out of sync
with the class being debugged. This was a user
request.
- Changed the LocalsTreePanel to stop
causing frequent visual updates so as to run a lot faster.
Switching to use this panel over the LocalsTablePanel since
it offers the ability to examine variables.
- Fixed an InvalidStackFrameException
in local vars and stack panel.
- Added dialog for creating
macros.
- Wrote the implementation for the
listen command.
- Added a "Copy" popup menu
to the message and output panels.
- Added a "Capture Messages"
action to save output from the message panel to either the
jswat stdout stream or a named file.
0.8.12 - December 5, 2000
- This release uses JConfigure version
0.4 so the user preferences dialog looks
prettier.
- Attach action now remembers the
previously entered host and port.
- JSwat now automatically upgrades
user preferences in the event that the application
preferences have changed.
- Start button now deactivates current
session rather than creating a new one. This, in effect,
provides a button for restarting the current debug
session.
0.8.11 - December 1, 2000
- New set command to change variable
values, added by Bill Smith.
- Fixed 'attach',
'load' and 'run' to check for null VM
connection.
- Fixed 'detach' to say right
thing when invoked in an inactive session.
- Improved help information for
'attach' to explain hidden features.
- Fixed null pointer exception when
invoking 'where all' command and no current thread
had been set.
- Fixed local vars panel to show
"(native method)" in case of an exception when
accessing the StackFrame.visibleVariables()
method.
- Right clicking on the source view
line number to set a breakpoint is now working. This was a
recent feature request.
- Right clicking on the source view
when there is no active session displays a menu with a
single "Session not active" menu item. This was a
recent feature request.
- Fixed SourceManager to force loading
classpath in mapSourceFile. This corrects the problem of
'view <source.java>' not working before the
session is made active.
- Fixed MainWindow so keyboard
shortcut preference changes take effect right away.
Unfortunately, there is a JMenuItem accelerator bug that I
have described in the jswat README.
- SourceManager reads the source path
setting from the Java environment property
"java.source.path" when jswat is first started.
That is, you can now set the sourcepath from the command
line like so: java
-Djava.source.path="/usr/java/src"
com.bluemarsh.jswat.Main
- SourceManager now clears the
classpath when the session ends. This is to force it to
reload the classpath the next time the session starts.
Otherwise it may retain an old setting that no longer
applies.
- Upped the preferences file version
to 1 (from the implied 0 version).
0.8.10 - November 4, 2000
- Fixed local variables table to show
static field variables. It now hides field variables with
local variable values, too. Static field variables are
hidden by subclass instance variables of the same
name.
- Fixed a null pointer exception in
that troublesome thread panel.
- Fixed the source view auto-scroll:
moved the out of bounds check to be after the
need-to-scroll check.
- Fixed the window geometry memory
feature so it works no matter how jswat is terminated. Made
the feature optional.
0.8.9 - October 4, 2000
- Enclosed classpath in double-quotes
to avoid problems when classpath contains spaces. This
change affects the 'load' command and the Start
menu item and toolbar button.
- Main window remembers its size and
position (saved to ~/.jswat_settings).
- JSwat remembers what the look and
feel was set to.
- A preferences dialog is now
available for setting some preferences. Some of the
settings do not take affect until JSwat is restarted. These
are saved to ~/.jswat_preferences.
0.8.8 - September 21, 2000
- Added information about load command
passing arguments to the debuggee VM.
- Added information about the as yet
not implemented 'listen' command.
- Changed
SourceManager.mapClassNameLow() so it deals with classpath
entries that end with the file separator character. This is
unusual but we need to handle this case
properly.
0.8.7 - September 2, 2000
- Changed Session so it includes the
current working directory in the classpath in the event
that the classpath is empty. This supports an assumption
made in SourceManager and may solve a recent
problem.
0.8.6 - August 30, 2000
- Matt C. made source windows maximize
by default when they are first opened. Someday this will be
a configurable option, but for now this is a good
default.
- Peter Boothe solved the
source-view-popup-menu-disappearing problem for Solaris and
Linux. The menu still works fine for Win32.
- Fixed problem of reading user's
home directory .jswatrc file twice.
0.8.5 - August 17, 2000
A set of fixes by Matt C.:
- Fixed command manager to scroll the
command history correctly, and added up/down cursor support
as well (previously only Ctrl-P and Ctrl-N
worked).
- Fixed local variables table to catch
exception when invalid thread is selected.
- Modified the callers panel to switch
frames and show source for the row that is double-clicked
on.
- Modified the threads panel to
support double-clicking to switch the current
thread.
0.8.4 - August 14, 2000
- Moved the debuggee VM
launching/attaching code from the Session class to the
appropriate actions. This simplifies the Session class a
bit. Created a VMConnection class to hold the necessary
objects for relaunching/reattaching to a debuggee
VM.
- Renamed the JSwat package to use all
lower-case names, as the Java coding conventions call
for.
- Renamed the bootstrap class to Main.
This means you invoke JSwat with 'java
com.bluemarsh.jswat.Main' now.
- Changed the license to GNU General
Public License (from LGPL).
0.8.3 - August 10, 2000
- Fixed CommandManager to check for
empty string before accessing the first character of the
input.
- Fixed SourceManager to use canonical
file paths when comparing input to classpath and sourcepath
entries.
0.8.2 - July 30, 2000
Added a new stack frames panel, which shows the list of
stack frames whenever execution stops at a breakpoint or
exception. See the docs for details on its features.
0.8.1 - July 29, 2000
- Fixed Output panel so it continues
to scroll to new output, as it used to do.
- Added tooltip to local variables
display. Shows all the field variables for objects, which
is much more informative than the usual "instance of
..." label.
- The dump command now prints array
values. If the array has more than 20 elements, only the
first 10 and last 10 elements are shown.
0.8 - July 23, 2000
Finished the new watchpoints panel. Now possible to watch
any field variable of any object and see it change value as
the program runs.
0.7.12 - July 21, 2000
- Improved JSwat so it reads the
.jswatrc file in the current directory, in
addition to the one in the user's home directory. The
home directory copy is processed first, then the current
directory copy.
- Also added a couple more previously
undocumented features to the JSwat features
list.
0.7.11 - July 20, 2000
- Fixed a bug in the VM start dialog
so it adds a space between the classpath and JVM
arguments.
- The VM start dialog now saves the
entries from one start to the next.
- The VM start dialog now offers a
"start suspended" checkbox for controlling
whether the debuggee VM is started after
loading.
- The load command now takes the usual
Java VM options, just like the VM start dialog.
- An unfinished watchpoints panel
has been added. Please ignore it.
0.7.10 - July 16, 2000
- Changed all the commands to use my
new StringTokenizer. Makes some string functions more
efficient.
- Allowed clear, disable, and enable
to operate on multiple breakpoints.
- Suspend and resume commands can
operate on multiple threads at once.
- Fixed source view scroller so it
scrolls to the bottom of the file when necessary. I made
the original code too cautious and it would not scroll at
all even when it should have.
- Added 'go' and
'thread' options to the stop command. These flags
control which threads in the debuggee VM are paused upon
the event.
0.7.9.1 - July 15, 2000
Screwed up and did not make the previous build using the
latest code. I had made the code changes on the laptop but
made the build on the workstation without first doing
'cvs update' to get the changes made from the
laptop. Duh.
0.7.9 - July 14, 2000
Fixed the thread synchronization issues that only
manifested themselves on Java VMs using native threads.
Those darn missed notifications. Now JSwat won't hang
when you try to exit on Win32 and Solaris.
0.7.8 - July 12, 2000
- Improved the auto-scrolling behavior
of the source view; it only scrolls when the
single-stepping line reaches near the bottom of the view.
Also prevents scrolling past the end of the text
area.
- Fixed SourceManager.mapSourceFile()
so it properly returns the results of files found in the
sourcepath.
- Fixed bug in thread panel that
occurred only rarely, when the session deactivated and
thread death events were being handled at the same
time.
0.7.7 - July 9, 2000
- Changed SourceManager to deal with
inner classes (i.e. the $) by simply removing everything
after the $ and thus finding the source file correctly.
Note that breakpoints worked regardless of this
change.
- Replaced most of the icons with new
ones from The Swing Connection. Modified the remaining
icons to match the new ones from TSC. Added a couple of new
icons for About and Refresh, also from TSC.
- Fixed RefreshAction so it checks for
active session first. Otherwise some panels choke when
refresh() is called during an inactive session.
- Changed the way JSwat handles
deferred event request settings (such as breakpoints). Now
correctly sets the deferred breakpoints as soon as
possible.
- Changed how output from the debuggee
VM is read. This is only the first change required to fix
the output reading problems.
- Fixed bug in local variables panel
where 'this' was null.
0.7.6.3 - July 8, 2000
Fixed problem with source view popup not being able to set
breakpoints. This is correcting the fix made to
SourceManager in 0.7.6.2.
0.7.6.2 - July 6, 2000
Fixed a problem in the source manager that was not
correctly converting the file separators to periods.
Improved exception handling in locals panel and thread
panel.
0.7.6.1 - July 5, 2000
The JSwat package was missing several required classes from
the util library. Added ability to set classpath before
launching the debuggee class. Use
'classpath ' followed by
'load ' or 'run '
to launch the debuggee VM.
0.7.6 - July 4, 2000
- Fixed a problem in the breakpoints
dialog after the recent change of the SessionListeners. It
was not showing any breakpoints.
- Added a Close and Add button to the
breakpoints dialog. The Add button invokes the breakpoint
setting dialog.
- Added a SessionListenerList to
manage the SessionListener objects in a reliable manner.
This will prevent any synchronization problems.
- Added two new commands, stdout and
stderr, for printing to console. I found these very useful
when debugging JSwat.
- Fixed the problem with the source
view not dropping the current line indicator when the VM
resumes.
- Fixed a problem in CommandManager
which did not show an appropriate error message when an
invalid command was entered.
- Converted resources/JSwat.properties
to Unix file format. This fixed a problem on Win32 where
the 'commands' key was not read
properly.
- Added a case-insensitive search to
the SourceManager.mapClassName() method. This works around
stupid Win32 where files can be in either case and are
still allowed to match.
- Removed the out-dated BUGS.txt
file.
- The 'resume' and
'suspend' commands now handle the case of the
session not being active.
0.7.5 - June 29, 2000
Added some more detailed and appropriate error messages to
the stop command.
Fixed a bug that appeared in JDK 1.3. StringTokenizer
apparently has fixed a bug and that messed up JSwat's
stopCommand. I have since fixed the stopCommand to do the
right thing.
0.7.4 - June 27, 2000
Fixed all the Managers and JSwatPanels to set their Session
reference in the init() method instead of in
activate() . Also added a requested feature to
allow passing the class (and any arguments for it) on the
command line when invoking JSwat.
0.7.3 - June 25, 2000
Changed JSwatCommand to print help for commands using
classname. Removed all the description() and help() methods
from all the command classes. This makes the command
classes smaller overall.
Fixed a bug in CommandManager where it would not create
macros from within scripts. Macros should now be working
everywhere.
0.7.2 - June 24, 2000
Overhauled the panels to improve and simplify the API. No
change from a user standpoint. Created a new Manager class
that several key classes now extend. Again, no change for
the user, just simplifies the Session code a little
bit.
Added a 'macro' command to allow creating command
macros. This way users can save a set of commands and
invoke them with a single keyword.
Fixed a bug in 'sourcepath' command when the
source path was empty.
June 16, 2000
It was reported to me that CVS access was not working due
to permission problems on the server. I have since made
modifications to the file permissions, user/group ownership
of the files, and created the appropriate CVS password
file. If CVS access is still not working, let me know.
June 14, 2000
I have set up two mailing
lists for JSwat, one for users of JSwat and one for the
developers contributing to it. If you are at all interested
in JSwat, please join one or both of the lists.
0.7.1 - June 11, 2000
Sorted the variables in the LocalsTablePanel display by
name of the variable. Added messages in a couple of places
to point users in the right direction when the debuggee VM
fails to start. For instance, look at the Input/Output
panel for possible error messages from the VM.
0.7 - May 7, 2000
Fixed the VMEventHandler so it handles JDI events
synchronously. This prevents the "Bad file
descriptor" problem seen by some folks. Fixed the Log
class so it always writes the log contents to the attached
writers on the AWT event dispatching thread. This gets
around a new problem caused by the above change. This is
really how it should have been done in the first place.
Discarded the Loader class since it is unnecessary now with
the change in the Log class. Now the program launches
faster and writes to the message panel faster, too.
0.6.1 - May 3, 2000
Fixed a really stupid, embarrassing problem in the
ThreadPanel. I was using the assigned row number to keep
track of threads in the table. Silly me, I forgot all about
threads dying "out of order". Note to others: if
you review the JSwat code and find some brain dead coding,
please tell me.
0.6 - April 30, 2000
Added two nice features. First, breakpoints are now
referenced by number, so clearing, and dis/enabling
breakpoints is much simpler. Second, a very nice feature is
the ability to set breakpoints by clicking in the source
code viewer. A context-sensitive popup menu appears and
allows adding, removing, dis/enabling breakpoints.
0.5.7 - April 16, 2000
Changed the local variables and threads panels to display
their information using tables. This makes the display more
readable, I hope. Sorry it has been such a long time since
the last update. Next I plan to support setting breakpoints
directly from the source code display. Also, in a recent
change to all of my Java code, the com.bms
package was renamed to com.bluemarsh , since
there appears to already be a "bms.com" and it is
not BlueMarsh.
0.5.6.2 - January 6, 2000
Improved handling of errors in setting breakpoints. Now
more accurately reports problems when setting a breakpoint
where no line number information exists. I have found that
the latest version of the IBM Java compiler, jikes, has
problems generating proper debugging information. You may
want to use javac from the JavaSoft JDK instead.
0.5.6.1 - December 27, 1999
Fixed the JSwat package. It was missing the
com.bluemarsh.io classes. If you downloaded JSwat in the
last two days, you should download this one instead.
0.5.6 - December 25, 1999
Added support for the 'sourcepath' command, which
provides an additional path to source code. Added
'classpath' command to print out the classpath
setting from the debuggee VM, if available. Session now
uses debuggee VM's classpath, if available.
0.5.5 - December 13, 1999
When setting a breakpoint with 'stop' it now finds
the next possible code line at which to set the breakpoint,
in the event that the requested line does not contain
executable code. Also fixed a couple of minor problems in
the source view. It would not update itself visually when
the session ended. It also would show the current stepping
line indicator ("==>") while you had stepped
into a function in another source file.
0.5.4 - December 4, 1999
Fixed a bug in the source file viewer. The second and
subsequent file windows failed to show all the line numbers
in the row header. Cannot be sure what caused this problem,
but I believe it was the component listener having problems
(it would not receive the 'componentResized' call).
I changed the SourceRowHeader class to not use
ComponentListener and instead use another mechanism for
keeping up-to-date. Thanks to Teo Kian Hui for finding the
problem.
0.5.3 - October 17, 1999
Improved the source viewer substantially. It now determines
all the existing breakpoints and current stepping location
when a view is opened. Properly unregisters itself when the
view closes, allowing the view to be successfully reopened
later. Added three new commands: frame, up, and down for
managing the stack frame view.
Renamed the NoSessionException to NotActiveException,
which is more logical.
Did a little bit of cleanup in various classes.
0.5.2 - October 3, 1999
Enhanced the source file viewer so that it shows the
current line being single-stepped. Also queries the
existing breakpoints when a new source file is viewed, so
the row header is set appropriately. Opening the same file
will now bring the existing window forward, rather than
opening the file twice. Added three new toolbar buttons for
single stepping.
Internally, the event handler now supports priorities for
event listeners. This allows the Session to get events
before other listeners so it may set the current thread,
among other things.
0.5.1 - September 12, 1999
Commander now supports '<n> <command>'
syntax for running a given command multiple times.
ThreadPanel has been corrected to actively show new threads
as the debuggee VM is running. Mike Calder provided a bug
fix to the breakpoints panel, too. Thanks, Mike! Also added
the disable, enable, and view commands.
0.5 - September 6, 1999
All known problems are corrected in this version (assuming
you use either JDK 1.2.1 with JPDA 1.0 or JDK 1.3). Has a
pile of debugging commands now (43 to be exact), making
this debugger practically useful. I feel confident that the
textual part of the debugger has reached a high point. I am
now going to turn my attention to the graphical feature
set.
0.3 - August 29, 1999
Time to drop the 'alpha' and adopt a real version
numbering-system. I am starting at 0.3 since this debugger
is roughly a third of the way complete. There are still
many basic features yet to implement.
Now supports single-key stepping (i.e. 'F11' will
single-step through code) and shows local variables in a
window. Only problem is the local variable code crashes the
debuggee process. :( I am going to contact the Java
debugger folks for assistance on this bug.
Alpha-10 - August 26, 1999
Sorry for all these frequent updates. I will try to stick
to a more regular schedule of every Sunday night or
something.
Anyway, this release has stderr, stdout, and stdin
support. It is not great but it functions. I figure most of
the time you will be debugging a graphical application
anyway.
Alpha-9 - August 22, 1999
No new debugger commands. Started working on adding
stdout/stdin support. Fixed some potential problems with
Commander and added Ctrl-p and
Ctrl-n support for perusing the command
history.
Alpha-8 - August 17, 1999
Added several new commands, but I have forgotten which ones
they are so I will list all the supported commands:
catch, classes, clear, exit, help, ignore, kill,
load, locals, methods, next, resume, step, stepi, stop,
suspend, thread, threadgroups, threads, where,
wherei . Next I will be working on the
'print' and 'run' commands, which are the
only remaining commands that I feel are needed. After that
I will be working on the graphical side of the debugger.
Alpha-7 - August 15, 1999
Added the locals, thread, where, and wherei commands.
Alpha-6 - June 14, 1999
Setting breakpoints now works correctly. JSwat now supports
command aliases and a start script. Numerous bug fixes and
other small enhancements.
Alpha-5 - May 31, 1999
The textual interface to the debugger is advancing. It now
supports several commands (catch, cont, exit, help, ignore,
kill, load, suspend, and threads) through the use of
"command classes". Still need to work on setting
breakpoints.
Alpha-4.5 - May 23, 1999
Not much added this time. Started a few things at the same
time and have not completed any of them. There is a
breakpoint manager and source code shows which lines have
break points (not very smart, though). Started to code a
text-based debugger. This will eventually provide all the
basic debugger features. I plan to get the basic debugger
working and then deal with the graphical side of things.
Alpha-4 - May 2, 1999
Displays a list of the breakpoints, which can be enabled
and disabled. Source code is displayed in a JInternalFrame
with a gutter showing the line numbers. Automatically
reloads source file if modified by another application.
Alpha-3 - April 25, 1999
Now has some useful graphical components so you can see
what is going on. Includes a list for displaying the
threads in the running VM, a tree for showing all of the
classes, and a message window for display of important
messages.
Alpha-2 - March 30, 1999
A slightly more featureful version of JSwat. Can start and
stop any given class (provided it has a main
method) and detect the death of the running VM.
Alpha-1 - March 15, 1999
A very early version of JSwat. It has a very limited set of
features, including: starting a new VM, stopping the VM,
and listing running VMs that can be attached to.
Web Pages - February 25, 1999
These web pages were created and are being updated and
improved on a continual basis.
Conception - February 22, 1999
The idea of JSwat was conceived by me, Nathan Fiedler. Why?
Because I hate paying $300 for a Java IDE that turns out
not to properly support the target platform it said it
could support.
|