DE10050401A1 - System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets (Bean Scripting Framework) - Google Patents

System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets (Bean Scripting Framework)

Info

Publication number
DE10050401A1
DE10050401A1 DE10050401A DE10050401A DE10050401A1 DE 10050401 A1 DE10050401 A1 DE 10050401A1 DE 10050401 A DE10050401 A DE 10050401A DE 10050401 A DE10050401 A DE 10050401A DE 10050401 A1 DE10050401 A1 DE 10050401A1
Authority
DE
Germany
Prior art keywords
scripting
engine
language
application
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE10050401A
Other languages
English (en)
Inventor
Sanjiva Weerawarana
Matthew J Duftler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE10050401A1 publication Critical patent/DE10050401A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

Diese Erfindung stellt ein System und Verfahren bereit, das objektorientierten (OOP) Anwendungen das einfache und einheitliche Einbeziehen von Scripting gestattet. Das Bean Scripting Framework (BSF) unterstützt Scripting auf der Seite der OOP-Programmiersprache, wobei die Programmiersprache Scripts ausführt und bewertet, und ebenso Fälle, in denen Scripts Objekte ausführen und steuern. Der BSF-Manager stellt sowohl Scripting-Services für das Anwendungsprogramm als auch Unterstützungs-Services für Scripting-Engines zur Interaktion mit der Laufzeitumgebung der OOP-Programmiersprache bereit. Das BSF hat auch ein Register bekannter Scriptingsprachen, mit denen das Anwendungsprogramm interagieren kann. Die Scripting-Architektur gestattet es, Anwendung von OOP-Programmiersprachen weitergehend als vorher möglich anzupassen und zu verwalten.

Description

Anwendungsgebiet der Erfindung
Die vorliegende Erfindung bezieht sich allgemein auf computerunterstützte Programmentwicklungstechnik (Computer Aided Software Engineering, CASE) und insbesondere auf ein Verfahren des Einbeziehens von Scripting in Anwendungen der objektorientierten Programmierung (object oriented programming, OOP) und kleine Programme, die Applets genannt werden.
Beschreibung der Vorgeschichte
OOP ist die bevorzugte Umgebung zur Entwicklung benutzerfreundlicher intelligenter Computersoftware.
Schlüsselelemente der OOP sind Datenkapselung, Vererbung und Polymorphie. Diese Elemente können zum Erzeugen einer grafischen Benutzerschnittstelle (graphical user interface, GUI) verwendet werden, die typischerweise durch eine Umgebung mit Fenstertechnik mit Symbolen, Mauscursor und Menüs gekennzeichnet ist. Obwohl diese drei Schlüsselelemente für OOP-Sprachen üblich sind, führen die meisten OOP-Sprachen die drei Schlüsselelemente unterschiedlich aus.
Beispiele für OOP-Sprachen sind SmallTalk, Object Pascal, C++ und Java. SmallTalk ist eigentlich mehr als eine Sprache; es könnte genauer als eine Programmierumgebung gekennzeichnet werden. SmallTalk wurde in der Learning Research Group des Xerox's Palo Alto Research Center (PARC) in den frühen 70er Jahren entwickelt. In SmallTalk wird eine Nachricht an ein Objekt geschickt, um das Objekt selbst auszuwerten. Nachrichten führen eine Aufgabe ähnlich der von Funktionsaufrufen in herkömmlichen Programmiersprachen aus. Der Programmierer braucht sich nicht mit dem Datentyp zu beschäftigen; stattdessen muss er sich nur mit dem Erzeugen der richtigen Reihenfolge einer Nachricht und der Verwendung der richtigen Nachricht beschäftigen. Object Pascal ist die für Apple Macintosh® Computer verwendete Sprache. Apple entwickelte Object Pascal in Zusammenarbeit mit Niklaus Wirth, dem Entwickler von Pascal. C++ wurde 1983 von Bjarne Stroustrup bei AT Bell Laboratories als eine Erweiterung von C entwickelt. Java, das nach dem Vorbild von C++ gestaltet wurde, wurde ursprünglich 1991 als eine Sprache für eingebettete Anwendungen entwickelt, wie z. B. in Set-top Boxen und anderen verbraucherorientierten Geräten. 1994 übertrug Sun Corp. Java in das World Wide Web (WWW). Das Schlüsselkonzept von Java und C++ ist die Klasse, die ein benutzerdefinierter Typ ist. Klassen ermöglichen objektorientierte Programmiermerkmale. C++-Module sind mit C-Modulen kompatibel und können frei verknüpft werden, so dass bestehende C- Bibliotheken mit C++-Programmen verwendet werden können. Die am weitesten verbreiteten objektbasierten und objektorientierten Programmiersprachen sind auf Simula zurückzuführen, das in den 60er Jahren von O.-J. Dahl, B. Myhrhaug und K. Nygard von Norwegen entwickelt wurde. Für weitere Informationen zum Thema OOP sei auf Object Oriented Design with Applications von Grady Booch, The Benjamin/Cummings Publishing Co., Inc., Redwood City, Calif. (1991) verwiesen.
Scripting ist ein Verfahren, ein Computer-"Programm" zu schreiben, das einfach ist und wirklich keine Programmierkenntnisse erfordert. Ein Script ist ein Programmtyp, der aus einer Gruppe von Instruktionen für ein Anwendungs- oder Dienstprogramm besteht. Ein Script besteht normalerweise aus Instruktionen, die unter Verwendung der Regeln und Syntax der Anwendung in Kombination mit einfachen Steuerstrukturen wie Schleifen und Wenn/dann-Ausdrücken ausgedrückt werden. Eine Scripting-Sprache ist eine Programmiersprache im Scripting-Stil, die in Java oder Nicht- Java ausgeführt ist. Scripting-Sprachen wie Netscape Rhino (JavaScript), VBScript, Perl, Tcl, Python, NetRexx und Rexx werden im Allgemeinen verwendet, um die Funktion einer Anwendung zu erweitern oder eine Gruppe von Anwendungskomponenten zusammenzuschreiben, um eine Anwendung zu bilden. Schnelle Entwicklung ist ein Grund, eine Scripting- Sprache zu verwenden.
Die Java-Plattform hat gegenwärtig keine klar definierte Scripting-Architektur, die Java-Anwendungen gestattet, Scripting einfach und einheitlich einzubeziehen. Die Verwendung von Scripting wird noch wichtiger werden, da Scripting schnell der nächste Software-Entwicklungsschritt wird. Eine Standard-Scripting-Architektur bietet viele Vorteile. Erstens gestatten das Einführen und Ermöglichen einer Scripting-Architektur statt eines speziellen Ansatzes zur Script-Integration Anwendungen, schnell und einfach viele Scripting-Sprachen zu unterstützen. Scriptermöglichende Produkte gestatten das Schreiben von Erweiterungen durch ein breiteres Publikum einschließlich Nichtprogrammierern. Zweitens ermöglicht eine einzige Scripting-Architektur für die Plattform Entwicklern von Scripting-Sprachen, sich einmal über die Architektur zu einigen und sie universell für alle Anwendungen bereitzustellen. Schließlich können gemeinsame Dienstleistungen, wie z. B. Fehlersuchdienste, entwickelt werden, die alle Scripting-Sprachen unterstützen.
Zusammenfassung der Erfindung
Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Verfahren und System zum Einbeziehen von Scripting in Java- Anwendungen und Applets bereitzustellen.
Es ist noch eine andere Aufgabe der vorliegenden Erfindung, ein Verfahren und System bereitzustellen, die das Modifizieren oder Erweitern der Funktionalität einer Anwendung gestatten.
Das Bean Scripting Framework (BSF) ist eine Architektur zum Einbeziehen von Scripting in Java-Anwendungen und Applets. Das BSF liefert eine Gruppe von Schnittstellen, die Entwickler ihren Anwendungen sprachunabhängiges Scripting hinzufügen lassen. Die Erfindung bezieht Scripting in Java-Anwendungen durch Verwenden von zwei Hauptkomponenten, dem BSF-Manager und Scripting-Engines, ein.
Der BSF-Manager lässt Endbenutzer Scripts in den Scripting- Sprachen schreiben, die ihnen am besten gefallen, ohne die Anwendung mit sprachspezifischem Wissen zu belasten. Der BSF- Manager unterstützt beide Richtungen des Scripting. Das heißt, wenn die Java-Seite verantwortlich ist und nach Wunsch Scripts ausführt und bewertet, sowie in Fällen, bei denen das Script Java-Beans ausführt und steuert.
Eine Scripting-Engine ist eine Scripting-Sprache, die in das BSF aufgenommen wurde. Die Scripting-Engines behandeln deshalb alle sprachabhängigen Angelegenheiten. Eine Scripting-Engine muss für jede Scripting-Sprache geschrieben werden, die der BSF-Manager unterstützt, obwohl sie für den Scripting-Host alle gleich aussehen. So können Scripting-Engines für JavaScript, NetRexx, Jacl, JPython, VBScript, JScript, LotusXSL, LotusScript und andere Sprachen geliefert werden.
Das BSF arbeitet mit allen Java-Objekten und nicht nur einer echten Bean. Scriptermöglichende Java-Anwendungen ermöglichen das Anpassen und Verwalten dieser Anwendungen weitergehend als vorher möglich. Das heißt, sobald zur Zeit eine Java-Anwendung erstellt und an einen Endbenutzer oder ein ISV geliefert wurde, können sie die Funktionalität der Anwendung nicht einfach modifizieren oder ergänzen. Einige Anwendungen gestatten dies durch genaue Erweiterungs- Anwendungsprogrammierschnittstellen (Application Proramming Interfaces, APIs) die ISVs verwenden können. Jedoch müssen ISVs in diesem Fall auch Java benutzen, um die Anwendungen anzupassen. Falls die Anwendung BSF verwendet, kann sie die geeignete Funktionalität zur Erweiterbarkeit über BSF darstellen. ISVs und andere können dann die Anwendung unter Verwendung irgendeiner BSF-unterstützten Scripting-Sprache konfigurieren und modifizieren. Mit diesem Ansatz gibt es zwei bedeutende Vorteile. Erstens kann die Anpassung der Anwendung mit der Kundensprache nach Wahl erfolgen (vorausgesetzt, sie wird durch BSF unterstützt). Zweitens braucht die Anwendung keine zusätzliche Arbeit zum Unterstützen aller BSF- aktivierter Sprachen aufzuwenden. Das heißt, die Anwendung wird von allen BSF-Sprachen ohne irgendeine Anwendungsbelastung scriptfähig.
Kurze Beschreibung der Zeichnungen
Die obengenannten und anderen Merkmale, Aspekte und Vorteile werden besser aus der folgenden ausführlichen Beschreibung einer bevorzugten Ausführungsform der Erfindung mit Bezug auf die Zeichnungen verstanden, in denen:
Fig. 1 ein Blockdiagramm ist, das die wesentlichen Komponenten der bevorzugten Ausführungsform der vorliegenden Erfindung darstellt, wenn die Scripting-Engine in Java ausgeführt ist;
Fig. 2 ein Blockdiagramm ist, das die Interaktion zwischen der Ausführung der BSF-Engine-Schnittstelle und einer Scripting-Engine darstellt, wenn die Scripting-Sprache nicht in Java ausgeführt ist;
Fig. 3 ein logisches Flussdiagramm ist, das den Prozess des Einbeziehens einer neuen Scripting-Sprache in BSF darstellt;
Fig. 4 ein logisches Flussdiagramm ist, das den Prozess darstellt, wie Anwendungskomponenten für Scripting durch BSF- unterstützte Sprachen verfügbar gemacht werden;
Fig. 5 ein logisches Flussdiagramm ist, das den Prozess des Ladens einer Scripting-Sprache in das BSF darstellt;
Fig. 6 ein logisches Flussdiagramm ist, das den Prozess des Ausführens von Scripts von einer Anwendung durch Laden spezieller Engines darstellt;
Fig. 7 ein logisches Flussdiagramm ist, das den Prozess des Ausführens von Scripts von einer Anwendung über den BSF- Manager darstellt;
Fig. 8 ein logisches Flussdiagramm ist, das den Prozess der Interaktion mit Java von Scripts für javabasierte Scripting- Engines darstellt; und
Fig. 9 ein logisches Flussdiagramm ist, das den Prozess der Interaktion mit Java von Scripts für nichtjavabasierte Scripting-Engines darstellt.
Ausführliche Beschreibung einer bevorzugten Ausführungsform der Erfindung
Die ausführliche Beschreibung wird hinsichtlich einer Ausführung in der Programmiersprache Java gegeben. Jedoch kann die Erfindung auch unter Verwendung anderer geeigneter Programmiersprachen umgesetzt werden.
Fig. 1 ist ein Blockdiagramm, das die Hauptkomponenten der bevorzugten Ausführungsform der vorliegenden Erfindung darstellt, wenn die Scripting-Engine in Java ausgeführt ist. Wie in Fig. 1 gezeigt, finden sich alle Objekte der Anwendung innerhalb einer virtuellen Java-Maschine (Java Virtual Machine, JVM) 100 in diesem Fall. Wie für den Fachmann ersichtlich, ist eine JVM ein Java-Interpreter, der die Java- Zwischensprache (Bytecode) zeilenweise in Maschinensprache umwandelt und sie dann ausführt. Der BSF-Manager 102 ist ein Objekt, das Scripting-Dienste für die Anwendung 101 sowie Unterstützungsdienste für die Scripting-Engines 103 bereitstellt, die alle sprachabhängigen Angelegenheiten behandeln, um mit Anwendungsobjekten (107, 108, 109, 110, 111) und der Java-Laufzeitumgebung zu interagieren. Der BSF-Manager 102 hat ein Scripting-Engine-Register 105 der Scripting- Engines 103, welche die Anwendung 101 laden und mit denen sie interagieren kann. Zu Scripting-Engines 103 können zum Beispiel JavaScript, Perl und andere gehören. Der BSF-Manager 102 hat auch ein Objektregister von Anwendungsobjekten (107, 108, 110, 111), welche die Anwendung 101 ausgewählt hat, um sie für Scripting zur Verfügung zu stellen.
Scripting-Engines 103 müssen die BSF-Engine-Schnittstelle 104 implementieren, um Teil der BSF-Architektur zu werden. Die BSF-Engine-Schnittstelle 104 ist die Abstraktion, welche die BSF-Architektur verwendet, um mit den Scripting-Engines 103, 200 zu interagieren. Die Interaktion zwischen der Scripting- Engine und dem BSF-Manager 102 besteht aus Aufrufen vom BSF- Manager 102 zur BSF-Engine-Schnittstelle 104 zum Bewerten und Ausführen von Scripts und Aufrufen von der BSF-Engine- Schnittstelle 104 zum BSF-Manager 102 zum Überwachen, Registrieren und Zurücknehmen der Registrierung von Anwendungsobjekten. Falls die Scripting-Engine 200 selbst nicht in Java ausgeführt ist, interagiert die Ausführung der BSF-Engine-Schnittstelle 104 mit den Scripting-Engines 200 unter Verwendung der Java-Basisschnittstelle (Java Native Interface, JNI). Dieser Fall wird in Fig. 2 gezeigt.
Die Anwendung 101, die aus der Sammlung von Objekten (107, 108, 109, 110, 111) besteht, interagiert mit dem BSF-Manager 102 oder direkt mit den BSF-Engine-Objekten.
Fig. 2 ist ein Blockdiagramm, das die Hauptkomponenten der bevorzugten Ausführungsform der vorliegenden Erfindung zeigt, wenn die Scripting-Engine nicht in Java ausgeführt ist. Fig. 2 ist fast dieselbe wie Fig. 1, außer dass die Scripting- Engines 200 außerhalb der JVM 100 laufen.
Fig. 3 ist ein Blockdiagramm, das den Prozess des Einbeziehens einer neuen Scripting-Sprache in das BSF darstellt. Der erste Schritt ist, die BSF-Engine-Schnittstelle 104, wie in Block 301 gezeigt, auszuführen. Insbesondere ermöglicht die BSF-Engine-Schnittstelle 104 jeder Scripting- Engine 103, 200 mit dem BSF-Manager 102 und der Anwendung 101 zu interagieren. In Schritt 302 muss die BSF-Engine- Schnittstelle 104 in die Sprache Funktionalität einbinden, um mit Java interagieren zu können, hauptsächlich, um dem Script- Autor zu gestatten, auf das Objektregister 106 zuzugreifen und dann Operationen an Objekten (107, 108, 109, 110, 111) auszuführen, auf die über das Objektregister 106 zugegriffen wird. In Schritt 303 muss die Ausführung der BSF-Engine 104 im Scripting-Engine-Register 105 des BSF-Managers 102 registriert werden, wodurch der Prozess des Integrierens einer neuen Engine ins BSF abgeschlossen wird.
Fig. 4 ist ein Blockdiagramm, das den Prozess zeigt, Anwendungsobjekte (oder Komponenten) 107, 108, 109, 110, 111 für Scripting bereitzustellen. Wie in Block 401 gezeigt, ist der erste Schritt das Kennzeichnen von Anwendungskomponenten (Beans), die für Scripting bereitgestellt werden sollen. Die Komponenten werden typischerweise manuell gekennzeichnet, indem entschieden wird, welche Funktionalität der Anwendung für Scripting bereitgestellt werden soll. Dieser Prozess ist ähnlich dem Entwerfen der externen Anwendungsprogrammier­ schnittstellen (application programming interfaces, APIs) einer Anwendung. In Entscheidungsblock 402 erfolgt ein Test, um zu entscheiden, ob diese Bean in Scripting-Sprachen als eine vorausgeladene Bean zur Verfügung gestellt werden soll (d. h. eine, die der Benutzer nicht explizit laden muss) oder einfach als eine registrierte Bean. Falls die Bean noch nicht registriert ist, wird die Bean in Objektregister 106 registriert, wie in Block 403 gezeigt. Falls die Bean schon registriert ist, wird die Bean in den Vektor deklarierter Beans des BSF-Managers eingefügt, um an jede Scripting-Engine 103, 200 weitergeleitet zu werden, wenn sie geladen werden, wie in Block 404 gezeigt. In Schritt 405 endet der Prozess.
Fig. 5 ist ein Blockdiagramm, das den Prozess des Ladens einer Scripting-Sprache ins BSF darstellt. In Entscheidungsblock 501 erfolgt ein Test, um festzustellen, ob die Sprache schon in den Anforderer geladen wurde. Falls ja, wird diese Engine in Block 502 an den Anforderer zurückgegeben. Falls nicht, erfolgt in Entscheidungsblock 503 ein weiterer Test, um festzustellen, ob die Sprache im Scripting-Engine-Register 105 des BSF-Managers 102 registriert wurde. Falls nicht, wird in Block 508 ein Fehler zurückgegeben. Falls ja, wird in Schritt 504 die Scripting- Engine für diese Sprache geladen und nachfolgend in Block 505 initialisiert. Das Initialisieren einer Scripting-Engine besteht aus dem Informieren der Engine über alle deklarierten Anwendungsobjekte von Vektor 112. In Entscheidungsblock 506 erfolgt ein Test, um festzustellen, ob die Initialisierung erfolgreich war. Falls die Initialisierung nicht erfolgreich war, wird in 508 ein Fehler zurückgegeben. Falls ja, wird die Tatsache, dass die Engine geladen wurde, in das Scripting- Engine-Register 105 des BSF-Managers 102 in Block 507 aufgenommen. Dann wird in Block 502 diese Engine an das Anwendungsprogramm zurückgegeben.
Fig. 6 ist ein Blockdiagramm, das den Prozess des Ladens einer Scripting-Engine und des Ausführens eines Scripts von einer Anwendung darstellt. Zuerst wird in Block 601 eine Instanz eines BSF-Managers 102 erzeugt. In Block 602 werden alle Anwendungskomponenten (107, 108, 109, 110 und 111), die für Scripting bereitgestellt werden sollen, unter Verwendung des in Fig. 4 dargestellten Prozesses bereitgestellt. In Block 603 wird die gewünschte Scripting-Sprache unter Verwendung des in Fig. 5 gezeigten Prozesses in den BSF- Manager 120 geladen. In Block 604 werden die gewünschten Scripts unter Verwendung des passenden Verfahrens der BSF- Engine 104 ausgeführt. Schließlich wird in Block 605 das Ergebnis des Ausführens des Scripts, wenn vorhanden, an den Anforderer zurückgegeben.
Fig. 7 ist ein Blockdiagramm, das den Prozess des Ausführens von Scripts von einer Anwendung unter direkter Verwendung des BSF-Managers darstellt. Zuerst wird in Block 701 durch das Anwendungsprogramm eine Instanz eines BSF-Managers 102 erzeugt. In Block 702 werden alle Anwendungskomponenten (107, 108, 109, 110 und 111), die für Scripting bereitgestellt werden sollen, unter Verwendung des in Fig. 4 gezeigten Prozesses bereitgestellt. In Block 703 werden die gewünschten Scripts unter Verwendung des passenden Verfahrens des BSF- Managers 102 ausgeführt. In Entscheidungsblock 704 erfolgt ein Test, um festzustellen, ob die Scripting-Sprache angegeben wurde. Falls nicht, wird in 705 die Sprache festgestellt. Falls ja, bzw. nach Block 705, wird die Scripting-Engine 103, 200 in den BSF-Manager 102 geladen, wie in Block 706 gezeigt.
In Block 707 werden die gewünschten Scripts unter Verwendung des passenden Verfahrens der BSF-Engine-Schnittstelle 104 ausgeführt. Schließlich wird in Block 708, wenn vorhanden, das Ergebnis des Ausführens des Scripts zurückgegeben.
Fig. 8 ist ein Blockdiagramm, das den Prozess der Interaktion von Scripts für javabasierte Scripting-Engines mit Java darstellt. In Entscheidungsblock 801 erfolgt ein Test, um festzustellen, ob die Interaktion mit einem bestehenden Objekt (107, 108, 109, 110, 111) erfolgt. Falls ja, wird das Objekt im Objektregister 106 des BSF-Managers 102 nachgeschlagen, wie in Block 802 gezeigt. Falls nicht, wird in Block 803 ein neues Objekt erzeugt. Die geeignete Bean-Operation wird durch das Anwendungsprogramm in Block 804 ausgeführt, wobei die gültigen Operationen das Festlegen und Abrufen von Eigenschaften, Aufruf-Verfahren und Bindungsereignisse für Scripts sind. Das Ergebnis der Operation wird, falls vorhanden, in 805 zurückgegeben.
Fig. 9 ist ein Blockdiagramm, das den Prozess der Interaktion mit Java von Scripts für nichtjavabasierte Scripting-Engines darstellt. In Entscheidungsblock 901 erfolgt ein Test, um festzustellen, ob die Interaktion mit einem bestehenden Objekt (107, 108, 109, 110, 111) erfolgt. Falls ja, wird das Objekt im Objektregister 106 des BSF-Managers 102 nachgeschlagen, wie in Block 902 gezeigt, und an die Scripting-Engine 200 wird ein Verweis auf das Objekt zurückgegeben. Falls nicht, wird in Block 903 ein neues Objekt erzeugt und ein Verweis auf das neue Objekt an die Scripting-Engine 200 zurückgegeben. In einer bevorzugten Ausführungsform sind die Objekt-Verweise, die an Nicht-Java-Scripting-Engines 200 zurückgegeben werden, nichttransparente Kennzeichen, die einen gültigen Typ und Wert für die Scripting-Sprache haben und welche die Bean- Operationsfunktionen als Verweis auf tatsächliche Java-Objekte kennzeichnen können. Die geeignete Bean-Operation wird in Block 904 unter Verwendung des JNI ausgeführt, wobei die gültigen Operationen das Festlegen und Abrufen von Merkmalen, Aufruf-Verfahren und Bindungsereignisse für Scripts sind. Das Ergebnis der Operation wird, falls vorhanden, in einen Typ eingebettet, der für die Scripting-Engine 200 akzeptabel ist, wie in Block 905 gezeigt, und in Block 906 zurückgegeben.
Die folgenden Codebeispiele zeigen die Schritte, die beim Einbeziehen des BSF in eine Anwendung beteiligt sind:
  • 1. import com.ibm.bsf.*;
  • 2. class YourClass {
  • 3. BSFManager mgr = new BSFManager();
  • 4. . . .
  • 5. }
Die Zeilen 1-5 oben deklarieren und erzeugen einen BSF- Manager.
  • 1. Stringextensions-{"pos"}
  • 2. mgr.registerScriptingEngine ("potatoscript",
  • 3. edu.purdue.cs.bsf.Engines.potatoscript.
  • 4. extensions);
Die Zeilen 6-9 oben registrieren irgendeine neue Scripting- Sprache.
  • 1. mgr.registerBean("myFrame", myFrame);
  • 2. mgr.registerBean("myOtherBean", myOtherBean);
  • 3. mgr.declareBean("response",response,response.getCtass());
Die Zeilen 10-12 oben registrieren oder deklarieren alle Beans, die für Scripting-Engines mit geeigneten Namen zur Verfügung gestellt werden sollen. Zu beachten ist, dass jedes Java-Objekt (d. h. jede Bean) für Scripting zur Verfügung gestellt werden kann. Das Objekt muss nicht notwendigerweise irgendeine spezielle Schnittstelle implementieren.
  • 1. BSFEngine rhinoEngine = mgr.loadScriptingEngine("javascript");
Zeile 13 kann zum Laden irgendeiner gewünschten Scripting- Engine verwendet werden.
  • 1. object result = rhinoEngine.eval ("testString", 0, 0, "2 + 32");
  • 2. result = rhinoEngine.call (null,"hello",null);
  • 3. rhinoEngine.exec ("testString2", 0, 0, "hello()");
Die Zeilen 14-16 rufen Funktionen in dem Script auf oder bewerten beliebige Scripts bzw. führen sie aus.
  • 1. object result - mgr.eval("javascript", "testString", 0, 0, "2 + 32");
  • 2. mgr.exec("javascript", "testString", 0, 0, "hello()");
Die Zeilen 17-18 zeigen ein Beispiel, in dem der BSF-Manager irgendein Script direkt ausführen kann.
Obwohl die Erfindung in Hinsicht auf eine einzige bevorzugte Ausführungsform beschrieben wurde, wird der Fachmann erkennen, dass die Erfindung mit Modifikation innerhalb des Umfangs und Bereichs der anhängigen Ansprüche ausgeführt werden kann.

Claims (18)

1. System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets, das Folgendes umfasst:
mindestens ein Anwendungsobjekt, das einem Anwendungsprogramm zugeordnet ist;
mindestens eine Scripting-Engine, wobei jede Scripting- Engine eine Scripting-Sprache in das System integriert;
Scripting-Engine-Verwaltungsmittel zum Registrieren des mindestens einen Anwendungsobjekts und zum Registrieren der mindestens einen Scripting-Engine; und
Schnittstellenmittel, das jeder der mindestens einen Scripting-Engine zum Implementieren einer Funktionalität in jeder der mindestens einen Scripting-Engine zugeordnet ist, welche die Interaktion jeder der Scripting-Engines mit der objektorientierten Programmiersprache ermöglicht.
2. System nach Anspruch 1, wobei das Schnittstellenmittel weiterhin einem Script gestattet, auf die registrierten Anwendungsobjekte zuzugreifen und dann Operationen an den Objekten auszuführen.
3. System nach Anspruch 1, wobei die Scripting-Engine in einer virtuellen Java-Maschine (Java Virtual Machine, JVM) implementiert ist.
4. System nach Anspruch 1, wobei die objektorientierte Programmiersprache Java ist.
5. System nach Anspruch 1, wobei die Scripting-Engine außerhalb einer JVM implementiert ist.
6. System nach Anspruch 5, wobei das Scripting-Engine-Mittel in einer Nicht-Java-Sprache implementiert ist und wobei das Mittel zum Verbinden mit dem Scripting-Engine-Mittel unter Verwendung einer Java-Basis-Schnittstelle (Java Native Interface, JNI) interagiert.
7. Verfahren zum Einbeziehen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets, das die folgenden Schritte umfasst:
ein oder mehrere Anwendungsobjekte für Scripting zur Verfügung stellen;
eine oder mehrere Scripting-Sprachen in ein Scripting- Sprachen-Register laden; und
ein Script unter Verwendung einer im Scripting-Sprachen- Register registrierten Scripting-Sprache ausführen.
8. Verfahren nach Anspruch 7, wobei die Anwendungskomponenten für Scripting folgendermaßen zur Verfügung gestellt werden:
Kennzeichnen der Anwendungskomponenten, die für Scripting zur Verfügung gestellt werden sollen;
Registrieren der Anwendungskomponente, wenn sie nicht bereits registriert ist;
Weiterleiten der Anwendungskomponente an eine Scripting- Engine; und
Laden der Anwendungskomponente in die Scripting-Engine.
9. Verfahren nach Anspruch 7, wobei der Schritt des Ladens einer Scripting-Sprache in ein Scripting-Sprachen- Register die folgenden Schritte umfasst:
Feststellen, ob die Scripting-Sprache schon geladen ist, und Laden der Scripting-Sprache, wenn sie nicht geladen wurde, oder Zurücksenden der Scripting-Engine, wenn sie bereits geladen wurde;
Initialisieren der Scripting-Engine; und
Zurücksenden der Scripting-Engine.
10. Verfahren nach Anspruch 7, das weiterhin den Schritt des Feststellens umfasst, ob die Scripting-Sprache in einem Scripting-Engine-Register registriert wurde, und Laden der Scripting-Engine, falls sie registriert ist, und Zurücksenden eines Fehlers, wenn die Scripting-Engine nicht registriert ist.
11. Verfahren nach Anspruch 7, wobei das Script direkt von der Scripting-Engine ausgeführt wird.
12. Verfahren nach Anspruch 7, wobei das Script gemäß folgender Schritte ausgeführt wird:
Laden einer gewünschten Scriptsprache in eine Bean- Script-Framework-Engine (BSF-Engine), die ein Script- Register und ein Register von Anwendungsobjekten umfasst;
Ausführen eines gewünschten Scripts durch Nutzen eines passenden Verfahrens der BSF-Engine; und
Zurückgeben des Ergebnisses des ausgeführten Scripts.
13. Verfahren nach Anspruch 7, das weiterhin die folgenden Schritte umfasst:
Feststellen, ob ein Anwendungsobjekt schon vorhanden ist und falls ja, Nachschlagen des bestehenden Objekts in einem Objektregister oder anderenfalls Erzeugen eines neuen Objekts;
Ausführen einer Bean-Operation an dem Objekt; und
Zurücksenden eines Ergebnisses der Operation.
14. Verfahren nach Anspruch 13, wobei die Operationen mindestens eine der folgenden Operationen umfassen:
Festlegen und Abrufen von Eigenschaften, Aufrufen von Methoden und Zuordnen von Ereignissen zu Scripts.
15. Verfahren nach Anspruch 7, das weiterhin die folgenden Schritte umfasst:
Feststellen, ob ein Anwendungsobjekt bereits vorhanden ist und falls ja, Nachschlagen des bestehenden Objekts in einem Objektregister und Zurückgeben eines Objekts an die Scripting-Engine oder anderenfalls Erzeugen eines neuen Objekts und Zurückgeben eines Objekts an die Scripting- Engine;
Ausführen einer Bean-Operation an dem Objekt unter Verwendung der Java-Basisschnittstelle oder eines Äquivalents; und
Zurücksenden eines Ergebnisses der Operation.
16. Verfahren nach Anspruch 15, wobei die Objekt-Verweise nichttransparente Kennzeichen zurücksandten, die einen für die Scripting-Sprache gültigen Typ und Wert haben, und deren Bean-Operationsfunktionen als Verweise zu tatsächlichen Java-Objekten gekennzeichnet werden können.
17. Verfahren nach Anspruch 15, wobei die Operationen Festlegen und Abrufen von Eigenschaften, Aufrufen von Methoden und Zuordnen von Ereignissen zu Scripts umfassen.
18. Verfahren nach Anspruch 15, wobei das zurückgesendete Ergebnis in einen Typ eingebettet ist, der für die Scripting-Engine akzeptabel ist.
DE10050401A 1999-10-22 2000-10-12 System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets (Bean Scripting Framework) Ceased DE10050401A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/425,726 US6779172B1 (en) 1999-10-22 1999-10-22 Bean scripting framework

Publications (1)

Publication Number Publication Date
DE10050401A1 true DE10050401A1 (de) 2001-05-10

Family

ID=23687776

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10050401A Ceased DE10050401A1 (de) 1999-10-22 2000-10-12 System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets (Bean Scripting Framework)

Country Status (2)

Country Link
US (1) US6779172B1 (de)
DE (1) DE10050401A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6791581B2 (en) * 2001-01-31 2004-09-14 Microsoft Corporation Methods and systems for synchronizing skin properties
US7152222B2 (en) * 2002-01-08 2006-12-19 International Business Machines Corporation Method and system for localizing Java™ JAR files
US7000221B2 (en) * 2002-07-31 2006-02-14 International Business Machines Corporation Script evaluator
US20050138643A1 (en) * 2003-12-18 2005-06-23 Denny Jaeger System and method for controlling a computer operating environment using a scripting language-based computer program
US20050235258A1 (en) * 2004-04-20 2005-10-20 International Business Machines Corporation Method, plug-in and program product for customizing java bean properties
US7971194B1 (en) * 2005-06-16 2011-06-28 Sap Portals Israel Ltd. Programming language techniques for client-side development and execution
US8010701B2 (en) 2005-12-19 2011-08-30 Vmware, Inc. Method and system for providing virtualized application workspaces
US20070174823A1 (en) * 2006-01-25 2007-07-26 Microsoft Corporation Compile-time interpretable code error detection
US8490117B1 (en) 2006-10-23 2013-07-16 Adobe Systems Incorporated Bridging script engines
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US8762976B2 (en) * 2007-03-09 2014-06-24 Microsoft Corporation Static extensibility models with dynamic languages and scripts
US7945849B2 (en) * 2007-03-20 2011-05-17 Microsoft Corporation Identifying appropriate client-side script references
US7992130B2 (en) * 2007-05-07 2011-08-02 Microsoft Corporation Class-based object-oriented features in class-less script language
US20080295070A1 (en) * 2007-05-23 2008-11-27 Microsoft Corporation Native access to foreign code environment
US7672938B2 (en) * 2007-10-05 2010-03-02 Microsoft Corporation Creating search enabled web pages
US8316347B2 (en) * 2008-12-05 2012-11-20 International Business Machines Corporation Architecture view generation method and system
US8332813B2 (en) * 2008-12-11 2012-12-11 International Business Machines Corporation Service re-factoring method and system
US8224869B2 (en) 2008-12-16 2012-07-17 International Business Machines Corporation Re-establishing traceability method and system
KR101359867B1 (ko) * 2012-02-29 2014-02-07 주식회사 팬택 어플리케이션의 일부 기능들로 구성된 사용자 어플리케이션 형성 시스템 및 방법
US11487643B1 (en) * 2018-11-12 2022-11-01 Xilinx, Inc. Debugging for integrated scripting applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256772B1 (en) 1997-11-24 2001-07-03 International Business Machines Corporation Multilingual hierarchial scripting environment
US6078743A (en) * 1997-11-24 2000-06-20 International Business Machines Corporation Generic IDE interface support for scripting
US6289395B1 (en) * 1997-11-24 2001-09-11 International Business Machines Corporation Generic Java-based event processor for scripting Java beans
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6662236B1 (en) * 1998-06-29 2003-12-09 International Business Machines Corporation Runtime object binding in scripting
US6292936B1 (en) * 1998-11-12 2001-09-18 International Business Machines Corporation Enabling multiple runtime processors in an interpreter-based embedded scripting system

Also Published As

Publication number Publication date
US6779172B1 (en) 2004-08-17

Similar Documents

Publication Publication Date Title
DE10050401A1 (de) System zum Aufnehmen von sprachunabhängigem Scripting in Anwendungen objektorientierter Programmiersprachen und Applets (Bean Scripting Framework)
DE69735343T2 (de) System, Verfahren und Vorrichtung zum direkten Ausführen eines architekturunabhängigen binären Programms
DE69428848T2 (de) Mehrsprachige Standardressourcen
DE69404439T2 (de) Programmodellierungssystem.
DE69503065T2 (de) Objektorientierte vorrichtung für konfigurationsverlaufsverwaltung
DE69617509T2 (de) Vorrichtung und Verfahren zur Feststellung von Objekttypen in einem verteilten Objektsystem
DE69900810T2 (de) Verfahren und Vorrichtung zum Testen von ereignisgesteuerten Programmen
DE69231431T2 (de) Globale Benutzerschnittstelle
DE69516891T2 (de) Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere
DE60006410T2 (de) Verfahren und system zum verteilen von objektorientierten rechnerprogrammen
DE69518123T2 (de) Visualisierung von objektorientierter Software
DE69716206T2 (de) Objektorientiertes System, Verfahren und Computerprogramm für einen Klient-Server-Prozess zur Fehlerprotokollierung
DE69400204T2 (de) Ladesystem
DE69936844T2 (de) Implementierung einer benutzerschnittstelle in einem fernsehbasierten hyperlinknavigationssystem
DE69430421T2 (de) Verfahren und Gerät zur Automatisierung der Umgebungsanpassung von Rechnerprogrammen
DE69230578T2 (de) Sprachenneutrale Objekte
DE69533530T2 (de) Verfahren und System zur dynamischen Aggregation von Objekten
DE69129328T2 (de) Ikonobjektschnittstellesystem und -verfahren
DE69303289T2 (de) Steuersystem für anzeigemenüzustand
DE69803199T2 (de) Erkennung und entfernung von makroviren
DE69232761T2 (de) Verfahren und vorrichtung zur aenderung von dynamische zuweisbaren objektcodedateien
DE69310934T2 (de) Ballonhilfssystem.
DE10121790B4 (de) Softwarekonfigurationsverfahren zur Verwendung in einem Computersystem
US6633888B1 (en) Method and apparatus for visually creating and testing object oriented components
DE69310187T2 (de) Objektorientiertes fachwerksystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection