<?xml version="1.0"?>
<document>

  <properties>
    <author email="bodewig@apache.org">Stefan Bodewig</author>
    <author email="chuck@topsail.org">Chuck Murcko</author>
    <title>Related Projects</title>
  </properties>

  <body>

    <section name="Related Projects (Alphabetical Order)">

      <p>Nothing listed here is directly supported by the BSF
      developers. If you encounter any problems with them, please use
      the contact information. Failing that, a query to the bsf-users
      mailing list may help.</p>

      <subsection name="BeanShell (Interpretative Java)">
        <p>
        &quot;BeanShell is a small, free, embeddable, Java source interpreter
        with object scripting language features, written in Java. BeanShell
        executes standard Java statements and expressions, in addition to
        obvious scripting commands and syntax. BeanShell supports scripted
        objects as simple method closures like those in Perl and
        JavaScript(tm).&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.beanshell.org/">http://www.beanshell.org/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.beanshell.org/contact.html">project mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Dual Licensed: <a href="http://www.opensource.org/licenses/sunpublic.php">Sun Public License</a> /
                                          <a href="http://www.opensource.org/licenses/lgpl-license.php">Gnu Lesser Public License</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="Groovy">
        <p>
        &quot;Groovy is a powerful scripting language for the JVM which compiles down to Java bytecode and implements
        various high level features for Java developers such as dynamic typing, powerful closures for neat object navigation,
        native syntax for Maps and Lists, operator overloading, new extended JDK methods, AOP hooks and auto-boxing.
        Groovy also features a markup language for working with structured data (XML, DOM, SAX, Ant tasks, Swing etc).
        &quot;
        </p>
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.3 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://groovy.codehaus.org/">http://groovy.codehaus.org/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://groovy.codehaus.org/mail-lists.html">Mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/bsd-license.php">BSD</a> (Apache-like) License</td>
          </tr>
        </table>
      </subsection>


      <subsection name="Jacl (Tcl)">
        <p>
        &quot;Jacl, which stands for Java Command Language, is a Java implementation
        of TCL 8.x.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Jacl 1.2.6, with BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://tcl.activestate.com/software/java/">http://tcl.activestate.com/software/java/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href ="http://tcljava.sourceforge.net/docs/website/mail.html">Tcl/Java Mailing Lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Sun, ORO, and UCB licenses (see source)</td>
          </tr>
        </table>
      </subsection>


      <subsection name="JavaScript/Rhino (JavaScript in Java)">
        <p>
        &quot;JavaScript/Rhino is an open-source implementation of JavaScript written
        entirely in Java. It is typically embedded into Java applications
        to provide scripting to end users.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>
                    Rhino with BSF 2.4 and above,
                    <br/>
                    early versions of Rhino (up to and including version 1.5.3) with BSF 2.3
             </td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.mozilla.org/rhino/">http://www.mozilla.org/rhino/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.mozilla.org/rhino/help.html">Rhino Contact Page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/mozilla1.1.php">Mozilla Public License, version 1.1</a></td>
          </tr>
        </table>
      </subsection>



      <subsection name="JLog (PROLOG in Java)">
        <p>
          &quot;Prolog is a logic-oriented language based on predicate calculus. While it is not
		  really a scripting language, there is a range of problems that are much easier to
		  express in it than in Java, and for these cases a Prolog BSF engine comes in handy.
		  It is also useful for adding a GUI to Prolog programs.
		  The underlying Prolog interpreter is JLog, which can be run as an applet, an application
		  or embedded through an API, and can be found at <a href="http://sf.net/projects/jlogic/">http://sf.net/projects/jlogic/</a>.&quot;
        </p>
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.3 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.ulfdittmer.com/jlog/">http://www.ulfdittmer.com/jlog/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:udittmer@yahoo.com">Ulf Dittmer</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/gpl-license.php">GPL</a> (same as JLog itself)</td>
          </tr>
        </table>
      </subsection>


      <subsection name="JRuby (Ruby in Java)">
        <p>
        &quot;JRuby is a pure Java implementation of the Ruby interpreter,
        being developed by Jan Arne Petersen and others.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jruby.sourceforge.net/">http://jruby.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jpeterson@uni-bonn.de">Jan Arne Petersen</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>dual <a href="http://www.opensource.org/licenses/gpl-license.php">GPL</a>/<a href="http://www.opensource.org/licenses/lgpl-license.php">LGPL</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="JudoScript">
        <p>
        &quot;Judoscript is a 3GL-and-4GL; it retains 3GL's powerful
        programmability, and extends its reach into many of today's popular
        applications areas with 4GL approach (figuratively, &quot;WYSIWYG
        programming&quot;), making their uses easy, effective and elegant.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.judoscript.com/">http://www.judoscript.com/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:judoscript@hotmail.com">James Huang</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/lgpl-license.php">LGPL</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="Jython (Python in Java)">
        <p>
        &quot;Jython is an implementation of the high-level, dynamic,
        object-oriented language Python written in 100% Pure Java, and
        seamlessly integrated with the Java platform. It thus allows you
        to run Python on any Java platform.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Jython 2.1, with BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.jython.org/">http://www.jython.org/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href ="http://sourceforge.net/mail/?group_id=12867">Jython Mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Jython Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="NetRexx (Rexx-like Java)">
        <p>
        &quot;NetRexx is a <i>human-oriented</i> programming language which makes
        writing and using Java classes quicker and easier than writing in
        Java.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>NetRexx 2.0.2, with BSF 2.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www2.hursley.ibm.com/netrexx/">http://www2.hursley.ibm.com/netrexx/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www-306.ibm.com/software/awdtools/netrexx/mailinglist.html">NetRexx 2 mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>IBM License Agreement for IBM Employee-Written Software</td>
          </tr>
        </table>
      </subsection>

      <subsection name="ObjectRexx/Rexx">
        <p>
        &quot;Open Object Rexx (ooRexx, <a  href="http://www.ooRexx.org">http://www.ooRexx.org</a>) is a free
        and opensource language, which was originally developed by IBM, and made available for opensourcing and further
        developing it.
        <br></br>

        The non-profit SIG  Rexx Language Association (<a href="http://www.RexxLA.org">http://www.RexxLA.org</a>)
        received the source code from IBM at the end of 2004 and released an opensource version
        to the community in the spring of 2005.

        <br></br><a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">The BSF engine for Rexx (BSF4Rexx) </a> comes with an ooRexx wrapper
        program (BSF.CLS) which camouflages Java as ooRexx, easying programming
        considerably (e.g. no need for type information/casting).&quot;
        </p>

        <table>
                  <tr>
                          <th>Relates to:</th>
                          <td><em>ooRexx</em></td>
                  </tr>

                  <tr>
                    <th>Compatibility:</th>
                    <td>BSF 2.3 and above</td>
                  </tr>

                  <tr>
                    <th>Contact:</th>
                    <td><a href="mailto:president@rexxla.org">President of RexxLA</a></td>
                  </tr>

                  <tr>
                    <th>URL:</th>
                     <td><a href="http://www.ooRexx.org">http://www.ooRexx.org</a></td>
                  </tr>

                  <tr>
                    <th>License:</th>
                    <td><a href="http://www.opensource.org/licenses/cpl1.0.php">IBM's opensource license CPL v 1.0</a> (hence you can bundle this freely with commercial software as well)
                    </td>
                  </tr>

                  <tr/><tr/><tr/>

                  <tr>
                          <th>Relates to:</th>
                          <td><em>BSF4Rexx</em></td>
                  </tr>

                  <tr>
                    <th>Compatibility:</th>
                    <td>BSF 2.3 and above</td>
                  </tr>

                  <tr>
                    <th>URL:</th>
                     <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/</a> (temporary home)</td>
                  </tr>

                  <tr>
                    <th>URL:</th>
                     <td><a href="http://bsf4rexx.sourceforge.net/">http://bsf4rexx.sourceforge.net (starting at the end of April 2006)</a>  (planned home)</td>
                  </tr>

                  <tr>
                    <th>Contact:</th>
                    <td><a href="mailto:ronyf@apache.org">Rony G. Flatscher</a></td>
                  </tr>

                    <tr>
                      <th>License:</th>
                      <td><a href="http://www.opensource.org/licenses/apache2.0.php">Apache v2.0</a>  (hence you can bundle this freely with commercial software as well)
                      </td>
                  </tr>

        </table>
      </subsection>


      <subsection name="ObjectScript">
        <p>
          &quot;ObjectScript is a general purpose object-oriented programming language. It is designed to
          be simple to learn, easy to use, yet still powerful, combining the convenience of an
          interactive interpreter with many of the features of Java, plus operator overloading,
          regular expressions, closures, XML-RPC support, etc.  And a behind the scenes compiler
          compiles script code to JVM bytecode for faster execution.&quot;
        </p>
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>BSF 2.3 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://objectscript.sourceforge.net/">http://objectscript.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:rob@ti.com">Rob Clark</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/lgpl-license.php">LGPL</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="Xalan/XSLT">
        <p>
        &quot;Xalan-Java is an XSLT processor for transforming XML documents into
        HTML, text, or other XML document types. It implements the W3C
        Recommendations for XSL Transformations (XSLT) and the XML Path
        Language (XPath). It can be used from the command line, in an applet
        or a servlet, or as a module in other program.

        <br></br>
        Starting with Sun's Java 1.4SE a W3C compliant set of classes for XSLT is part
        of the runtime environment.&quot;
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Xalan 2.2 and above (XSLT), with BSF 2.3 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://xml.apache.org/xalan-j/index.html">http://xml.apache.org/xalan-j/index.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://xml.apache.org/overview.html">Apache XML Project "Get Involved" page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.opensource.org/licenses/apache2.0.php">Apache v2.0</a></td>
          </tr>
        </table>
      </subsection>


    </section>

  </body>
</document>

