Jsh, the opensource

java application launcher !

Release 1.0rc3 available ! (25/03/2002) Many bugs corrected ! Now works with jdk 1.4
We need more developers and testers ! Drop us a mail

(15/09/2001) Netbeans and dbVisualizer application support ! Does not (yet) work with jdk 1.4 beta2

(25/07/2001) Java webstart (jnlp) application support ! Run all your java webstart applications in the same jvm at the same time !

What is Jsh | Why should I use it | How to download | How to install | How can I help | Applications tested | Documentation | Screenshots

visitors since 11 / 09 / 2000 Development hosted at SourceForge
                           Logo Original Jsh website from osvaldo


What is Jsh ?


Jsh is basically a java shell or a java launcher. That is, a program with a prompt that allows you to type sequence of commands. For example, with Jsh, you can start a java program simply by typing the name of it's main class. All applications running in Jsh are managed by the same jvm.

This snapshot of a session will give you an idea (the text in italics after // is inserted here).  (Tons of stuff not shown here..)

C:\Java>java shell.Shell  // Enters the wonderful world of your Java VM!
C:\Java:jsh>help          // Don't Panic!  We've got manpages!!
Java shell tools help (tools will also understand the -help option)
... command listing ...
C:\Java:jsh>MandelApplet & // Lauches concurrent app concurrently C:\Java:jsh>time:0.811 // The usual crap due to the GUI app running...
// ...in parallel, and printing to the terminal! C:\Java:jsh>vm // Gets some JVM status info Heap: 644K free, 1023K total. Running: 2 processes, 4 ThreadGroups with 6 Threads. C:\Java:jsh>ps // Gets info on JVM's "processes"
4: shell.ProcessStatus (running)
2: MandelApplet (running)
C:\Java:jsh>ts // Gets info on all JVM threads! ThreadGroup "system" MaxPriority=10 Thread "Finalizer thread" (daemon) (alive) Priority=1 ThreadGroup "main" MaxPriority=10 Thread "main" (alive) Priority=5 Thread "Screen Updater" (alive) Priority=4 ThreadGroup "ThreadGroup for JProcesses" MaxPriority=10 ThreadGroup "2: MandelApplet" MaxPriority=9 Thread "AWT-EventQueue-0" (alive) Priority=5 Thread "AWT-Windows" (alive) Priority=5 Thread "mandelbrot" (alive) Priority=5 ThreadGroup "5: shell.ThreadStatus" MaxPriority=9 C:\Java:jsh>timer on // Let's time every command. Timer is on.


As jsh becomes more sophisticated, it will end up being a full application manager, with a graphical user interface, application installation / desinstllation, better OS integration, etc...

The aim is to allow ordinary computer users, as well as experts, to use Java applications in their daily life. Sounds good eh ?

Jsh is an opensource project. You can download source code, modify it, do whatever you want with it. Simply send us a message !

Why should I use Jsh ?


+ All in one JVM : All applications run in the same JVM ! Saves tons of memory ! Applications launch faster than ever and even maintain their own classpath!

+ Java webstart applications support : With the integration of tal liron's java_url , you can now run jnlp applications as ordinary programs. Supports include security, cache, and file services.

+ Aliases : You can easily define aliases. In other words, you don't need to remember the full class name to run an application! Simply define an alias in jsh.properties!

+ batch : You can write jsh scripts files. Simply create a file with commands separated by ";" in a *.jsh file. Then in jsh type: 'jsh file.jsh' and watch it run.

+ commands : Easily add new commands to the shell!

What to download ?


Binaries :

Download jsh.zip. Everything you need to run JSH is in this archive.

Sources :

Download jsh_src.zip

Download gnutools_src.zip (Usefull tools used by jsh: cd, ls, ps, etc...)

Jsh uses a modified version of the multiprocess engine, Echidna (www.javagroup.org). You must use this release for Jsh to function properly. The source code can be obtained here:

Download echidna_src.zip

How to install ?


You must extract the jsh.zip file into a directory, let's say {JshInstallDir}. Use jar -xvf jsh.zip to perform the extraction.

Because java does not by default allow multiple applications to run, Jsh uses a slighty modified System class. This class resides in bootsystem.jar and must be loaded by java before the original.

For jdk1.3 or jdk1.3.1:

java -Xbootclasspath/p:{JshInstallDir}\jdk13\bootsystem.jar -cp {JshInstallDir}\lib\jsh.jar;{JshInstallDir}\lib shell.Shell

Or use jsh.bat.

Unix users should invert the slashes (\ in /) and replace ; with : or use jsh.sh (you must chmod u+x it)

Jsh runs under jdk 1.4 as well, although it has not been thoroughly tested. Simply change the jdk13 directory in the bootclasspath to jdk14.

For jdk1.2.2, type

java -Xbootclasspath:{JshInstallDir}\jdk122\bootsystem.jar;{JdkInstallDir}\jre\lib\rt.jar; {JdkInstallDir}\jre\lib\i18n.jar;{JdkInstallDir}\jre\lib\ext\iimp.jar;{JdkInstallDir}\lib\tools.jar -cp {JshInstallDir}\lib\jsh.jar;{JshInstallDir}\lib shell.Shell



How can I help ?

Many people have helped, giving their precious time to Jsh, whether by developing, debugging a bit, testing or simply telling what application works or not. We would like to express our thanks to them.

There is a lot of exciting things to do. You can help in many ways, whatever your skills

I'm a developer :

A few things that can be done, any other ideas are welcome.

Feature : Assigned to developer :

Dynamic classpath : Right now, you must add all the classes for the applications you wish to run directly into the classpath used to start jsh.

Done !

Jar file class loading in Echidna : Sadly, Echidna does not support loading classes packaged in jar files. As this file format become more widely used, we will need to support it.

Done !

Better support for ill behaved applications : Many applications do not quit properly. For example, many applications do not call dispose() method on their windows before calling System.exit(). In Jsh, this means that the window is never closed !

Done !

Application auto-detection : Right now, you must search  your java application for classes and jar files manually, and then type their paths into the classpath of jsh. A little tool that would scan a jar file or a directory, detect all jars and classes, then write a jsh batch file for starting the application would be handy.

You can do it

An application launcher U.I. : A little Swing U.I. for defining the applications, displaying their icons, and launching the apps.

Fairly easy to do..

I want my app to work with Jsh :

Any well behaved java application will work with Jsh. Developers, please don't forget to call dispose() on your application's window before calling System.exit().

If this does not work, please send an email to our mailing list jsh-developers@lists.sourceforge.net and we'll be happy to help you get it running.

I'm a user :

We need to know on what systems it can run (we have only tested on Windows and Linux), what Java applications work well with jsh, and what applications don't work so well. In other words, we need testing. Please send comments to jsh-developers@lists.sourceforge.net

Applications tested with jsh :

Comment :


JVM classpath means the classpath of the jsh program itself (in jsh.bat or jsh.sh)

Jsh classpath means in the classpath of the .jsh batch file (set classpath=...)

  Netbeans: An IDE Put all their .jar in JVM classpath, not in jsh dynamic classpath.
And loads the {$netbeans}/bin/security.policy file when running jsh
  JavaExplorer: A File manager
  Extract : A zip file utility Works well
  JFTP 1.2 : A 100% java FTP client
  Espial escape : A 100% java web browser
  Jos media player : Powerfull media player  
  dbVisualizer 2.1: A database visualizer / sql editor Works great !
  Jetty web server : An opensource web / servlet engine.  
  SkinLF : Change the look and feel of your applications  
  Argo UML : An opensource UML modeling tool  
  Jext : A java editor v2.11.0.2 works fine
  jEdit : A java editor Works fine under linux and NT although some plugins may behave incorrectly
  jBuilder : A terrific java IDE Tested under linux
  JExplorer : An explorer-like file manager Tested under linux
  JCVS : An really good cvs client in java  
  J : A file-manager/editor  
  StarTeam : A change management tool  
  Any other application.... If you know some applications that runs with jsh, please keep us informed !  




(c) 1999-2002 COLLIN Gérard
View Appliweb Internet Engine : Homepage | Description | Technology | Download
Development | Documentation | News