DE10104043A1 - Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern - Google Patents

Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern

Info

Publication number
DE10104043A1
DE10104043A1 DE10104043A DE10104043A DE10104043A1 DE 10104043 A1 DE10104043 A1 DE 10104043A1 DE 10104043 A DE10104043 A DE 10104043A DE 10104043 A DE10104043 A DE 10104043A DE 10104043 A1 DE10104043 A1 DE 10104043A1
Authority
DE
Germany
Prior art keywords
language
application program
user
java
macro
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
DE10104043A
Other languages
English (en)
Inventor
Alexander Gebhart
Juergen Jung
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 DE10104043A1 publication Critical patent/DE10104043A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • 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
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

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

Abstract

Die vorliegende Erfindung bezieht sich auf ein Verfahren und ein System zur Verbesserung der Verwwendung von eingebauten Makrosprachen von Anwendungen, die von Endnutzern zur Programmierung verwendet werden, und ermöglicht dem Nutzer, die Programmiersprache seiner Wahl zu benutzen. Dies geschieht im Wesentlichen durch Speichern des Quellcodes der vom Nutzer ausgewählten Sprache in Objekten der vorhandenen Anwendung und, falls es eine Compilerspracche ist, durch Speicherung des übersetzten Codes und des Compilers selbst. DOLLAR A Weiterhin wird das Konzept eines Bytecode verarbeitenden Servers (BPS) erläutert, der selbst in einem Objekt der vorhandenen Anwendung gespeichert wird, was die Verwendung der neuen Makrosprache an beliebiger Stelle ohne zusätzlichen Installationsaufwand erlaubt. DOLLAR A Und es wird die Kommunikation zwischen dem BPS und der existierenden Anwendung über ein Stubmittel erläutert, das in der eingebauten Makrosprache geschrieben ist. Dies umfasst die Parameterübergabe und die Datenübertragung.

Description

1. HINTERGRUND DER ERFINDUNG 1.1. BEREICH DER ERFINDUNG
Die vorliegende Erfindung bezieht sich auf den Bereich der Erleichterung der Arbeit der Kundenanpassung von Anwendungsprogrammen. Insbesondere bezieht sie sich auf ein Verfahren und ein System zur Verbesserung der Verwendung von eingebauten Makrosprachen von Anwendungen, die von Endnutzern für die Programmierung verwendet werden.
1.2. BESCHREIBUNG UND NACHTEILE DES STANDES DER TECHNIK
Standardisierte Anwendungsprogramme werden in modernen Geschäftsumgebungen allgemein verwendet. Beispiele sind Bürolösungen, die die Basissoftwarewerkzeuge enthalten, die für die Durchführung der täglichen Arbeit erforderlich sind, darunter Textverarbeitung, Arbeitsblatt-Analyse, die Verwendung relationaler Datenbanken, Präsentationsprogramme usw. Leute, die diese Anwendungsprogramme benutzen, werden hier im weiteren als Endnutzer eines solchen Programms bezeichnet.
Weiterhin sind viele Anwendungsprogramme, die jeweils einen besonderen Aspekt des Arbeitsablaufes eines Unternehmens überdecken, wie zum Beispiel die Implementation der Berechnung der nationalen Steuern, die Verwaltung der Gehaltszahlung, die Personalverwaltung oder die Verwaltung von Materialien, ein Teil der Anwendungsprogramme.
Da es sich um standardisierte Programme handelt, die für die öffentliche Verwendung bestimmt sind, sind sie nicht auf Kunden zugeschnitten, d. h. an die Bedürfnisse eines speziellen Unternehmens, einer Firma oder einer Privatperson angepasst.
Somit ist es für Endnutzer oft notwendig, eine vorhandene Anwendung anzupassen, um ihre speziellen Bedürfnisse zu befriedigen. In diesem Zusammenhang ist der "Endnutzer" normalerweise ein Entwickler. Deshalb werden "Endnutzer" und "Entwickler" im gesamten Dokument äquivalent verwendet.
Um diese Anpassungsarbeit durchzuführen, ist der Endnutzer normalerweise auf die eingebauten Makrosprachen der Anwendung angewiesen. Andere Sprachen als die eingebauten Makrosprachen können nicht benutzt werden. Dies ist jedoch ein beträchtlicher Nachteil, weil dann die Arbeit besondere Kenntnisse erfordert. Außerdem kann man bereits existierenden Code, der in einer anderen Programmiersprache programmiert wurde, für diesen Zweck nicht wiederverwenden und muss ihn umschreiben.
Die vorliegende Erfindung ist von sehr allgemeiner Art und kann immer dann angewendet werden, wenn eis Anwendungsprogramm zur Implementation von Änderungen nicht angefasst werden darf, was wiederum eine Neuübersetzung des Anwendungsprogramms selbst erfordern würde.
Spezielle und willkürlich ausgewählte Beispiele sind Anwendungen wie Lotus Notes oder Microsoft Word. Die eingebauten Makrosprachen sind Lotusscript bzw. WordBasic. Bei der Benutzung von Microsoft Word hat ein Endnutzer nicht die Möglichkeit, beispielsweise Java als Makrosprache zu benutzen. Das Gleiche gilt für alle Versionen von Notes 4.x.
Wenn in diesen Fällen ein Endnutzer die Sprache seiner Wahl benutzen möchte, wäre er darauf beschränkt, ein Programm zu schreiben, beispielsweise ein C-Programm, es zu übersetzen, es zu verbinden und dann das selbstgeschriebene Programm von einer Stelle innerhalb der vorhandenen Anwendung aufzurufen.
Der Hauptnachteil dieser dem Stand der Technik entsprechenden Vorgehensweise ist die Trennung zwischen dem selbstgeschriebenen Code und der vorhandenen Anwendung. Im günstigsten Fall ist es nur eine Unbequemlichkeit für den Endnutzer, Code und Anwendung an unterschiedlichen Orten zu haben, was die Wartung erschwert. Aber in der Mehrzahl der Fälle, in der eine Vielzahl von Nutzern eine Vielzahl von anzupassenden Programmen besitzt, ist diese Vorgehensweise überhaupt nicht praktikabel, da der selbstgeschriebene Code getrennt von der Anwendung gespeichert wird.
Ein Grund dafür liegt im praktischen Einsatz. Das selbstgeschriebene Programm muss überall installiert werden, wo die vorhandene Anwendung benutzt werden soll. Ein anderer Grund ist die Vervielfältigung (replication). Wenn eine vorhandene Anwendung die Vervielfältigung unterstützt, werden nur die Objekte vervielfältigt, die zu dieser Anwendung gehören, nicht aber getrennte zusätzliche Codestücke oder Programme. Weiterhin wird die Leistungsfähigkeit eines Netzwerk-Anwendungsservers durch diese zusätzliche(n) Aufgabe(n) belastet.
Bei den dem Stand der Technik entsprechenden Lotus Notes R5 kann Java als eingebaute Makrosprache benutzt werden.
Wenn jedoch das JAVA-Programm ausgeführt wird, dann ist Java darauf beschränkt, in speziellen Programmbereichen zu laufen, zum Beispiel den Notes Agents. Dies ist aber nicht vorteilhaft, insbesondere in Fällen, wenn das Anwendungsprogramm in einem Netzwerk installiert und von einer Vielzahl von Nutzern angewendet wird. Dann wird die Leistungsfähigkeit des Anwendungsservers beträchtlich verringert.
1.3. AUFGABEN DER ERFINDUNG
Es ist deshalb eine Aufgabe der vorliegenden Erfindung, die Flexibilität von Anwendungsprogrammen bezüglich der Makroprogrammierung zu verbessern, um dem Endnutzer die Möglichkeit einzuräumen, eine Sprache seiner Wahl zu verwenden. Es ist beabsichtigt, eine neue Möglichkeit anzubieten, andere Sprachen als die eingebauten Makrosprachen vorhandener Anwendungen zu benutzen, ohne die vorhandenen Anwendungen zu ändern und ohne die Notwendigkeit, spezielle zusätzliche Programme zu installieren, um den Code zu verarbeiten, der in einer vom Nutzer ausgewählten Sprache geschrieben wurde.
2. ZUSAMMENFASSUNG UND VORTEILE DER ERFINDUNG
Die Aufgabe der Erfindung wird durch die Eigenschaften erreicht, die in den beigefügten unabhängigen Ansprüchen formuliert sind, auf die jetzt Bezug genommen wird. Weitere vorteilhafte Anordnungen und Ausführungsformen der Erfindung werden in den jeweiligen Unteransprüchen erläutert.
Die grundlegende Voraussetzung, von der die vorliegende Erfindung ausgeht, besteht darin, dass eine vorhandene Anwendung eine eingebaute Makrosprache besitzt. Diese Makrosprache wird normalerweise an einer bestimmten Stelle gespeichert, wo die vorhandene Anwendung, beispielsweise ein WORD-Dokument in MICROSOFT WORD für WINDOWS, ein Formular von LOTUS NOTES, ein Arbeitsblatt von LOTUS 1-2-3 oder eine Datenbank von MICROSOFT ACCESS usw., auf sie zugreifen und sie verwenden kann.
Im Allgemeinen gibt es verschiedene Möglichkeiten, Daten innerhalb von Objekten einer vorhandenen Anwendung zu speichern, auf die durch die eingebaute Makrosprache oder durch den Endnutzer zugegriffen und von diesen bearbeitet werden können: verborgene Felder im RTF-Format (rich text field) in einem NOTES-Formular, ein verborgenes Kapitel in einem WORD-Dokument, ein Unterprogramm der Makrosprache oder ein Kommentar in einem Programm einer Makrosprache.
Um die vorliegende Einführung in die Konzepte der Erfindung einfach zu halten, wird vorausgesetzt, dass die selbst gewählte Sprache, die der Endnutzer anstelle der eingebauten Makrosprache benutzen möchte, eine Interpretersprache ist. Entsprechend einem Aspekt der vorliegenden Erfindung wird der Interpreter selbst in Form von Daten in einem Objekt der vorhandenen Anwendung gespeichert.
Um die Sprache seiner Wahl zu verwenden, muss der Endnutzer zuerst den Code in geeigneter Syntax schreiben und ihn dann an einer bestimmten Stelle speichern, d. h. in einem Objekt, wo mit der eingebauten Makrosprache auf ihn zugegriffen werden kann. Dann wird während der Laufzeit ein in der ursprünglichen eingebauten Makrosprache geschriebenes Codefragment aufgerufen. Dieser Code ist vergleichbar mit einem Stumpf (stub) und wird deshalb auch einfach so bezeichnet.
Zuerst muss dieser Stub prüfen, ob der Interpreter unter dem Betriebssystem verfügbar ist. Falls nicht, wird der Interpreter von seiner Position innerhalb der Anwendung geholt. Falls notwendig, gibt es verschiedene Möglichkeiten, das Betriebssystem festzustellen, beispielsweise durch Aufruf einer speziellen Funktion, die nur innerhalb eines bestimmten Betriebssystems verfügbar ist oder durch Aufruf einer Funktion, die das Betriebssystem direkt erkennt.
Als Nächstes wird der Code in der vom Nutzer gewählten Sprache freigegeben, d. h., der Code wird aus dem zugeordneten Objekt der vorliegenden Programmanwendung herausgelöst. Der Interpreter wird mit diesem Code zur Verarbeitung aufgerufen.
Schließlich gibt der Stub nach der Verarbeitung die Steuerung an die Anwendung zurück.
Im Wesentlichen kann diese grundlegende Vorgehensweise der Erfindung mit jeder beliebigen Interpretersprache und auch mit jeder beliebigen Compilersprache realisiert werden. Besondere Vorteile können durch Verwendung der JAVA-Sprache erreicht werden, weil der Endnutzer die Virtuelle Javamaschine (Virtual Java Machine) seiner Wahl benutzen und somit seinen Makro überall dort laufen lassen kann, wo es ihm vorteilhaft erscheint, d. h., wo er das; Ergebnis so schnell wie möglich erhält. Beispielsweise könnte er ihn auf einem Server in dem Netzwerk laufen lassen, der nicht mit dem Anwendungsserver selbst identisch ist. In vielen Fällen hilft das, die Antwortzeit zu reduzieren, insbesondere in Situationen, in denen viele Endnutzer in einem Netzwerk den gleichen Anwendungsserver gemeinsam benutzen. Darüber hinaus kann die JAVA-Programmiersprache in eine beliebige Laufzeitumgebung integriert werden, die von Haus aus JAVA als Endnutzer-Makrosprache nicht unterstützt.
Weiterhin gibt es, gleichgültig ob es sich um einen einzelnen Kunden oder um ein Unternehmen handelt, immer ein Bedürfnis danach, so wenig Programmiersprachen wie möglich zu haben, die an der Lösung eines speziellen Problems beteiligt sind. Die Hauptgründe dafür sind Wartungs- und Ausbildungskosten. Andere Gründe bestehen darin, dass möglicherweise ein gegebenes Problem nicht mit der eingebauten Makrosprache gelöst werden kann oder die Leistungsfähigkeit nicht ausreichend ist.
Somit besteht der wesentliche Vorteil der Erfindung darin, dass ein Endnutzer die Sprache seiner Wahl innerhalb einer vorhandenen Anwendung nutzen kann, was eine positive Auswirkung auf die Wartungs- und Ausbildungskosten hat, ohne die Nachteile der Trennung des selbstgeschriebenen Codes von der vorhandenen Anwendung.
3. KURZE BESCHREIBUNG DER ZEICHNUNGEN
Die vorliegende Erfindung wird mit Hilfe eines Beispiels veranschaulicht und ist durch die Form der Abbildungen der beigefügten Zeichnungen nicht beschränkt, wobei
Fig. 1 eine Bildschirm-Aufnahme (screen shot) ist, die schematisch die Speicherung des Quellcodes in der durch den Nutzer ausgewählten Sprache in einem Objekt der vorhandenen Anwendung darstellt, in diesem Fall eines LOTUS NOTES-Ereignisses,
Fig. 2 eine schematische Darstellung wichtiger Schritte ist, die auszuführen sind, wenn die selbst ausgewählte Programmiersprache zur Ausführung einen Compiler benötigt, und zeigt, wie die Übersetzung funktioniert,
Fig. 3 eine schematische Darstellung ist, die die wesentlichen Schritte der Verarbeitung des Codes der vom Nutzer ausgewählten Programmiersprache während der Laufzeit zeigt,
Fig. 4 eine Bildschirmaufnahme ist, die schematisch einen Stub zeigt, der in der eingebauten Makrosprache der vorhandenen Anwendung geschrieben ist, und
Fig. 5 eine Bildschirmaufnahme ist, die schematisch das Ergebnis des Beispiels darstellt, wobei die vom Nutzer gewählte Sprache verwendet wird.
4. BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM 4.1. EINLEITUNG
Die vorliegende Erfindung ist für eine beliebige vorhandene Anwendung anwendbar, die die Verwendung einer Makrosprache erlaubt, die in das Anwendungsprogramm 'eingebaut' ist. Der Terminus 'eingebaut' soll jede beliebige, dem Stand der Technik entsprechende Vorkehrung überdecken, die dem Nutzer des Programms eine Makrosprache zur Verfügung stellt, d. h. er enthält alle oben erwähnten Makrosprachen, die normalerweise in dem Anwendungsprogrammpaket oder einem zusätzlichen Erweiterungspaket enthalten sind, wenn es beim Lizenzgeber bestellt wird.
Die Benutzung dieser Makrosprache sollte einen Zugriff zu Objekten erlauben, die zu dieser Anwendung gehören. Der Terminus 'Objekt' sollte einen sehr weiten Bereich umfassen.
Er sollte explizit Objekte im Sinne der objektorientierten Programmierung (OOP) überdecken. Aber darüber hinaus überdeckt er im Allgemeinen jede beliebige logische Datenstruktur, wie beispielsweise eine Datei, einen Datensatz innerhalb einer Datenbank, eine Datei-Anlage, den Inhalt einer Variablen oder Teile davon usw. Somit kann auf ein Objekt innerhalb der vorhandenen Anwendung mit der eingebauten Makrosprache oder über eine Anwendungsprogrammierungs-Schnittstelle (API) lesend oder schreibend zugegriffen werden.
Im Kontext dieser Beschreibung soll der Terminus 'vorhandene Anwendung' eine Anwendung bedeuten, die so zu nehmen ist, wie sie ist, d. h., eine Veränderung im Quellcode der Anwendung und eine Neuübersetzung soll strikt vermieden werden. Als Beispiel für eine solche vorhandene Anwendung wird in der folgenden Beschreibung LOTUS NOTES verwendet.
Die Beschreibung wird zeigen, wie die vorliegende Erfindung die Verwendung der JAVA-Sprache anstelle der ursprünglich eingebauten Macrosprache LOTUS-Script erlaubt.
Die zentrale Idee der folgenden Ausführungsform besteht darin, die gesamte relevante Information, d. h. den Java- Quellcode, den Java-Bytecode und den den Java-Bytecode verarbeitenden Server (Bytecode Processing; Server) (BPS) in Objekten zu speichern, die von der vorhandenen Anwendung bereitgestellt werden. Es ist auch möglich, die virtuelle Java-Maschine (Java Virtual Machine) und den Java-Compiler in Objekten zu speichern.
Java-Quellcode ist ein Programm, das in der Java- Programmiersprache geschrieben wurde. Java-Bytecode ist die binäre Ausgabe nach der Übersetzung eines Java-Programms mit dem Java-Compiler. Dieser Bytecode enthält Maschinenbefehle für einen virtuellen Prozessor, das heißt einen Prozessor, der nicht als Hardware implementiert ist. Um diesen Bytecode zu verarbeiten, wird eine virtuelle Maschine benötigt. Eine virtuelle Java-Maschine simuliert einen Hardware-Prozessor durch Software und übersetzt diese Befehle in Befehle eines vorhandenen Hardware-Prozessors. Die virtuelle Maschine kann jedesmal gestartet werden, wenn die Verarbeitung des Bytecodes benötigt wird, oder sie kann gestartet bleiben, wie zum Beispiel in einem Webbrowser. In dieser Beschreibung ist ein Java-Bytecode verarbeitender Server (BPS) eine virtuelle Java-Maschine, die Java-Bytecode verarbeiten kann und die ganze Zeit gestartet bleibt. Dieser Server ist entsprechend einem weiteren Aspekt ein Teil der vorliegenden Erfindung.
Das Ziel besteht darin, eine vom Nutzer ausgewählte Sprache (Java) als Alternative zur eingebauten Makrosprache so reibungslos zu integrieren, dass es einem Endnutzer transparent erscheint. Dies soll von einem Fachmann als wertvoll angesehen werden, wenn er die folgende Beschreibung zusammen mit den Zeichnungen liest.
4.2. AUSFÜHRLICHE BESCHREIBUNG
Unter allgemeiner Bezugnahme auf die Figuren, und jetzt unter spezieller Bezugnahme auf Fig. 1, wird ein Lotus Script-Programm - der zuvor erwähnte Stub - erzeugt und mit Java-Quellcode gefüllt. Um das zu tun, muss der Endnutzer zuerst ein Objekt definieren, in dem der Java-Quellcode gespeichert werden soll. In diesem Beispiel wird ein neues Ereignis 100 mit dem Namen cdMicroLogic, das zu einem Notes- Dokument gehört, benutzt.
Der nächste Schritt 102 besteht darin, ein Java-Programm in diesem Ereignis unterzubringen. Da einige Notes-Versionen die Syntax prüfen, muss das ganze Java-Programm zwischen die Anweisungen "%REM JavaSourceCode" 101 und "%END REM" 105 geschrieben werden. Wenn man das macht, ist das Java- Programm nur ein Kommentar innerhalb der Lotusscript- Sprache, und deshalb wurde ein gültiges Lotusscript-Programm erzeugt.
Wir beziehen uns jetzt auf Fig. 2; wenn der Endnutzer die Programmierung beendet hat, verlässt er das aktuelle Notes- Formular, d. h. den Dokumententwurf, der das Ereignis mit dem Java-Programm enthält, indem er die ESC-Taste drückt oder alternativ hierzu 'Speichere Datei' in der Menüleiste wählt, Schritt 200.
Jede Aktion des Endnutzers und somit auch die oben erwähnten können über einen Anwendungs-Nachrichtenzeiger (application message hook) überwacht werden. Ein solcher Zeiger ist eine Funktion, die auf Informationen in einer Warteschlange zugreifen kann. Eine Anwendungsnachrichten-Warteschlange ist eine Warteschlange, die von einer auf Nachrichten beruhenden Anwendung wie zum Beispiel Notes bereitgestellt wird. Der Anwendungs-Nachrichtenzeiger ist normalerweise eine selbstgeschriebene DLL, die in dem Moment geladen wird, wenn die Anwendung gestartet wird.
Sobald die Nachricht ESC oder 'Speichere Datei' von dem Zeiger empfangen wird, wird eine selbstgeschriebene Funktion aufgerufen. Diese Funktion benutzt das C-API von Lotus Notes, um den Inhalt des neuen Notes-Ereignisses 100 herauszuholen, Schritt 201.
Danach wird der Java-Quellcode, der sich zwischen "%REM JavaSourceCode" und "%END REM" befindet, Anweisungen 101, 105, in eine Datei geschrieben.
Dann wird von dieser Funktion in einem Schritt 202 eine Kennzeichnung (indicator) für den Java-Quellcode gesucht.
Als Nächstes wird, wenn die Kennzeichnung gefunden wurde (der Ja-Zweig der Entscheidung 202), ein Java-Compiler mit dieser Datei als Eingabedatei aufgerufen. Das Ergebnis ist eine Ausgabedatei, die den Java-Bytecode enthält. Die selbstgeschriebene Funktion nimmt diesen Bytecode und schreibt ihn zusammen mit dem Java-Quellcode zurück in das Notes-Ereignis. Der neue Inhalt des Notes-Ereignisses nach der Verarbeitung ist der Java-Quellcode und der Java- Bytecode, Schritt 204.
In den Nein-Zweigen der Entscheidungen 200 bzw. 202 wird die Steuerung zum Monitor für die Nutzeraktionen zurückgegeben, Schritt 200.
Während Fig. 1 und 2 Aspekte der vorliegenden Erfindung zeigen, die relevant sind, während das Makro erzeugt wird, sind Fig. 3, 4 und 5 wichtig für Laufzeitaspekte.
Wir beziehen uns jetzt auf Fig. 3, Fig. 4 und Fig. 5; während der Laufzeit wird die eingebaute Makrosprache immer dann aufgerufen, wenn ein spezielles Ereignis eintritt. Das Gleiche geschieht jetzt, wenn die vom Nutzer gewählte Sprache Java benutzt wird. Der Unterschied besteht darin, dass die eingebaute Makrosprache nur als ein Stub benutzt wird, der, kurz zusammengefasst, das Folgende macht:
als erstes Prüfung, ob der den Java-Bytecode verarbeitende Server vorhanden ist und läuft. Falls nicht, Freigabe und Start dieses Servers, Entscheidung 300, Schritt 301;
Danach Herausholen des Java-Bytecodes, der in einem Objekt zwischen den Anweisungen "%REM JavaßyteCode" und "%END REM" gespeichert ist, Schritt 302;
Weiterhin Senden des Bytecodes an den den Java-Bytecode verarbeitenden Server und Warten, bis die Verarbeitung beendet ist. Wahlweise können Daten, die zu bearbeiten sind, gesendet werden, Schritt 303.
In größerer Ausführlichkeit wird vorgeschlagen, dass die Verarbeitung des Java-Bytecodes während der Laufzeit entsprechend dem folgenden Schema realisiert wird:
Immer dann, wenn das spezielle Ereignis in Notes auftritt, zum Beispiel als PostOpen, was aufgerufen wird, wenn ein Notes-Document geöffnet wird, oder als QueryClose, Initialize oder Terminate, kann jetzt die eingebaute Makrosprache benutzt werden, um ein selbstgeschriebenes Programm laufen zu lassen.
Das Gleiche gilt, wenn Java verwendet wird, die vom Nutzer ausgewählte Sprache seiner Wahl. Wenn das ursprüngliche Notes-Ereignis stattfindet, in diesem Falle ist es ein Ereignis Postopen 400, 401, siehe Fig. 4, wird zuerst ein in der eingebauten Makrosprache geschriebenes kleines Programm aufgerufen. Dieses "Programm" besteht aus einer Zeile 402, die eine selbstgeschriebene Funktion mit dem Namen cdMainFormPostOpen aufruft.
Diese Funktion spricht den Java-Quellcode und den Bytecode an und prüft zuerst, ob der den Java-Bytecode verarbeitende Server (BPS) gestartet wird, Schritt 300. Falls nicht, wird BPS freigegeben. Im Beispiel wird vorausgesetzt, dass der BPS an ein spezielles Notes-Dokument angehängt ist, das zur gleichen Datenbank gehört. Da der BPS selbst in Java geschrieben ist, wird er über den Start einer virtuellen Java-Maschine mit dem BPS als zu verarbeitendes Programm gestartet. Alternativ hierzu könnten BFP und JVM (Virtuelle Java-Maschine) EIN Programm sein.
Nach dem Start des BPS hat in Schritt 302 die Funktion cdMainFormPostOpen 402 den Java-Bytecode aus dem Ereignis 100 heraus. Der Bytecode wird in eine Datei geschrieben. Dann ruft die Funktion 402 den BPS über TCP/IP auf, Schritt 303, wobei sie eine Netzwerksituation voraussetzt, in der ein und dasselbe Anwendungsprogramm über das Netzwerk von einer Vielzahl von Nutzern genutzt wird, und dem Anwendungsserver mitteilt, welches Programm, d. h. welcher freigegebene Bytecode, d. h. welche Datei zu verarbeiten ist.
Die Übergabe von Parametern an den Java-Code ist für den Endnutzer nahezu transparent. Alle benötigten Parameter werden an die Funktion 402 übergeben. Diese Funktion übergibt die Parameter über TCP/IP an den BPS. Der BPS lädt den Java-Code und übergibt die Parameter an diesen Java- Code, wenn die Verarbeitung des Codes beginnt. Im Beispiel werden die Parameter über ein cdTools 103 genanntes Java- Objekt übergeben, siehe wiederum Fig. 1. Dieses Objekt enthält alle Eingabeparameter und stellt dem Endnutzer Methoden zur Verfügung, auf sie zuzugreifen.
Nach der Verarbeitung des Java-Bytecodes durch den BPS funktioniert die Übergabe von Rückgabewerten genau auf die gleiche Weise wie die Übergabe von Parametern: das Objekt cdTools stellt beispielsweise eine Methode cdError() 104 zur Verfügung, um Fehler an die Funktion 402 zurückzumelden.
Durch die Übergabe von Parametern und Rückgabewerten werden die Daten, mit denen die Java-Programme arbeiten, indirekt übergeben. Im Beispiel ist ein Parameter der Name einer Datendatei, die Daten enthält, mit denen das Java-Programm arbeiten soll. Die Ergebnisse der Verarbeitung werden auch in die gleiche Datei geschrieben.
Das beschriebene Beispiel berechnet tatsächlich einige Informationen für ein Dokument. Wenn ein bestimmtes Dokument geöffnet wird, startet das Ereignis Postopen ein Java- Programm, so wie oben beschrieben. Dieses Java-Programm greift auf Daten zu, die in relationalen Datenbanken aufbewahrt werden, wie der Vorname und der Familienname, ein Kennzeichen für Mr./Mrs., die Anzeige einer Kennzeichnung "formal", ob der Kunde eine formale oder nichtformale Eröffnung wünscht und Informationen über Preisnachlass. Auf der Grundlage dieser Informationen wird die Eröffnungszeichenkette 502 eines Dokumentes berechnet, siehe Fig. 5 als Referenz. In Abhängigkeit von der Preisnachlassinformation wird ein "Erinnerungs"- Konstruktionsblock 501 in das Dokument aufgenommen. Wenn der Preisnachlass beispielsweise 0% beträgt, dann wird die Mahnung nicht in das Dokument einbezogen.
In der vorangegangenen Spezifikation wurde die Erfindung beschrieben unter Bezugnahme auf eine ihrer speziellen exemplarischen Ausführungsformen. Es ist jedoch offensichtlich, dass an ihr verschiedene Modifikationen und Veränderungen vorgenommen werden können, ohne vom weiteren Geist und Bereich der Erfindung abzuweichen, so wie in den beigefügten Ansprüchen dargestellt. Die Spezifikation und die Zeichnungen sind dementsprechend eher als Veranschaulichung als in einer restriktiven Art und Weise anzusehen.
In der oben beschriebenen, sich auf LOTUS NOTES beziehenden Ausführungsform der Methode der Erfindung gibt es eine Vielzahl von expliziten oder impliziten Entscheidungen bezüglich der Ausführungsform.
Somit werden als Nächstes nachstehend einige Ausführungs- Alternativen angegeben.
Als Erstes kann die Speicherung des Codes unterschiedlich ausgeführt werden:
Es gibt verschiedene andere Möglichkeiten, den Java- Quellcode zu speichern, zum Beispiel in Notes ScriptLibraries, Notes Agent oder als ein Anhang an ein Notes-Dokument. Allgemein gesprochen kann es ein beliebiges Objekt innerhalb der vorhandenen Anwendung sein, auf das über die eingebaute Makrosprache oder über ein API zugegriffen werden kann.
Im Beispiel wurde der Java-Quellcode zwischen den Anweisungen "%REM JavaSourceCode" und "%END REM" gespeichert. Wenn man das so macht, wird der Java-Quellcode, entsprechend der in den Notes eingebauten Makrosprache Lotusscript, als ein Kommentar gespeichert. Wenn die vorhandene Anwendung eine Java-Syntax erlaubt oder die Syntax überhaupt nicht prüft, ist diese "Umgehung" überflüssig.
Für von LOTUS NOTES verschiedene Anwendungsprogramme gelten ähnliche Betrachtungen.
Zum Zweiten gibt es Sprachalternativen:
Java ist eine Compilersprache für einen virtuellen Prozessor. Die vom Nutzer ausgewählte Sprache könnte auch eine Interpretersprache sein. Dies vereinfacht die Entwicklung, da keine Übersetzung notwendig ist und der übersetzte Code nicht an das Objekt angefügt werden muss.
Bezüglich der Compilersprachen wurde in dem Beispiel erwähnt, dass ein Anwendungs-Nachrichtenzeiger benötigt wird, um die Nachricht ESC oder die Nachricht über das Kommando 'Speichere Datei' zu finden. Diese Nachrichten können der Auslöser für den Start der Übersetzung sein. Diese Ausgestaltung ist nur notwendig, um dem Endnutzer soviel "Einfachheit der Benutzung" wie möglich zur Verfügung zu stellen. Es würde sich für den Endnutzer kaum auswirken, stattdessen eine Übersetzungstaste (compile button) oder irgendein anderes geeignetes Element der grafischen Nutzerschnittstelle (GUI) zu drücken, das die eingebaute Makrosprache anbietet. Natürlich kann ein derartiges GUI- Element benutzt werden, um ein oder mehrere in der vom Nutzer ausgewählten Sprache geschriebene Programme zu übersetzen. Das bedeutet, dass der Anwendungs- Nachrichtenzeiger kein notwendiges technisches Merkmal ist, von dem die vorliegende Erfindung abhängt.
Wenn eine Compilersprache verwendet wird, muss auch der übersetzte Code in einem Objekt der vorhandenen Anwendung gespeichert werden. In dem Beispiel ist dies das Ereignisobjekt 100 unter dem Java-Quellcode. Für den übersetzten Code gilt das Gleiche wie für den Quellcode. Er kann auch in einem beliebigen Objekt gespeichert werden, das die vorhandene Anwendung anbietet. Natürlich könnten Objekte verwendet werden, die dem Endnutzer selbst nicht sichtbar oder zugänglich sind, sondern nur dem Programm.
Eine weitere Alternative bezüglich einer Compilersprache bestünde darin, den Quellcode unmittelbar während der Laufzeit zu übersetzen. In diesem Falle ist keine vorherige Übersetzung und kein Speichern des entstehenden übersetzten Codes erforderlich. Natürlich bedeutet das eine Auswirkung auf die Leistungsfähigkeit.
Zum dritten kann der den Bytecode verarbeitende Server (BPS) unterschiedlich implementiert werden:
Allgemein gesprochen, ist der den Bytecode verarbeitende Server ein Server, der die vom Nutzer ausgewählte Makrosprache verarbeiten kann, gleichgültig, ob es eine Compilersprache für einen virtuellen Prozessor oder eine Interpretersprache ist.
In dem obigen Beispiel ist der BPS in Java geschrieben. Das bedeutet, dass eine virtuelle Java-Maschine benötigt wird, um diesen Server laufen zu lassen. Er könnte auch in C geschrieben sein. In diesem Falle könnten die virtuelle Java-Maschine und der BPS ein Programm sein. Die Forderung nach einer gesonderten virtuellen Maschine wäre überflüssig.
Der BPS könnte auf einem Computer in einem Netzwerk freigegeben und gestartet werden. Wenn man das macht, könnten mehrere Nutzer gleichzeitig einen BPS nutzen, und die Verarbeitung des Codes würde auf einer anderen Maschine stattfinden.
Um die Leistungsfähigkeit zu erhöhen, könnte ein BPS mehrere Male freigegeben und gestartet werden. Es gibt Mechanismen nach dem Stand der Technik für einen BPS, andere BPS zu entdecken und, falls notwendig, die Verarbeitung eines Programms, das in der vom Nutzer geschriebenen Sprache geschrieben ist, einem anderen BPS zuzuordnen. Dies kann als Synergie-Effekt einer Kombination der vorliegenden Erfindung und der Java-Möglichkeiten der Laufzeitunabhängigkeit genutzt werden.
Eine vorherige Installation des BPS wäre auch möglich, womit man vermeidet, ihn freizugeben und zu starten. Aber dies würde den oben erwähnten Hauptvorteil der Erfindung unterminieren, nämlich die Benutzung einer vorhandenen Anwendung mit einer vom Nutzer ausgewählten Makrosprache ohne die Notwendigkeit, ein spezielles Programm vorher zu installieren.
Was oben bezüglich des Java-Quellcodes und des Java- Bytecodes erwähnt wurde, gilt auch für den BPS: ein beliebiges Objekt der vorhandenen Anwendung reicht aus, um den BPS zu speichern.
Eine andere Variation besteht darin, eine Compilersprache für einen vorhandenen Prozessor zu nutzen, selbst wenn man die Nachteile der Größe der Programme, des Verlustes der Plattformunabhängigkeit und in den meisten Fällen der Komplexität der Sprache für Endnutzer betrachten muss.
Schließlich kann die Parameter- und Daten-Übergabe auf unterschiedliche Arten implementiert werden.
Es ist möglich, alle Parameter für die vom Nutzer ausgewählte Sprache über eine Datei zu übergeben, anstatt sie über TCP/IP oder eine andere Netzwerkverbindung zu schicken.
Andererseits können die Daten über TCP/IP oder eine beliebige andere Netzwerkverbindung geschickt werden, anstatt sie über eine Datei zum BPS zu übertragen.
Im Beispiel werden alle Parameter über das Objekt cdTools 103 übergeben, das alle Parameter enthält und Verfahren zur Verfügung stellt, um auf sie zuzugreifen. Dies ist eine willkürlich getroffene Entscheidung über die Ausführungsart. Es ist auch möglich, alle Parameter im entsprechenden ursprünglichen Format zu übergeben. Das Gleiche gilt für die Rückgabewerte.
Einige Teile der oben beschriebenen Ausführungsform benutzen das Notes-C-API. Das ist aber auch nur eine willkürlich getroffene Entscheidung über die Ausführungsart. Die gleichen Ergebnisse können auch erreicht werden, wenn nur LOTUS-Script benutzt wird. Es ist auch eine Entscheidung über die Ausführungsart, wo und wie der Quellcode und der übersetzte Code in Notes-Objekten gespeichert werden. Das Gleiche gilt für die Ereignisbehandlung.
Wie man aus der gesamten obigen Darstellung einschätzen kann, enthalten die Konzepte der Erfindung primär die Speicherung des Quellcodes der vom Nutzer ausgewählten Sprache in Objekten der vorhandenen Anwendung und, falls es sich um eine Compilersprache handelt, die Speicherung des übersetzten Codes sowie die Übersetzung selbst.
Weiterhin wird das Konzept eines BPS einbezogen, der selbst in einem Objekt der vorhandenen Anwendung gespeichert wird, was es erlaubt, die neue Makrosprache überall zu nutzen, ohne zusätzlichen Installationsaufwand.
Und es ist die Kommunikation zwischen dem BPS und der vorhandenen Anwendung über einen Stub eingeschlossen, der in der eingebauten Makrosprache geschrieben ist. Dies umfasst die Übergabe von Parametern und die Datenübertragung.
Schließlich sollte angemerkt werden, dass die Konzepte der Erfindung erweitert werden können, um Makromodule zu erzeugen und abzuarbeiten, die mehr als zwei Sprachen umfassen. Hierfür können Aufrufe nach dem Stand der Technik zwischen den Sprachen nacheinander verwendet werden.
Die vorliegende Erfindung kann in ein Computerprogrammprodukt eingebettet werden, zum Beispiel in ein Anwendungsprogrammprodukt, so wie weiter oben erwähnt, das alle die Eigenschaften umfasst, die die Implementation der jeweiligen Schritte der hier beschriebenen Verfahren ermöglichen, und das, wenn es in ein oder mehrere Computersysteme geladen wird, diese Verfahren ausführen kann.
Computerprogramm-Mittel oder Computerprogramm in diesem Kontext ist jeder beliebige Ausdruck, in irgendeiner Sprache, irgendeinem Code oder beliebiger Notation, einer Menge von Befehlen, die dazu bestimmt sind, ein System mit Informationsverarbeitungsfähigkeit zu veranlassen, eine bestimmte Funktion entweder direkt oder nach einem oder beiden der folgenden Schritte auszuführen:
  • a) Umwandlung in eine andere Sprache, einen anderen Code oder eine andere Notation;
  • b) Reproduktion in unterschiedlicher materieller Form.

Claims (12)

1. Verfahren zur Erzeugung eines wenigstens zweisprachigen Makromoduls zur Verwendung in einem Anwendungsprogramm, das Makrosprachen-Programmiermittel einer Sprache bereitstellt, die für das Anwendungsprogramm die ursprüngliche Sprache ist,
wobei das Verfahren dadurch gekennzeichnet ist, dass es den Schritt der Speicherung (102, 204) des Quellcodes einer vom Nutzer wählbaren Programmiersprache in einem oder mehreren Objekten umfasst, die dem Anwendungsprogramm zugeordnet sind.
2. Verfahren nach Anspruch 1, wobei die vom Nutzer wählbare Programmiersprache eine Interpreter-Sprache ist und das Verfahren den Schritt enthält, Interpretermittel zu nutzen, die in einem oder mehreren Objekten des Anwendungsprogrammes selbst gespeichert sind.
3. Verfahren nach Anspruch 1, wobei die vom Nutzer wählbare Programmiersprache eine Sprache mit später Bindung ist und das Verfahren den Schritt umfasst (203), Bytecode erzeugende Mittel zu nutzen, die in einem oder mehreren Objekten des Anwendungsprogrammes selbst gespeichert sind.
4. Verfahren nach dem vorhergehenden Anspruch, das weiterhin den Schritt umfasst, ein Byteprogrammierungs- Servermittel als virtuelle Maschine für das Abarbeiten des Codes in der vom Nutzer gewählten Sprache zu benutzen, und das Byteprogrammierungs-Servermittel in einem oder mehreren Objekten des Anwendungsprogrammes selbst gespeichert wird.
5. Verfahren nach dem vorhergehenden Anspruch, in dem eine Kommunikation zwischen dem Byteprogrammierungs- Servermittel und der Anwendung über ein Stubmittel realisiert wird, das in der eingebauten Makrosprache geschrieben ist und so gestaltet werden kann, dass es die Übergabe von Parametern und die Übertragung von Daten umfasst.
6. Verfahren nach dem vorhergehenden Anspruch, wobei das Byteprogrammierungs-Servermittel in einem oder mehreren fernen Computermitteln gespeichert wird und Parameter und/oder Daten, die dem Quellcode der vom Nutzer ausgewählten Programmiersprache zugeordnet sind, von einem Computermittel, auf dem sich die Anwendung befindet, zu einem oder mehreren entfernten Computermitteln übertragen werden.
7. Verfahren nach dem vorhergehenden Anspruch, wobei die Programmiersprache die JAVA-Sprache ist.
8. Verfahren nach Anspruch 1, wobei die vom Nutzer ausgewählte Programmiersprache eine Sprache mit früher Bindung ist und die Sprache den Schritt umfasst (203), Compilermittel zu benutzen, die in einem oder mehreren Objekten des Anwendungsprogrammes selbst gespeichert sind.
9. Verfahren nach dem vorhergehenden Anspruch, das weiterhin den Schritt umfasst (204), einen Aufruf der Compilermittel und/oder den übersetzten Code in einem oder mehreren Objekten zu speichern, die dem Anwendungsprogramm selbst zugeordnet sind.
10. Verfahren zum Abarbeiten von wenigstens einem zweisprachigen Makromodul, der entsprechend dem Verfahren nach einem der Ansprüche 1 bis 9 erzeugt wurde.
11. Anwendungsprogrammprodukt, das Computermittel zur Ausführung eines Codes umfasst, der von dem Quellcode der vom Nutzer gewählten Programmiersprache abgeleitet wurde und einen zweisprachigen Makromodul nach einem der vorhergehenden Ansprüche umfasst.
12. Anwendungsprogrammprodukt nach dem vorhergehenden Anspruch, in dem das Programmmittel zur Ausführung des Codes, der vom Quellcode der vom Nutzer ausgewählten Programmiersprache abgeleitet wurde, eines der folgenden Mittel ist: Interpretermittel, Compilermittel oder Bytecode-Konvertierungsmittel.
DE10104043A 2000-02-23 2001-01-31 Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern Ceased DE10104043A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP00103743 2000-02-23

Publications (1)

Publication Number Publication Date
DE10104043A1 true DE10104043A1 (de) 2001-08-30

Family

ID=8167936

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10104043A Ceased DE10104043A1 (de) 2000-02-23 2001-01-31 Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern

Country Status (2)

Country Link
US (1) US7269822B2 (de)
DE (1) DE10104043A1 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US6947955B2 (en) 2002-09-23 2005-09-20 International Business Machines Corporation Run-time augmentation of object code to facilitate object data caching in an application server
DE10344847A1 (de) * 2003-09-26 2005-04-14 Philips Intellectual Property & Standards Gmbh Verfahren zum Compilieren eines Quellcode-Programms in ein maschinenlesbares Zielobjekt-Programm in einer Netzwerkumgebung
US7844958B2 (en) 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US7707547B2 (en) 2005-03-11 2010-04-27 Aptana, Inc. System and method for creating target byte code
FR2883390A1 (fr) * 2005-03-15 2006-09-22 Gemplus Sa Gestion du placement de structure de donnees en memoire basee sur une langage de programmation dedie
KR100763177B1 (ko) * 2005-04-21 2007-10-04 삼성전자주식회사 자바 가상 머신의 명령어 수행 방법 및 그 장치
JP2007034571A (ja) * 2005-07-26 2007-02-08 Fujitsu Ltd 文書処理プログラム、文書処理方法
US8589869B2 (en) 2006-09-07 2013-11-19 Wolfram Alpha Llc Methods and systems for determining a formula
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8381172B2 (en) * 2008-12-02 2013-02-19 Nokia Corporation Method, apparatus, mobile terminal and computer program product for employing a form engine as a script engine
US8788524B1 (en) 2009-05-15 2014-07-22 Wolfram Alpha Llc Method and system for responding to queries in an imprecise syntax
US8601015B1 (en) 2009-05-15 2013-12-03 Wolfram Alpha Llc Dynamic example generation for queries
US8484015B1 (en) 2010-05-14 2013-07-09 Wolfram Alpha Llc Entity pages
US8812298B1 (en) 2010-07-28 2014-08-19 Wolfram Alpha Llc Macro replacement of natural language input
US9069814B2 (en) 2011-07-27 2015-06-30 Wolfram Alpha Llc Method and system for using natural language to generate widgets
US9734252B2 (en) 2011-09-08 2017-08-15 Wolfram Alpha Llc Method and system for analyzing data using a query answering system
US9851950B2 (en) 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
US9405424B2 (en) 2012-08-29 2016-08-02 Wolfram Alpha, Llc Method and system for distributing and displaying graphical items
US10102109B2 (en) 2016-05-31 2018-10-16 Red Hat, Inc. Exception resolution in a software development session
US11188449B2 (en) * 2016-05-31 2021-11-30 Red Hat, Inc. Automated exception resolution during a software development session based on previous exception encounters
CN108874556A (zh) * 2018-05-23 2018-11-23 北京五八信息技术有限公司 一种数据交互方法、装置、存储介质及移动终端
US11068259B2 (en) 2019-01-04 2021-07-20 T-Mobile Usa, Inc. Microservice-based dynamic content rendering
US10983767B2 (en) * 2019-01-04 2021-04-20 T-Mobile Usa, Inc. Microservice-based software development

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515536A (en) * 1992-11-13 1996-05-07 Microsoft Corporation Method and system for invoking methods of an object through a dispatching interface
JPH08272648A (ja) * 1994-12-29 1996-10-18 Hitachi Ltd デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
US6522343B2 (en) * 1998-07-15 2003-02-18 Microsoft Corporation Hosting objects in a windowed environment
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
US6675371B1 (en) * 1999-04-30 2004-01-06 Hewlett-Packard Development Company, L.P. Java and native application window integration

Also Published As

Publication number Publication date
US20010025373A1 (en) 2001-09-27
US7269822B2 (en) 2007-09-11

Similar Documents

Publication Publication Date Title
DE10104043A1 (de) Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern
DE69721632T2 (de) Verfahren und Vorrichtung zur Servletverarbeitung
DE60001931T2 (de) Verfahren und system für automatische übersetzung von konfigurierungseinstellungen zwischen rechnersystemen
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69936844T2 (de) Implementierung einer benutzerschnittstelle in einem fernsehbasierten hyperlinknavigationssystem
DE19926115B4 (de) Transaktionshandhabung in einer Konfigurationsdatenbank
DE10135445B4 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE69533530T2 (de) Verfahren und System zur dynamischen Aggregation von Objekten
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE19705955A1 (de) Verfahren zum Generieren einer Implementierung eines Workflow-Prozessmodells in einer Objektumgebung
DE69932803T2 (de) Dynamisch ladbare satzbuchbibliotheken für gesprochene sprachgrammatik in einem interaktiven system
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE69628374T2 (de) Datenverwaltungssystem
DE19628168A1 (de) Vernetztes multimediales Netz
DE10128883A1 (de) Verfahren und System für die Verteilung von Anwendungsdaten auf verteilte Datenbanken mit verschiedenen Formaten
DE112011103288T5 (de) Anpassbare, auf Inhalten beruhende Publish/Subscribe-Nachrichtenvermittlung
DE60105063T2 (de) Entwicklungswerkzeug für einen dialogflussinterpreter
DE102005026256A1 (de) Verfahren zum Durchführen des Datentransfers zwischen Programmelementen eines Prozesses, Puffer Objekt zum Durchführen des Datentransfers, sowie Drucksystem
DE10054001A1 (de) Automatisierte Schnittstellengenerierung für Computerprogramme in unterschiedlichen Umgebungen
DE10038289A1 (de) Verfahren und System zur Integration von Basisbanktätigkeiten (Core Banking System)
DE69911660T2 (de) Laden von objektorientierten rechnerprogrammen
DE10110039A1 (de) Ein Verfahren zur generischen Beschreibung und Manipulation beliebiger Datenstrukturen
WO2001086402A2 (de) Anzeigesteuerung mit aktiven hypertextdokumenten
DE4325096C2 (de) Ein Datenverarbeitungssystem, welches einen Benutzer-Dialog in mehreren natürlichen Sprachen ermöglicht

Legal Events

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