<?xml version="1.0"?>

<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<document>

  <properties>
    <author email="bodewig@apache.org">Stefan Bodewig</author>
    <author email="chuck@topsail.org">Chuck Murcko</author>
    <author email="rony@apache.org">Rony G. Flatscher</author>
    <title>Resources</title>
  </properties>

  <body>
    <section name="FAQs">
      <subsection name="At BSF's website">

        <p>Starting with the release of BSF 2.3 the BSF's FAQ is
        bundled with the distribution, the most recent version can
        always be found at the website.</p>

        <table>
          <tr>
            <th>FAQ:</th>
            <td><a href="faq.html">http://jakarta.apache.org/bsf/faq.html</a></td>
          </tr>
        </table>
      </subsection>

<!--
      <subsection name="jGuru">
        <p>jGuru hosts an interactive BSF discussion forum and FAQ system</p>

        <table>
          <tr>
            <th>Forum:</th>
            <td><a href="http://www.jguru.com/forums/home.jsp?topic=BSF">http://www.jguru.com/forums/home.jsp?topic=BSF</a></td>
          </tr>
          <tr>
            <th>FAQ:</th>
            <td><a href="http://www.jguru.com/faq/home.jsp?topic=BSF">http://www.jguru.com/faq/home.jsp?topic=BSF</a></td>
          </tr>
        </table>
      </subsection>
-->
    </section>

    <section name="Articles and Presentations">

      <p>The following sections list articles and presentations written about BSF.  If
      you've written something that should be included, please post it to one
      of the mailing lists.</p>

    </section>

    <section name="Articles">

      <subsection name="Using JavaScript with Ant">
        <p>A tutorial about using BSF, JavaScript, and XSLT with Ant.</p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Dylan Schiemann</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.sitepen.com/ant/javascript.html">http://www.sitepen.com/ant/javascript.html</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Script JavaBeans with the Bean Scripting Framework">
        <p>
         Add scripts to your JavaBeans or JavaBeans to your scripts
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="http://www.javaworld.com/feedback">Mark Johnson</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.javaworld.com/javaworld/jw-03-2000/jw-03-beans.html">http://www.javaworld.com/javaworld/jw-03-2000/jw-03-beans.html</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Xalan-Java Extensions">
        <p>
        For extensions written in languages other than Java, Xalan-Java uses
        the Bean Scripting Framework (BSF), an architecture for incorporating
        scripting into Java applications and applets.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="http://xml.apache.org/xalan-j/index.html">Apache XML Xalan developers</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://xml.apache.org/xalan-j/extensions.html">http://xml.apache.org/xalan-j/extensions.html</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Using JavaScript/Rhino with BSF and Apache">
        <p>
        The Bean Scripting Framework (or BSF) was originally developed by
        IBM and now published as open source. It provides a framework for
        using a number of scripting languages with Java. Rhino is one of the
        supported languages.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:nboyd@atg.com">Norris Boyd</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.mozilla.org/rhino/bsf.html">http://www.mozilla.org/rhino/bsf.html</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Extending Your Applications with Bean Scripting Framework">
        <p>
        BSF brings standard support for many programming languages to the
        Java platform.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rick_m_hightower@hotmail.com">Rick Hightower</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jdj.sys-con.com/read/36422.htm">http://jdj.sys-con.com/read/36422.htm</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Embed JudoScript in Java">

        <p>
        Two ways to embed JudoScript in Java: through its support of Bean
        Scripting Framework and its own, simpler engine interface.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:judoscript@hotmail.com">James Huang</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.judoscript.com/articles/embed.html">http://www.judoscript.com/articles/embed.html</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="JRuby Documentation">
        <p>
        Using JRuby with BSF
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:jpeterson@users.sourceforge.net">Jan Arne Petersen</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jruby.sourceforge.net/doc-bsf.shtml">http://jruby.sourceforge.net/doc-bsf.shtml</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Embed ObjectScript in Java">
        <p>
          ObjectScript can be embedded either through it's own native interface, or through BSF.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rob@ti.com">Rob Clark</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://objectscript.sourceforge.net/?docs/embedding.html">http://objectscript.sourceforge.net/?docs/embedding.html</a></td>
          </tr>
        </table>
      </subsection>



      <subsection name="The Augsburg Version of BSF4Rexx">
        <p>
          <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">&quot;BSF4Rexx&quot;, the Bean Scripting Framework for Rexx</a>, allows one to use the Rexx
         and Object Rexx programming languages with the open source Bean Scripting
         Framework (BSF) which enables Java programs to easily invoke scripts and
         programs written in another language than Java. This article introduces the
         &quot;Augsburg version&quot; of BSF4Rexx which incorporates numerous changes and as a
         main feature the ability to start Java from Rexx programs. This way all of Java can
         be viewed as a huge external Rexx function library from the perspective of Rexx,
         available on any platform Rexx is available. This paper gives a bird eyes view of
         BSF4Rexx concentrating on this latter ability and introducing Rexx programmers
         informally to Java and to the most important object-oriented terms such that the
         unacquainted Rexx and Object Rexx programmer becomes able to read the Java
         documentation and as a result apply BSF4Rexx to allow (Object) Rexx to use and
         drive Java.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx14/orx14_bsf4rexx-av.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx14/orx14_bsf4rexx-av.pdf</a></td>
          </tr>
        </table>
      </subsection>



      <subsection name="Camouflaging Java as Object REXX">
        <p>
            The Java runtime environment (JRE) is available for practical every operating system in
            the world and installed on most computers. The functionality of the Java classes that
            build the JRE has been constantly updated to reflect the advances in the software
            technology thereby making bleeding edge software concepts available to Java
            programmers. For that reason the JRE has been an attractive target for making its
            functionality available to Rexx programs in the form of external Rexx functions, notably
            with the <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">&quot;BSF4Rexx&quot; (Bean Scripting Framework for Rexx)</a> technology introduced at
            past International Rexx Symposiae. BSF4Rexx supplies a procedural interface to Java,
            such that Rexx programs need to simply use CALL-statements or function-calls to
            bridge into Java.
        </p>
        <p>
            As Object Rexx is object-oriented an object-oriented interface to Java may be desirable
            as this may reduce the complexity to refer to Java. This article introduces and
            discusses the architecture and the implementation of Object Rexx wrapper classes that
            hide the procedural interfaces from Object Rexx programmers by embedding the
            procedural interfaces of BSF4Rexx in Object Rexx methods, allowing e.g. the
            invocation of Java methods transparently via Object Rexx messages.
      </p>
        <p>
            Among other things it will be demonstrated, how Java objects are created and sent
            messages to interactively via a keyboard using the Rexx &quot;rexxtry.rex&quot; program in a
            command line interface.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx15/2004_orx15_bsf-orx-layer.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx15/2004_orx15_bsf-orx-layer.pdf</a></td>
          </tr>
        </table>
      </subsection>



      <subsection name="Automating OpenOffice.Org with ooRexx: Architecture, Gluing to Rexx using BSF4Rexx">
        <p>
                The opensource Microsoft Office clone <a href="http://www.OpenOffice.org">&quot;OpenOffice&quot;</a> is available on
                multiple plat-forms, from Windows, over Linux to OS/2.  It can read/write
                Microsoft office file-formats, such as Word, Excel or PowerPoint.  Its
                scripting architecture is radically dif-ferent from what Microsoft has
                come up with and appears to be more systematic, al-though there is a
                rather steep learning curve to it.
        </p>

        <p>
                The architecture of OpenOffice is exposed via the UNO (Uniform Network
                Objects) interface, which allows C, C++ and Python programs to exploit
                OpenOffice.  On the Windows platform there is an ActiveX/OLE-interface
                supplied, such that ActiveX-script languages like VBS, JS, as well as
                <a href="http://www.ooRexx.org">ooRexx</a> can be used for scripting purposes, but such programs will lock-in
                the company into the Windows operating system.
      </p>

      <p>
                For the programming language Java, OpenOffice supplies a Java interface to
                UNO, which can also be exploited in rather innovative ways, e.g.  using
                <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx (Bean Scripting Framework for Rexx)</a> to bridge between OpenOffice
                and ooRexx.  Such a solution would allow for the driving/scripting of
                OpenOffice in a platform independent way, allowing customers to eventually
                break out of possibly undesired lock-ins (e.g.  Windows operating system
                and/or ActiveX/OLE-technology).
      </p>

        <p>
                This article gives a conceptual overview of OpenOffice UNO and explains in
                detail how UNO can get instantiated and interfaced with by ooRexx.
        </p>


        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdf</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="Automating OpenOffice.Org with ooRexx: ooRexx, Nutshell Examples For Write and Calc">
        <p>
                This article will give numerous little &quot;nutshell&quot; examples of driving <a href="http://www.OpenOffice.org">OpenOffice.org</a> via <a href="http://www.ooRexx.org">ooRexx</a>. All the examples will run unaltered under Linux and Windows.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_NutShell_OOo.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_NutShell_OOo.pdf</a></td>
          </tr>
        </table>
      </subsection>



      <subsection name="Automating Subversion - An Open Object Rexx Approach">
        <p>
                This work explores and implements scripts which allow driving the source
                code version control system &quot;subversion&quot; from <a href="http://www.ooRexx.org">ooRexx</a>.  As there are Java
                implementations for subversion it is possible to employ <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a> to drive
                the application.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Bernhard Hoisl</td>
          </tr>
          <tr>
            <th>URL (Text)::</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200507_Subversion_Hoisl/200507_AutomatingSubversion.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200507_Subversion_Hoisl/200507_AutomatingSubversion.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200507_Subversion_Hoisl/200507_examples.zip">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200507_Subversion_Hoisl/200507_examples.zip</a></td>
          </tr>
        </table>
      </subsection>




      <subsection name='OpenOffice.org Automation: Object Model, Scripting Languages, "Nutshell"-Examples'>
          <p>
            This work explores and demonstrates how <a href="http://www.OpenOffice.org">OpenOffice.org</a> can be automated
            via Object REXX by using the Java programming interfaces of OpenOffice.org
            and <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a>.
          </p>

          <p>
            This time specific <a href="http://www.ooRexx.org">ooRexx</a> support for OpenOffice (module &quot;UNO.CLS&quot; by
            Rony G.  Flatscher, derived from OOO.CLS which is based on the Java
            interface to the UNO component technology of OpenOffice) is used, which
            cuts down the necessary code dramatically and makes those programs easy
            ledgible and understandable (looks almost like pseudo-code).
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Andreas Ahammer</td>
          </tr>
          <tr>
            <th>URL (Text)::</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200511_OOo-Ahammer/200511_OOoAutomation.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200511_OOo-Ahammer/200511_OOoAutomation.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200511_OOo-Ahammer/20051106_examples.zip"></a>http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200511_OOo-Ahammer/20051106_examples.zip</td>
          </tr>
        </table>
      </subsection>


      <subsection name="OpenOffice.org Automatisation with Object Rexx">
        <p>
                This work builds on the work of Mr.  Ahammer (above).  It explores and
                demonstrates how <a href="http://www.OpenOffice.org">OpenOffice.org</a> can be automated via Object REXX by using
                the Java programming interfaces of OpenOffice.org and <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a>.
        </p>

        <p>
                This time the OpenOffice.org 2.0 scripting framework (written in Java) is
                used, which allows to deploy the scripts as OpenOffice.org/StarOffice
                macros, in a platform independent manner.
       </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Martin Burger</td>
          </tr>
          <tr>
            <th>URL (Text):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200605_Burger/Bakk_Arbeit_Burger20060519.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200605_Burger/Bakk_Arbeit_Burger20060519.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200605_Burger/Bakk_Arbeit_BurgerExamples_All_20060519.zip"></a>http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200605_Burger/Bakk_Arbeit_BurgerExamples_All_20060519.zip</td>
          </tr>
        </table>
      </subsection>



      <subsection name="BSF4Rexx and OpenOffice.org Nutshell-Examples">
        <p>
                This seminar paper introduces the easy to learn syntax of <a href="http://www.ooRexx.org">Open Object Rexx
                (ooRexx)</a> and the <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a> external Rexx function package, which allows the
                weakly typed language ooRexx to interface with (strictly typed) Java.
        </p>

        <p>
                It defines and explains numerous small (nutshell) examples where the
                functionality of Java class libraries is used for ooRexx.  In addition,
                the students create examples for automating/scripting the opensource
                office package <a href="http://www.OpenOffice.org">OpenOffice.org (OOo)</a> in an openplatform way using the OOo
                Java interface for that purpose.
        </p>

        <p>
                Some of the OpenOffice related nutshell examples can be retrieved from the
                official OOo <a href="http://codesnippets.services.openoffice.org/">&quot;Snippet&quot;</a> homepage.
        </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Gerhard G&#246;rlich, &#197;smund Realfsen, David Spanberger
            </td>
          </tr>
          <tr>
            <th>URL (Text):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_version_4.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_version_4.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_code.zip"></a>http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_code.zip</td>
          </tr>
        </table>
      </subsection>


      <subsection name="OpenOffice.org Automatisation with Object Rexx (Calc)">
        <p>
                This paper gives an introduction to the <a href="http://www.OpenOffice.org">OpenOffice.org</a> architecture and
                explains how the OpenOffice.org Calc component can be automated by using
                the scripting language <a href="http://www.ooRexx.org">Open Object Rexx (ooRexx)</a>.  This components are
                open sourced and can be downloaded free of charge from the internet.
        </p>

        <p>
                The paper is divided into a theoretical and a practical part.  In the
                theoretical part, the main components, ooRexx, OpenOffice.org and the Bean
                Scripting Framework for ooRexx, will be described and it explains how the
                single components can work together.  At the end of this part you can find
                an short installation guide, which shows you how to retrieve and install
                the single components.  The practical part provides some nutshell
                examples, that should demonstrate how the OpenOffice.org Calc component
                can be automated.  The concluding part should give a short summary of the
                paper.
       </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Michael Hinz</td>
          </tr>
          <tr>
            <th>URL (Text):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Hinz/20060712_OOo_calc_automation.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Hinz/20060712_OOo_calc_automation.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Hinz/20060629_OOo_calc_examples.zip">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Hinz/20060629_OOo_calc_examples.zip</a></td>
          </tr>
        </table>
      </subsection>


      <subsection name="ooRexx Snippets for OpenOffice.org Writer">
        <p>
        </p>
                This paper deals with the use of <a href="http://www.ooRexx.org">ooRexx</a> as a scripting language for
                automation of <a href="http://www.OpenOffice.org">OpenOffice.org</a> Writer.

        <p>
                At first, there will be an introduction to the technical requirements,
                which include the software that has to be installed.  Concerning ooRexx
                there is also a sub chapter about its syntax and common instructions, to
                give a feeling for this programming language.
        </p>

        <p>
                The next chapter is about the architectural approach behind ooRexx and
                OpenOffice.org.  It is described how OpenOffice.org can be accessed using
                ooRexx.
        </p>

        <p>
                Chapter four is a small installation guide, which shows how to set up the
                different software programmes and configure them correctly.  Chapter five
                and six show how the automation of OpenOffice.org Writer can be done.
                Small snippets, which are code examples, demonstrate different tasks.  At
                last the conclusion gives a small summary and an outlook.
       </p>

        <table>
          <tr>
            <th>Author:</th>
            <td>Matthias Prem</td>
          </tr>
          <tr>
            <th>URL (Text):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Prem/20060724_ooRexxSnippetsOOoWriter_2.1_odt.pdf">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Prem/20060724_ooRexxSnippetsOOoWriter_2.1_odt.pdf</a></td>
          </tr>
          <tr>
            <th>URL_(Examples):</th>
            <td><a href="http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Prem/ooRexxSnippetsOOoWriter_oorexx_snippets.zip">http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2006/200607_Prem/ooRexxSnippetsOOoWriter_oorexx_snippets.zip</a></td>
          </tr>
        </table>
      </subsection>





    </section>

    <section name="Presentations">

          <subsection name="An Introduction to BSF">
            <p>This article is a short introduction into the basic
            concepts of BSF. To be presented at ApacheCon 2002.</p>

            <table>
              <tr>
                <th>Author:</th>
                <td><a href="mailto:victor.j.orlikowski@alumni.duke.edu">Victor Orlikowski</a></td>
              </tr>
              <tr>
                <th>URL:</th>
                <td><a href="http://www.dulug.duke.edu/~vjo/papers/ApacheCon_US_2002/">http://www.dulug.duke.edu/~vjo/papers/ApacheCon_US_2002/</a></td>
              </tr>
            </table>
          </subsection>


          <subsection name='The Vienna Version of "BSF4Rexx"'>
            <p>
                    This presentation introduces the &quot;The Vienna Version of <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a>&quot;,
                    International Rexx Symposium 2006, Austin, Texas.
            </p>

            <table>
              <tr>
                <th>Author:</th>
                <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
              </tr>
              <tr>
                <th>URL:</th>
                <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdf</a></td>
              </tr>
            </table>
          </subsection>


          <subsection name='UNO.CLS: An (Open) Object Rexx Module for Universal Network Objects'>
            <p>
                    &quot;The Vienna Version of <a href="http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current/">BSF4Rexx</a>&quot;, allows open-platform scripting of
                    <a href="http://www.OpenOffice.org">OpenOffice.org (OOo)</a> with the help of BSF. This is done by using the Java APIs of OOo via BSF to
                    address the OOo &quot;Universal Network Objects (UNO)&quot; components, which are used to assemble OOo.
                    <br></br>
                    Presented at the International Rexx Symposium 2006, Austin, Texas.
            </p>

            <table>
              <tr>
                <th>Author:</th>
                <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
              </tr>
              <tr>
                <th>URL:</th>
                <td><a href="http://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_UNO.pdf">http://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_UNO.pdf</a></td>
              </tr>
            </table>
          </subsection>


          <subsection name="BSF4Rexx: Camouflaging Java">
            <p>
                   This presentation shows what one is able to do with BSF as well, presented at <a href="http://asia.apachecon.com">ApacheCon Asia 2006</a>, Sri Lanka.
            </p>

            <table>
              <tr>
                <th>Author:</th>
                <td><a href="mailto:rony@apache.org">Rony G. Flatscher</a></td>
              </tr>
              <tr>
                <th>URL:</th>
                <td><a href="http://asia.apachecon.com/wp-content/presentations/ApacheConAsia2006-08-16-Flatscher-BSF4Rexx.pdf">http://asia.apachecon.com/wp-content/presentations/ApacheConAsia2006-08-16-Flatscher-BSF4Rexx.pdf</a></td>
              </tr>
            </table>
          </subsection>

    </section>
  </body>
</document>
