features
Multi-platform
Due to being written in Pure Java, JCmd is able to run on multiple platforms.

Open Source
Satisfy your curiousity to see how JCmd was written by examining the source code.

Multiple tabbed windows
JCmd allows for multiple consoles using the tabed pane concept. This reduces clutter on your desktop and also allows for interaction between each of the consoles.

Configurable
You can change a great deal including the aliases for every command as well as the key shortcuts.

Extensible
Commands can be added as simply as changing a property file. You can even add commands from with the shell using the set command.

Viewing Java System Properties
Can use the set command to view all properties or a filtered subset.

Command History
You have easy access to commands previously executed in the console.

Global Command History
Not only can you access command history from the console you are in, you can also access command history from other consoles within the same running JCmd instance.

Persistent State
The consoles that are open upon exiting as well as the command history are saved for the next execution of JCmd.

Simplified directory traversal
You are able to change down multiple directories by specifying multiple dots. For example the command "CD .." moves down a single directory, while "CD ..." moves down 2 directories. You can keep adding dots for as many directories that you have. You can also specify ".." as a command instead of "CD ..".

Uses library path to find programs to run
Rather than having a separate searchpath, JCmd uses the library path to find programs to execute. This path can be changed using the set command. Note that it does not change the classpath for the running instance of JCmd. By default JCmd uses java.library.path as this is the same as the search path. You can specify your own search path property in the configuration file. You can even use java.class.path if you like.

Pipes
Powerful pipe implementation allows you to send the output of one command to the input of another. For example, "NETTIME | TIME", will set the current time to that returned by the Atomic time server.

Large number of built-in commands
A lot of effort has been put in to adding a large number of built-in commands out of the box.

TYPE takes a wildcard
You can specify a wildcard with the TYPE command to show the contents of multiple files at once. For instance, "TYPE *.xml".

User independent configuration files
You can choose to have a single configuration file for every user on a system or separate based on username if different people use the same computer.

Powerful copy and paste
Use left mouse button to select some text which then gets copied into the clipboard. Single right click will paste.

Web Services Support
JCmd has a command for accessing web services interactively by simply specifying the location of a WSDL file.

Unit Tests
The source version includes the JUnit tests that are used to unit test the whole application This not only provides assurance of testing, but also provides example usage.