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

  <properties>
    <author email="chuck@topsail.org">Chuck Murcko</author>
    <author email="victor.j.orlikowski@alumni.duke.edu">Victor Orlikowski</author>
    <title>Bean Scripting Framework</title>
  </properties>

<body>

  <section name="Bean Scripting Framework">

<p>
Bean Scripting Framework (BSF) is a set of Java classes which provides scripting
language support within Java applications, and access to Java
objects and methods from scripting languages. BSF allows one to
write JSPs in languages other than Java while providing access to the Java
class library. In addition, BSF permits any Java application to be implemented
in part (or dynamically extended) by a language that is embedded within it.
This is achieved by providing an API that permits calling scripting
language engines from within Java, as well as an object registry that exposes
Java objects to these scripting language engines.
</p>

  </section>

  <section name="Supported Languages">

<p>
BSF supports several scripting languages currently:

<ul>
   <li>
   Javascript (using Rhino ECMAScript, from the Mozilla project)
   </li>

   <li>
   Python (using either Jython or JPython)
   </li>

   <li>
   Tcl (using Jacl)
   </li>

   <li>
   NetRexx (an extension of the IBM REXX scripting language in Java)
   </li>

   <li>
   XSLT Stylesheets (as a component of Apache XML project's Xalan and Xerces)
   </li>
</ul>
</p>

<p> In addition, the following languages are supported with their own BSF
    engines:

<ul>
   <li>
   Java (using BeanShell, from the BeanShell project)
   </li>
   
   <li>
   <a href="http://www.ulfdittmer.com/jlog/index.html">JLog</a>
   </li>

   <li>
   JRuby
   </li>

   <li>
   JudoScript
   </li>

   <li>
   <a href="http://groovy.codehaus.org/">Groovy</a>
   </li>

   <li>
   <a href="http://objectscript.sourceforge.net/">ObjectScript</a>
   </li>
   
   <li>
   	<a href="http://www.oorexx.org/"> Open Object Rexx (ooRexx)</a>, using 
	the <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF Rexx
	engine</a> for BSF, and the precompiled JNI-interface BSF4Rexx .DLL 
	(Windows) or .so (Linux) file together with the ooRexx wrapper class 
	'BSF.CLS', which camouflages Java as ooRexx.
   </li>
   
</ul>
</p>

<p>
Information on where to obtain scripting languages for use with BSF is
available on the <a href="projects.html">Related Projects</a> page.
</p>

  </section>
  
  <section name="Documentation">
  
<p>
You can view the documentation for the current release (Jakarta BSF 2.3)
<a href="manual.html">online</a>
</p>

<p>
Documentation and examples are included in the source and binary distributions. 
</p>

  </section>

  <section name="Latest Release">
    <p>
    You can download the latest release:
    </p>
    <ul>
        <li>
<!--
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/release/v2.3/bin/"></a>
-->
            Download the binary release</li>
        <li>
<!--
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/release/v2.3/src/"></a>
-->
            Download the source release</li>
        <li>
<!--
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/release/v2.3/rpms/"></a>
-->
            Download source or binary RPMs</li>
    </ul>  
  </section>
  
  <section name="Development Release">
    <p>
    You can download the latest development release:
    </p>
    <ul>
        <li>
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/dev/v2.3.0/bin/">
            Download the development binary release</a>
        </li>
        <li>
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/dev/v2.3.0/src/">
            Download the development source release</a>
        </li>
        <li>
<!--
<a href="http://www.apache.org/dist/jakarta/jakarta-bsf/dev/v2.3.0/rpms/"></a>
-->
            Download development source or binary RPMs
        </li>
    </ul>  
  </section>
  
  <section name="Nightly Builds">
    <p>
    If you wish to use the latest BSF features, you can try downloading a nightly 
    build from <a href="http://jakarta.apache.org/builds/jakarta-bsf/nightly/">here</a>
    </p>
    
  </section>
  
  <section name="Towards BSF 3.0">
    <p>
    We are beginning to discuss design details for BSF 3.0. Please
    read the latest <a href="bsfnews.html">BSF news</a> for more details.
    </p>
  </section>
  
  <section name="Get Involved">
<ul>
<li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li>
<li><a href="http://jakarta.apache.org/getinvolved/mail.html">Join Mailing Lists</a></li>
<li><a href="http://marc.theaimsgroup.com/?l=bsf-dev&amp;r=1&amp;w=2">Search the Dev Mailing List</a>
</li>
<li><a href="http://marc.theaimsgroup.com/?l=bsf-user&amp;r=1&amp;w=2">Search the User Mailing List</a>
</li>
</ul>



  </section>

</body>
</document>

