Armed Bear

The right of the people to keep and arm bears shall not be infringed!

Looking for ABCL?

About J

J is a text editor written in Java and distributed under the GNU General Public License.

J runs on platforms that support Java 1.5, including Linux, Windows, and Mac OS X.

J is free software and comes with ABSOLUTELY NO WARRANTY.

The latest version is 0.23.0, released April 11, 2010.


J 0.23.0 with svn support and updated icons using Coffe theme:

j-0.23.0.png (98938 bytes)

J 0.19.0 in the Java debugger:

j-0.19.0.png (111165 bytes)

J 0.16.4 reading mail:

j-0.16.4.png (145493 bytes)

J 0.14.0 in Java mode, with line numbers and change marks turned on:

j-0.14.0.png (91816 bytes)


The latest release is available from the SourceForge download page.


Documentation is included in both source and binary distributions.

You can also view the documentation for the current release online.

Mailing Lists

J's mailing list page on SourceForge is here. (Gmane or Nabble)

Reporting Bugs

Report a bug.

What's New

Apr 11 2010 - Version 0.23.0

This release contains ABCL 0.19.1 along with support for svn and updated icons. Java 1.5 is now required and 1.6 is suggested.

Subversion support has been added in this release and can be used with the svn* commands. A new StatusMode has been added for version control status output buffers. Please see the version control documentation for more information.

J's icons have been refreshed to the current Gnome icon set. In addition, you may now change the size of the toolbar icons to either 16 or 24 (the default) by setting ToolBar.iconSize in your prefs file.

When opening files with the location bar or using a shell buffer, the <Tab> key completes the filename. The completion feature will now ignore any files that match the filenameCompletionsExcludePattern regular expression. The find in files dialog has a new default excludes option that will skip files that match the filenameCompletionsExcludePattern regex which is very useful when searching across files that would have included the .svn metadata directories.

To quickly locate and edit the prefs file, a new editPrefs command has been added.

Mar 24 2009 - Version 0.22.0

First release in years! This release contains ABCL 0.13.0 along with many bug fixes and numerous small enhancements.

Improved lisp shell editor support for OpenMCL, AllegroCL, and CMUCL. Editor indentation fixes for java, cpp, lisp, python, ruby, perl, and html. Darcs is now supported and the p4 commands have had many bug fixes.

New commands:

Sep 24 2004 4:45 PM - Version 0.21.0

Some minor problems that prevented j from working correctly with the Java 1.5 betas are fixed in this release.

It is now possible to use drag/drop in the sidebar buffer list to reorder the buffers, so that navigating between buffers using nextBuffer and prevBuffer (mapped by default to Alt Right and Alt Left, respectively) is more efficient. Thanks to Mike Rutter for providing the code to do this.

By request, the command wrapParagraphsInRegion has been added. It is mapped by default to Ctrl Shift F12 in plain text and mail composition buffers. wrapParagraphsInRegion walks through the region (or the whole buffer if no region is selected) and, in effect, calls wrapParagraph on each paragraph.

The wrap commands should now do a better job of handling lines that break on the hyphen of a hyphenated word (like "wrap-paragraph"). If the paragraph is subsequently reformatted in such a way that the line break no longer falls on the hyphen in question, the parts of the hyphenated word are now put back together properly. In previous versions of j, you were likely to end up with "wrap- paragraph", with a bogus extra space after the hyphen.

The commands pageUpOtherWindow and pageDownOtherWindow have been added. They are mapped by default to Alt Page Down and Alt Page Up, respectively, in all modes. These commands are helpful in a split-window situation when you want to scroll the other window without switching to it.

The commmand findOccurrenceAtDotAndKillList has been added. It is mapped by default to Ctrl Enter in List Occurrences buffers. It works like findOccurrenceAtDot, but in addition it closes the List Occurrences buffer.

The commands shellNextPrompt and shellPreviousPrompt have been added. They are mapped by default to Ctrl Alt N and Ctrl Alt P, respectively, in shell buffers and their derivatives (including Lisp shells), and they help you find the next or previous prompt, starting from the current location of the caret.

The command p4Log has been added. It runs the Perforce command "filelog -l" on the file associated with the current buffer.

The command p4Diff now runs the Perforce command "p4 diff -f -du", instead of "p4 diff -du". This change means that p4Diff will display potentially useful output even if the file associated with the current buffer has not, in Perforce's opinion, been officially opened for editing.

J's ssh-related code now recognizes "Response:" as a password prompt, in addition the to other password prompts it recognized already.

Compilation buffers are now supported on Windows NT 4. Thanks to Pete Kirkham for pointing out that this was possible.

In previous versions of j, there was an incorrect optimization in the display code which malfunctioned on very rare occasions and caused lines to disappear from the display, even though they were still present in the buffer (there was never any loss of data). This bug has been fixed by removing the optimization in question.

There are a number of new features and minor improvements in Lisp mode and in Lisp shells. Thanks to Sam Steingold for help with many of these.

This release includes version 0.0.4 of Armed Bear Common Lisp. ABCL 0.0.4 passes 17778 out of 17942 tests in the GCL ANSI Common Lisp test suite, for a nominal compliance of 99.0859%. The test suite is still not complete, however, so ABCL's actual percentage of ANSI compliance, whatever that may mean, is undoubtedly lower. In any case, version 0.0.4 represents a substantial improvement over version 0.0.3, back when it was still called Armed Bear Lisp, which passed 12986 out of 14127 tests (91.92%).

ABCL includes a compiler, written in Lisp, that generates JVM bytecode from Lisp source. The compiler is not finished, and there are valid Lisp constructs that it doesn't know how to compile. In most situations, when the compiler encounters code that it can't compile correctly, it is smart enough to leave the code alone so that it will continue to work correctly with the interpreter. Compiled code and interpreted code can coexist happily in the same running instance of ABCL.

The 0.21.0 binary distribution contains a compiled version of the Lisp library code (i.e. a full set of .abcl and .cls files), as well as the Lisp source files for the library code that is implemented in Lisp. If you build j from source, using either configure/make or Ant, the Lisp library code will be compiled as part of the build. There is no longer any need to do COMPILE-SYSTEM manually.

ABCL 0.0.4 is better at some things than others. In particular, it's not very good at CLOS. ABCL's CLOS correctness is reasonable, but its CLOS performance is terrible (for one thing, the compiler doesn't even attempt to compile generic functions). This deficiency is due more to simple neglect than to any intrinsic limitation, and the CLOS implementation should improve in future releases.

You can start ABCL from within j by doing Alt X, "abcl", or by selecting "Run Lisp as Separate Process" from the Lisp menu. Note that the "Run Embedded Lisp" menu selection opens a Lisp shell using an instance of ABCL that runs in the editor process; it only makes sense to do this if you're planning to interact with the running instance of j, which is not normally the case. If you just want to experiment with ABCL, "Run Lisp as Separate Process" (or Alt X, "abcl") is your friend.

If you're truly adventurous, you can also start ABCL from within j by doing Alt X, "slime". J's version of slime is adapted from the "Superior Lisp Interaction Mode for Emacs", originally written by Eric Marsden, Luke Gorrie and Helmut Eller. Slime-for-j is less than a month old, so it is nowhere near as robust or featureful as slime-for-emacs, but in principle it offers more functionality than Alt X, "abcl". In particular, the tab key can be used for symbol completion, function argument lists are displayed in the status bar when you type a space, and Alt . should work to find function definitions (if you've built ABCL from source). In addition, the evaluation of forms and regions in Lisp source files makes an attempt to set *PACKAGE* to the right thing first. I don't think any of these features works 100% correctly yet, but even so, slime-for-j feels like an improvement over the basic Lisp shell functionality available in previous versions of j. For more information, see slime.lisp.

More (and more timely) details about recent changes in j and ABCL are available on the J Development Mailing List, the archives of which are here. (Gmane or Nabble)

The complete change log (back to the beginning of time) is available here.


Java 1.5 or later is required. Java 1.6 is recommended.

Sun Java

Simply untar or unzip the binary distribution, cd into the j-0.23.0 directory, and run the jar file:

        $ tar xvfz j-0.23.0-binary.tar.gz
        $ cd j-0.23.0
        $ java -jar j.jar

Or for Windows:

        C:\> unzip
        C:\> cd j-0.23.0
        C:\j-0.23.0> java -jar j.jar

Building the Source

Instructions are provided in the file building.html in the doc directory of the distribution.
SourceForge Logo