1. Field of Invention
The present invention relates generally to the field of computer software in a client server heterogeneous distributed network.
2. Description of Related Art
Various scripting languages exist, such as Jython (Java-base Python, a popular, object-oriented scripting language used for writing system utilities and Internet scripts), PERL, and Jacl (Java-base TCL/TK, standing for Tool Command Language/ToolKit, an interpreted script language used to develop a variety of applications, including GUIs, prototypes and CGI scripts). Scripting languages are interpreter based programming languages. Typically a scripting language provides a fixed set of built-in commands and allows users to expand the capability of commands by registering more user-defined commands through a proprietary extension mechanism. However, in a heterogeneous distributed network, where various such scripting languages exist, and various versions of the same language coexist side by side, it entails considerable effort to update all scripting languages with new user-defined commands.
Bean Scripting Framework (BSF) defines a unified extension mechanism for software developers to plug in commands so that a command can be made available in multiple scripting languages with a single implementation. More specifically, BSF defines a set of Java classes which enables Java application to support various scripting languages. This enables the access to Java objects and methods from all the scripting languages supported by BSF. For example, BSF allows one to write Java scripts in languages other than Java while providing access to the Java class library. Java script is an interpreted programming or script language from Netscape. It is somewhat similar in capability to Microsoft's Visual Basic, Sun's Tcl, the UNIX-derived Perl, and IBM's REXX. In general, script languages are easier and faster to code in than the more structured and compiled languages such as C and C++ and are ideal for programs of limited capability or that can reuse and tie together existing compiled programs. In addition, BSF permits any Java application to dynamically extend any scripting language that is supported by BSF, by providing an API (Application Programming Interface) that permits interacting with scripting language engines from the Java implementation and a scripting object registry mechanism that exposes Java objects to these scripting language engines.
While BSF reduces development effort for command-line functionality and user-defined commands, the extension mechanism of the BSF still requires software developers to implement scripting objects for additional commands and programically register these scripting objects to the BSF engine.
One limitation of BSF is that it requires additional development effort for each additional command. This is not desirable as the scripting tool needs to be modified whenever a new command is added or an existing command interface is enhanced or modified. This limitation leads to more significant drawbacks: it implies that each software product version needs to provide its own version of scripting tool as more commands are supplied over time, as the software product evolves. In a client-server computer environment, the scripting tool is typically just a client that communicates with the server process. This means users have to use different versions of the scripting tool for different versions of the product. This limitation presents a serious drawback in a heterogeneous distributed system, as a heterogeneous distributed system can contain software products of different versions. This limitation also makes it hard to use the same scripting tool to support multiple optional installable features, or multiple software products on the same system, as the existing scripting language extension mechanism requires the knowledge of available commands at development time.
Factoring all of the above, it can be seen that what is needed is a superior method and apparatus to manage heterogeneous distributed systems by defining a unified extension mechanism for disparate scripting languages having disparate user-defined command extension mechanisms. All the user-defined scripting commands are made available to all users of a distributed system, without having programmers develop and register new command line functionality with each separate scripting language every time a new user-defined scripting command is distributed in a network.