DE60002295T2 - Aufwandslose ausnahmebehandlung - Google Patents

Aufwandslose ausnahmebehandlung Download PDF

Info

Publication number
DE60002295T2
DE60002295T2 DE60002295T DE60002295T DE60002295T2 DE 60002295 T2 DE60002295 T2 DE 60002295T2 DE 60002295 T DE60002295 T DE 60002295T DE 60002295 T DE60002295 T DE 60002295T DE 60002295 T2 DE60002295 T2 DE 60002295T2
Authority
DE
Germany
Prior art keywords
exception
methods
exception handling
package
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.)
Expired - Lifetime
Application number
DE60002295T
Other languages
English (en)
Other versions
DE60002295D1 (de
Inventor
E. Judith SCHWABE
B. Joshua SUSSER
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60002295D1 publication Critical patent/DE60002295D1/de
Publication of DE60002295T2 publication Critical patent/DE60002295T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Description

  • Ein Teil der Offenbarung dieser Patentschrift enthält Material, das dem Urheberrechtsschutz unterliegt. Der Eigentümer des Urheberrechts hat gegen eine Facsimile-Reproduktion der Patentschrift, wie sie in der Akte des Patentamts oder in Aufzeichnungen erscheint, keine Einwendungen, macht jedoch für alle anderen Fälle seine Urheberrechte geltend.
  • HINTERGRUND
  • Die Erfindung betrifft allgemein objektorientierte Computersoftware und genauer Datenstrukturen und Laufzeitverfahren, um Anforderungen bei der Stapelspeicherung zu verringern und gleichzeitig eine Behandlung von Ausnahmen in einer virtuellen JavaTM-Maschine zu unterstützen, die in resourcenbeschränkten Einrichtungen, z.B. in Smartcards oder dergleichen implementiert ist.
  • Eine virtuelle Maschine ist eine abstrakte Rechenmaschine, die durch eine Softwareanwendung oder eine Folge von durch einen Prozessor ausgeführten Befehlen erzeugt wird. Auf einer virtuellen Maschine ausgeführte Programme können architekturneutral sein. Der Ausdruck "architekturneutral" bezieht sich auf Programme, z.B. solche in JavaTM-Programmiersprache geschriebene, die durch eine virtuelle Maschine auf verschiedenartigen Computerplattformen ausgeführt werden können, die verschiedenartigste Computerarchitekturen haben können. So verwendet z.B. eine auf einem auf WindowsTM basierenden Personalcomputer-System implementierte virtuelle Maschine denselben Befehlssatz wie eine auf einem auf UnixTM basierenden Computersystem implementierte virtuelle Maschine. Das Ergebnis der von der Plattform unabhängigen Codierung einer Befehlssequenz einer virtuellen Maschine ist ein Strom aus einem oder mehreren Bytecodes, von denen jeder beispielsweise ein ein Byte lange numerischer Code ist.
  • Die Java-Programmiersprache ist eine objektorientierte Programmiersprache. In einem objektorientierten System beschreibt eine "Klasse" eine Sammlung von Daten und Methoden, die diese Daten bearbeiten. Zusammengenommen beschreiben die Daten und die Methoden den Zustand und das Verhalten eines Objekts.
  • Die Java-Programmiersprache ist auch verifizierbar, was bedeutet, dass vor der Ausführung einer in Java-Programmiersprache geschriebenen Applikation bestimmt werden kann, ob eine Befehlssequenz in dem Programm versuchen wird, Daten eines für diesen Bytecode ungeeigneten Typs zu verarbeiten oder ob die Ausführung von Bytecodebefehlen in dem Programm ein Unterschreiten oder Überschreiten eines Operandenstapels („Openrandenstack")verursacht.
  • Eine in Java implementierte virtuelle Maschine führt einen in der Java-Programmiersprache geschriebenen virtuellen Maschinencode aus und erfüllt die nachstehend zitierte Spezifikation für virtuelle JavaTM-Maschinen. Eine virtuelle Java-Maschine ist für die Anwendung bei einer 32-Bit-Architektur entworfen. Allerdings haben verschiedenartige resourcenbeschränkte Einrichtungen, z.B. Smartcards, eine 8-Bit- oder 16-Bit-Architektur.
  • Smartcards, die auch als intelligente tragbare Datenträgerkarten bekannt sind, bestehen im allgemeinen aus Kunststoff oder Metall und haben einen elektronischen Chip, der einen eingebetteten Mikroprozessor zur Ausführung von Programmen und einen Speicher zum Speichern von Programmen und Daten enthält. Solche Geräte, die etwa die Größe einer Kreditkarte haben können, besitzen üblicherweise eine begrenzte Speicherkapazität. Die begrenzte Architektur und die Speicherkapazität lassen es in der Praxis nur schwer oder gar nicht zu, dass auf der Einrichtung eine virtuelle Java-Maschine realisiert wird. Beispielsweise haben einige Smartcards unter 1 K RAM-Speicher und nur 16 K ROM-Speicher. Beispielsweise besteht eine der Schwierigkeiten bei der Realisierung einer virtuellen Java-Maschine auf einer resourcenbeschränkten Einrichtung in der Handhabung von Ausnahmen.
  • Bezogen auf 1 ist im Kontext von in Java-Programmiersprache geschriebenen Computerprogrammen ein Ausnahmebehandler 100, eine Prozedur (oder ein Befehlssatz innerhalb einer Prozedur), die bzw. der einen bestimmten Satz des Programmcodes schützt und der als geschützter Codeblock 102 bezeichnet wird. Wenn ein Java-Programm die semantischen Schranken der Java-Programmiersprache verletzt, signalisiert die virtuelle Java-Maschine diesen Fehler dem Programm als eine Ausnahme. Der Ausnahmebehandler wird ausgeführt, wann immer die anwendbare Ausnahme während der Ausführung des entsprechenden geschützten Codes "ausgeworfen" bzw. veranlasst wird. Die Spezifikation der Java-Programmiersprache legt fest, dass eine Ausnahme ausgeworfen wird, wenn Semantikrandbedingungen verletzt sind und verursacht einen nicht lokalen Steuerungstransfer von dem Punkt, wo die Ausnahme geschehen ist, zu einem Punkt, der vom Programmierer gekennzeichnet werden kann. Eine Ausnahme wird von dem Punkt, wo sie aufgetreten ist, als ausgeworfen betrachtet, und an dem Punkt, zu dem die Steuerung übertragen wurde, als eingefangen betrachtet. Z.B. kann ein bestimmter Ausnahmebehandler, wie z.B. eine Prozedur zur Behandlung von "Dateiende"-Ein/Ausgabefehler so festgelegt sein, dass er für einen bestimmten Teil einer ersten Methode 104 anwendbar ist. Falls sich die entsprechende Ausnahme (d.h. hier in diesem Beispiel eine "Dateiende"-Ausnahme) während der Ausführung des geschützten Codes 104 ergibt, wird die Ausführung des Ausnahmebehandlers 100 initiiert. Ausnahmen können implizit oder explizit ausgeworfen sein. Implizite Ausnahmen werden von einer virtuellen Java-Maschine als Ergebnis der Ausführung von Programmbefehlen ausgeworfen, z.B. als eine Null-Pointer-Ausnahme. Alternativ ist eine explizite Ausnahme im Körper einer eine Java"Auswurf"-Anweisung verwendenden Methode enthalten.
  • Eine ausgeworfene oder veranlasste Ausnahme wird als durch einen Ausnahmebehandler gefangen betrachtet, wenn es für die ausgeworfene Ausnahme einen anwendbaren umfassenden Ausnahmebehandler gibt. Ein umfassender Ausnahmebehandler ist einer, dessen Umfang oder Bereich von anwendbaren Befehlen den Befehl enthält, der eine entsprechende Ausnahme ausgeworfen hat. Von der Perspektive eines bestimmten Befehls in einer Methode ist der Satz der umfassenden Ausnahmebehandler der Satz der Ausnahmebehandler, deren Bereich der anwendbaren Befehle (Satz des geschützten Codes) den bestimmten Befehl enthält.
  • Die Java-Programmiersprache bezieht sich häufig, wenn sie Ausnahmebehandler betrifft, auf "Versuchsanweisungen", "Versuchsblöcke", "Fangklauseln" und "Schlussklauseln". Eine Versuchsanweisung enthält einen Versuchsblock, null oder mehr Fangklauseln und optional eine Schlussklausel. Ausnahmen werden durch Einschließen des Codes in Versuchsblöcke gefangen. Ein Versuchsblock ist ein Teil eines Codes, für den ein bestimmter Ausnahmebehandler zutrifft (d.h. der geschützte Codeblock). Eine Fangklausel definiert einen Ausnahmebehandler. Eine Schlussklausel einer Versuchsanweisung stellt einen Mechanismus zur Ausführung eines Abschnitts eines Codes zur Verfügung, und zwar unabhängig davon, ob eine Ausnahme ausgeworfen wurde oder nicht. In einem Java-Programm ist eine Anweisung oder ein Ausdruck dynamisch durch eine Fangklausel eingeschlossen, wenn sie innerhalb des Versuchsblocks der Versuchanweisung auftritt, von der die Fangklausel ein Teil ist, oder wenn die die Anweisung oder den Ausdruck aufrufende Methode dynamisch von der Fangklausel eingeschlossen ist.
  • Ob eine bestimmte Fangklausel eine Ausnahme behandelt, wird durch Vergleich der Klasse des ausgeworfenen Ausnahmeobjekts mit dem erklärten Parametertyp der Fangklausel bestimmt. Die Fangklausel behandelt die Ausnahme, wenn der Typ ihres Parameters die Klasse der Ausnahme oder eine Überklasse der Klasse der Ausnahme ist. In äquivalenter Weise fängt eine Fangklausel irgendein Ausnahmeobjekt, das eine konkrete Ausprägung des vereinbarten Parametertyps ist.
  • Wenn der geschützte Teil der ersten Methode Aufrufe an andere Methoden 106 enthält (die Aufrufe werden in der nachstehend in Bezug genommenen Spezifikation der virtuellen Java-Maschine "Aufruf"-Befehle genannt), die ihrerseits ineinander geschachtelte Aufrufe an andere Methoden 108, 110 enthalten können, bewirken die durch eine der Methoden 106, 108, 110, die direkt oder indirekt von dem geschützten Code 102 aufgerufen wurden, erzeugten Datei-Ende-Fehler auch die Ausführung des aufzurufenden Ausnahmebehandlers 100. Allerdings können verschachtelte Methoden 112 ihren eigenen Datei-Ende-Ausnahmebehandler 114 enthalten. Wenn eine Ausnahme ausgeworfen wird, während eine Methode 112 ausgeführt wird, wird der Ausnahmebehandler 114 zur Behandlung von Datei-Ende-Ausnahmen verwendet, die durch die Ausführung von Befehlen verursacht werden, die in dem bestimmten verschachtelten Verfahren enthalten sind und auch zur Behandlung von Datei-Ende-Ausnahmen, die durch die Ausführung von irgendwelchen von der verschachtelten Methode 112 aufgerufenen Methoden 116 verursacht wurden. In üblichen Java-Programmen sind alle einer Objektklasse zugehörigen Methoden in einer als Klassendatei bezeichneten Datenstruktur gespeichert, die in der Spezifikation der virtuellen Java-Maschine definiert ist. Jede Methode hat ihre eigene Ausnahmetabelle, und außerdem enthält der Code jeder Methode den Code des Ausnahmebehandlers, wie er durch deren Ausnahmetabelle bezeichnet wird. Sobald eine Java-Klassendatei erstellt ist, werden alle dem Verfahren zugeordnete Ausnahmen in einer Liste angeordnet, die als Ausnahmebehandlungstabelle bezeichnet ist. Bezogen auf 2 enthält eine übliche Ausnahmebehandlungstabelle 200 eine oder mehrere Fangklauseln (Ausnahmebehandler) 202. Jede Fangklausel 202 enthält eine Start-pc-Adresse 204 und eine Stopp-pc-Adresse 206, die den Befehlsbereich der virtuellen Java-Maschine für die der Ausnahmebehandler aktiv ist, beschreiben, einen Typindikator 208, der die Ausnahmetypen beschreibt, deren Fangklausel zu behandeln ist, und eine Adresse 210, an der die Ausführung des Ausnahmebehandlungscodes zu beginnen ist.
  • Wichtig ist die Reihenfolge der Fangklauseln in der Ausnahmebehandlungstabelle. Das Auswerfen einer Ausnahme hat als Ergebnis eine von der virtuellen Java-Maschine ausgeführte Suche durch die Ausnahmebehandlungstabelle. Die Ausführung der virtuellen Java-Maschine fährt mit einer ersten übereinstimmenden Fangklausel fort. Da der Java-Code strukturiert ist, kann er in jedem Fall alle Ausnahmebehandler für eine Methode in einer einzelnen Liste anordnen. Für jeden möglichen Programmzählerwert kann diese Liste abgesucht werden, um den geeigneten Ausnahmebehandler aufzufinden, das ist der innerste Ausnahmebehandler, der sowohl den Programmzähler-(pc)-Wert einschließt (wo die Ausnahme ausgeworfen wurde), als auch die ausgeworfene Ausnahme behandeln kann.
  • Sofern es keine passende Fangklausel gibt, sagt man, dass die laufende Methode eine ungefangene Ausnahme ist. Wenn eine Ausnahme ungefangen ist, wird der Ausführungszustand der Aufrufenden, d.h. der Methode, die die laufende Methode (wenn vorhanden) aufgerufen hat, zurückgespeichert. Die Ausbreitung der Ausnahme setzt sich fort, als ob die Ausnahme in der Aufrufenden bei dem Befehl aufgetreten wäre, der die die Ausnahme tatsächlich verursachende Methode aufgerufen hat.
  • Von einer virtuellen Java-Maschine werden, um die Ausführung und den Aufruf von Methoden zu verfolgen, verschiedene Laufzeitdatenstrukturen beibehalten. Eine virtuelle Java-Maschine kann viele Ausführungspfade auf einmal unterstützen. Jeder Pfad einer virtuellen Java-Maschine hat sein eigenes pc-Register (Programmzählerregister). Das pc-Register enthält die Adresse des Befehls der virtuellen Java-Maschine, der gerade ausgeführt wird. Jeder Pfad einer virtuellen Java-Maschine hat einen privaten Java-Stapel („Java stack"), der zur selben Zeit wie der Pfad erzeugt wird. Der Java-Stapel speichert virtuelle Java-Maschinen-Rahmen. Der Java-Stapel ist dem Stapel einer herkömmlichen Sprache, wie z.B. „C", äquivalent: Er hält lokale Variable und Teilergebnisse und unterstützt Methodenaufruf und Rücksprung.
  • Nun wird auf 3 Bezug genommen, wo ein herkömmlicher Java-Stapel 300 dargestellt ist, der eine Vielzahl von Java-Maschinen-Rahmen 302 enthält. Jeder Rahmen 302 enthält eine Referenz 304 auf eine Methode und einen Rücksprungzeiger 306.
  • Die Referenz 204 ist eine Referenz zu der derzeit ausgeführten Methode, die als laufende Methode bezeichnet wird. Die Referenz 304 dient dazu anzuzeigen, welche Ausnahmebehandlungstabelle zu suchen ist, wenn eine Ausnahme während der Ausführung des laufenden Verfahrens veranlasst wird. Die Referenz 304 kann in Form einer Adresse sein, unter der die laufende Methode gespeichert ist. Der Code für jede Methode enthält typischerweise den für die Methoden nötigen maximalen Stapelplatz, die maximale Anzahl der von der Methode benötigten Register, die aktuellen Bytecodes zur Ausführung der Methode und eine Tabelle von Ausnahmebehandlern. Die Referenz 304 kann auf den Anfang der laufenden Methode zeigen, wo typischerweise die Ausnahmebehandlungstabelle gespeichert ist.
  • Der Rücksprungzeiger 306 ist ein Zeiger, der auf die Methode zeigt, die die laufende Methode aufrief, und zeigt genauer auf die Stelle, wo die Ausführung in der aufrufenden Methode bei vollständiger Ausführung der laufenden Methode wieder aufgenommen werden soll.
  • Wie oben beschrieben, haben Smartcards und andere resourcenbeschränkte Einrichtungen üblicherweise eine begrenzte Speicherkapazität.
  • Dementsprechend könnten Programme, die eine Vielzahl verschachtelter Methoden enthalten, die eine Vielzahl von auf dem Java-Stapel zu speichernde Bytes benötigen, eine Überlaufsituation des Stapels bei der Laufzeit verursachen. Es ist deshalb wünschenswert, die Information zu begrenzen, die im Speicher während der Laufzeit gespeichert werden muss, und dennoch eine vollständige Unterstützung für übliche Ausnahmebehandler in einer virtuellen Java-Maschine zu gewährleisten.
  • KURZFASSUNG DER ERFINDUNG
  • Gemäß einem Aspekt erzielt die Erfindung einen in einem Computer realisierten Prozess zur Verwaltung von Ausnahmen, die während der Ausführung von Methoden in einer oder mehreren Klassen durch eine Maschine veranlassbar bzw. auswerfbar sind. Jede Methode enthält ein Ausnahmebehandlungsfeld, welches dieser Methode zugeordnete Ausnahmebehandler definiert. Das Verfahren enthält die Kombination der Ausnahmebehandlungsfelder für alle Methoden in einer einzigen Ausnahmebehandlungstabelle.
  • Aspekte der Erfindung enthalten eines oder mehrere der folgenden Merkmale. Alle Ausnahmebehandlungsfelder für alle Methoden in einer Klasse oder alle Methoden in allen Klassen können in der einzigen Ausnahmebehandlungstabelle gespeichert werden. Alle Ausnahmebehandlungsfelder für alle Methoden in einem Java-Paket können in der einzigen Ausnahmebehandlungstabelle kombiniert werden. Eine Methode kann in einer Klassendatei enthalten sein. Der Schritt, der sämtliche Ausnahmebehandlungsfelder kombiniert kann die Kombination der Ausnahmebehandler in allen Methoden in einer Klassendatei in der einzelnen Ausnahmebehandlungstabelle enthalten.
  • Der Prozess kann das Suchen der Ausnahmebehandlungstabelle, wenn eine Ausnahme während der Ausführung einer der Methoden veranlasst wird, einschließlich der Einordnung einer ersten übereinstimmenden Ausnahme in der einzigen Ausnahmebehandlungstabelle enthalten. Der Suchschritt kann das Wiederaufsuchen in der Reihenfolge der Ausnahmebehandlungseinträge aus der Ausnahmebehandlungstabelle, eine Prüfung des Typs und Bereichs jedes Ausnahmebehandlers für den ersten übereinstimmenden Ausnahmebehandler und einen Suchstopp enthalten, wenn der laufende Ausnahmebehandler nicht passt und der letzte Behandler für das oberste Niveau des geschützten Codes in einer zugeordneten Methode ist.
  • Alle Methoden in einer Klasse sind in einer einzigen Klassendatei beschrieben. Die Klassendateien können Java-Klassendateien sein. Die Methoden in einer oder mehreren Klassen können in einem Paket gruppiert sein, das eine einen ersten und zweiten Teil enthaltende Paketdatenstruktur enthält. Der Prozess kann das Speichern der Ausnahmebehandlungstabelle in dem ersten Teil des Pakets und aller Methoden im zweiten Teil des Pakets enthalten. Der Kombinationsschritt kann eine Verkettung der Ausnahmebehandlungsfelder, einschließlich des Ladens jedes Ausnahmebehandlungsfeldes in dem ersten Teil der Paketdatenstruktur übereinstimmend mit einer vordefinierten Ordnung oder Reihenfolge enthalten. Die vordefinierte Reihenfolge kann auf der Basis der Reihenfolge der im zweiten Teil der Paketdatenstruktur gespeicherten Methode festgelegt sein.
  • Die Maschine kann eine auf einer resourcenbeschränkten Einrichtung realisierte virtuelle Maschine sein. Die resourcenbeschränkte Einrichtung kann eine Smartcard sein. Die Methoden in einer oder mehreren Klassen können in einem Paket gruppiert, und das Paket kann auf der Smartcard eingerichtet sein. Der Prozess kann die Erzeugung eines Pakets enthalten, welches eine einen ersten und zweiten Teil enthaltende Paketdatenstruktur enthält. Der Prozess kann die Verkettung der Ausnahmebehandlungsfelder für jede Klassendatei in einer Ausnahmebehandlungstabelle, die Speicherung der Ausnahmebehandlungstabelle im ersten Teil des Pakets und aller Methoden im zweiten Teil des Pakets enthalten.
  • Der Prozess kann die für einen Laufzeitstapel, wenn ein Programm ausgeführt wird, notwendige Speichermenge minimieren. Der Laufzeitstapel wird in der Laufzeit während der Ausführung des Programms durch eine Maschine, die einen oder mehrere Rahmen speichert, beibehalten, wobei jeder Rahmen einen Rücksprungzeiger zu einer aufrufenden Methode enthält, die als momentan ausgeführte Methode in dem Programm bezeichnet wird. Das Verfahren enthält die Kombination der Ausnahmebehandlungsinformation für die in dem Programm enthaltenen Methoden in einer kombinierten Ausnahmebehandlungstabelle und eine Lokalisierung und eine Suchen der kombinierten Ausnahmebehandlungstabelle, wenn während der Ausführung einer der Methoden eine Ausnahme veranlasst wird, um die Ausnahmebehandlungsinformation zu lokalisieren, ohne dass der Laufzeitstapel eines Zeigers zur Ausnahmebehandlungsinformation gespeichert werden muss.
  • Der Prozess kann einen oder mehrere Merkmale enthalten. Das Programm kann ein Java-Programm sein. Die Maschine kann eine eine virtuelle Java-Maschine realisierende virtuelle Maschine sein. Das Programm kann ein Paket von Methoden enthalten, die in eine oder mehrere Klassen fallen. Die virtuelle Maschine kann in einer kapazitäts- oder resourcenbeschränkten Einrichtung realisiert sein, auf der das Paket eingerichtet ist und ausgeführt wird.
  • Der Prozess kann bei der Installation die Registrierung des Pakets in einem Registrierdienst enthalten. Der Registrierdienst behält einen Zeiger und einen Bereich. Der Zeiger gibt den Ort in der ressourcenbegrenzten Einrichtung der einem gegebenen Paket zugeordneten kombinierten Ausnahmebehandlungstabelle an. Der Bereich definiert einen Adressenbereich in der resourcenbeschränkten Einrichtung, an dem sich die dem Paket zugeordneten Methoden befinden.
  • Der Lokalisierungsschritt kann die Lokalisierung eines Pakets enthalten, das einer momentan ausgeführten Methode zugeordnet ist und einen Vergleich einer Adresse, bei der eine Ausnahme veranlasst wurde mit dem Bereich jedes in dem Registrierdienst registrierten Pakets enthalten. Der Suchschritt kann das Aufsuchen der zu einem lokalisierten Paket gehörenden kombinierten Ausnahmebehandlungstabelle enthalten.
  • In einem anderen Aspekt erzielt die Erfindung ein Verfahren zur Umwandlung von Klassendateien in ein „gewandeltes Applet" zur Ausführung auf einer kapazitätsbeschränkten Einrichtung und enthält den Empfang einer oder mehrerer Klassendateien, die jeweils eine oder mehrere Methoden enthalten. Jede Methode enthält ein Ausnahmebehandlungsfeld, welches durch die Methode veranlassbare Ausnahmebehandler definiert. Die Methode enthält eine Definition einer Datenstruktur zum Speichern der Methoden und der Ausnahmebehandler für das gewandelte Applet einschließlich eines ersten und zweiten Teils sowie die Definition einer Ordnungsfolge für die Methode sowie das Laden der Methoden in Übereinstimmung mit der Ordnung in dem zweiten Teil der Datenstruktur. Die Ausnahmebehandlungsfelder für alle Methoden werden in einer einzelnen Ausnahmebehandlungstabelle kombiniert. Die Ausnahmebehandlungsfelder sind in der Tabelle übereinstimmend mit der für die Methoden definierten Ordnung geordnet. Die Methode enthält die Speicherung des einzelnen Ausnahmebehandlungsfelds in dem ersten Teil der Datenstruktur.
  • Der Prozess kann Ausnahmen verwalten, die während der Ausführung von Methoden in einer oder mehreren Klassen durch eine virtuelle Maschine veranlassbar sind. Jede Methode enthält ein Ausnahmebehandlungsfeld, welches dieser Methode zugeordnete Ausnahmebehandler definiert. Die einzelnen Ausnahmebehandlungsfelder werden kombiniert und bilden eine einzige Ausnahmebehandlungstabelle für zwei oder mehr Methoden. Der Prozess enthält das Aufsuchen der Ausnahmebehandlungstabelle, sobald eine Ausnahme während der Ausführung einer der Methoden veranlasst wird, einschließlich der Lokalisierung einer ersten übereinstimmenden Ausnahme in der einzigen Ausnahmebehandlungstabelle.
  • Erreicht ist ein Computersystem, das Befehle enthält, die es veranlassen, die Ausnahmebehandlungsfelder für Methoden in einer einzigen Ausnahmebehandlungstabelle zu kombinieren.
  • Ein solches Computersystem kann Befehle enthalten, die es veranlassen, die Ausnahmebehandlungsinformation für Methoden in einem Programm in einer kombinierten Ausnahmebehandlungstabelle zu vereinigen und die kombinierte Ausnahmebehandlungstabelle zu lokalisieren und aufzusuchen, wenn eine Ausnahme während der Ausführung einer der Methoden veranlasst wird, um damit die Ausnahmebehandlungsinformation zu lokalisieren, ohne dass eine Speicherung des Laufzeitstapels eines Zeigers in dem Ausnahmebehandler nötig ist.
  • Außerdem ist ein Computersystem ermöglicht, das Befehle enthält, die es veranlassen, eine oder mehrere Klassendateien zu empfangen. Jede Klassendatei enthält eine oder mehrere Methoden, und jede Methode enthält ein Ausnahmebehandlungsfeld, das durch die Methode veranlassbare Ausnahmebehandler definiert. Das Computersystem enthält Befehle, die es veranlassen, eine Datenstruktur zur Speicherung der Methoden und Ausnahmebehandler für das gewandelte Applet einschließlich eines ersten und zweiten Teils zu definieren, eine Ordnungsfolge für die Methoden zu definieren und die Methoden übereinstimmend mit der Ordnungsfolge in dem zweiten Teil der Datenstruktur zu laden, die Ausnahmebehandlungsfelder für zwei oder mehr Methoden in einer einzigen Ausnahmebehandlungstabelle, einschließlich der Ordnung der Ausnahmebehandlungsfelder, übereinstimmend mit der für die Methoden definierten Ordnung zu kombinieren und das einzelne Ausnahmebehandlungsfeld im ersten Teil der Datenstruktur zu speichern.
  • Ein Computersystem ist ermöglicht, das Befehle enthält, die es veranlassen, eine Ausnahmebehandlungstabelle aufzusuchen, wenn eine Ausnahme während der Ausführung einer Methode veranlasst wird. Befehle sind enthalten, die eine erste übereinstimmende Ausnahme in der einzigen Ausnahmebehandlungstabelle lokalisieren.
  • Ausführungsbeispiele der Erfindung können einen oder mehrere Vorteile enthalten. Die Menge der zur Speicherung auf einem Laufzeitstapel notwendigen Information lässt sich verringern und immer noch übliche Ausnahmebehandlungsprozeduren unterstützen. Eine verkettete Ausnahmebehandlungstabelle kann generiert werden, die Einträge für alle Ausnahmen enthält, die einem Paket von in einer resourcenbeschränkten Einrichtung zu verwendenden Methoden zugeordnet sind. Zur Unterstützung der Ausnahmebehandlung ist kein Stapelüberhang notwendig. Sobald eine Ausnahme veranlasst ist, kann die virtuelle Java-Maschine die verkettete Ausnahmebehandlungstabelle für den korrekten Ausnahmebehandler wirksam aufsuchen. Mit einer Optimierung kann das Suchen der verketteten Ausnahmebehandlungstabelle wirksam realisiert werden, ohne dass die Bewertung aller Einträge in der verketteten Tabelle für gewisse Klassen von verschachtelten Fangklauseln notwendig ist. Die Tabelleneinträge können geordnet sein, um ein Ende einer Suche nach Übereinstimmung am obersten Niveau des Behandlers sicher zu stellen. Aus der nachfolgenden detaillierten Beschreibung, den beiliegenden Zeichnungen und den Patentansprüchen sind weitere Merkmale und Vorteile ohne weiteres ersichtlich.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine schematische Darstellung eines Satzes von Methoden, die durch Prozeduraufrufe bei der Laufzeit miteinander verkettet sind.
  • 2 zeigt eine übliche Java-Ausnahmebehandlungstabelle, die Einträge für jede in einer Methode eingeschlossene Ausnahme enthält.
  • 3 zeigt einen konventionellen Java-Stapel-Laufzeitdatenbereich.
  • 4 ist ein schematisches Blockdiagramm, welches ein beispielhaftes System veranschaulicht, das eine erfindungsgemäße virtuelle Maschine enthält, die sich auf einer Smartcard befindet.
  • 5a ist ein Flussdiagramm für einen Prozess, der eine verkettete Ausnahmebehandlungstabelle erzeugt.
  • 5b ist ein schematisches Blockdiagramm für eine Datenstruktur für ein Methodenelement einschließlich sämtlicher Methoden für ein mit einer virtuellen Maschine auf einer Java-CardTM auszuführendes Paket.
  • 6 ist ein schematisches Blockdiagramm einer verketteten Ausnahmebehandlungstabelle für ein Java-Paket.
  • 7 ist ein schematisches Blockdiagramm einer Ausnahmeregistrierung, die von einer virtuellen Maschine einer Java-Card gehalten wird.
  • 8 zeigt für eine virtuelle Maschine einer Java-Card einen Laufzeitdatenbereich eines Laufzeitstapels.
  • 9 ist ein Flussdiagramm für eine Laufzeitmethode zum Suchen einer verketteten Ausnahmebehandlungstabelle.
  • 10a ist ein Flussdiagramm für eine optimierte Laufzeitmethode zum Suchen einer verketteten Ausnahmebehandlungstabelle.
  • 10b ist ein detaillierter Fluss einer Realisierung für die in 10a beschriebene optimierte Laufzeitmethode.
  • BESCHREIBUNG
  • Nachstehend wird eine Datenstruktur und eine Methode zur Verarbeitung von Ausnahmen beschrieben, die während der Ausführung eines Java-Pakets auf einer resourcenbeschränkten Einrichtung ausgeworfen bzw. veranlasst werden. Resourcenbeschränkte Einrichtungen sind im allgemeinen solche, deren Speicherkapazität und/oder Rechenleistung oder -geschwindigkeit beschränkt sind. Obwohl die hier behandelte besondere Realisierung in Bezug auf eine Smartcard beschrieben ist, kann die Erfindung auch bei anderen resourcenbeschränkten Einrichtungen verwendet werden, die, ohne darauf beschränkt zu sein, Handys, Scangeräte an Grenzen, am Ort programmierbare Geräte, personale Datenassistenten (PDAs) und Rufgeräte sowie auch andere sehr kleine oder auf kleinem Fuß stehende Geräte enthalten. Solche Geräte haben üblicherweise eine beschränkte Speicherkapazität. Z.B. haben einige Smartcards weniger als 1 K RAM-Speicher und sind auch in der Speicherkapazität ihres ROM- Speichers und/oder nichtflüchtigen Speichers beschränkt, wie z.B. bei einem elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM). Gleichermaßen basieren einige resourcenbeschränkte Einrichtungen auf einer Architektur, die für weniger als 32 Bits entworfen ist. Z.B. beruhen einige der bei der Erfindung verwendeten resourcenbeschränkten Einrichtungen auf einer 8-Bit- oder 16-Bit-Architektur anstatt auf einer 32-Bit-Architektur. Bezogen auf 4 beginnt die Entwicklung eines Applets für eine resourcenbeschränkte Einrichtung, z.B. eine Smartcard 40, in derselben Weise wie die Entwicklung eines Java-Programms. Anders gesagt, schreibt ein Entwickler eine oder mehrere Java-Klassen und übersetzt den Quellcode mit einem Java-Compiler, um eine oder mehrere Klassendateien 10 zu erzeugen. Das Applet kann z.B. auf einer Arbeitsstation, die Simulationsprogramme zur Nachbildung der Umwelt auf einer Smartcard 40 verwendet, ablaufen, geprüft und auf Fehler untersucht werden. Wenn das Applet zum Laden auf eine Smartcard 40 bereit ist, werden die Klassendateien 10 in eine umgewandelte Applet-(CAP)-Datei 16 durch einen Konverter 14 umgewandelt. Der Konverter 14 kann als eine Java-Anwendung realisiert sein, die sich auf einem Tischcomputer ausführen lässt. Der Konverter 14 akzeptiert als Eingang eine oder mehrere Exportdateien 12 zusätzlich zu den umzuwandelnden Klassendateien 10. Eine Exportdatei 12 enthält die Benennung oder Verkettung von Information für die Inhalte anderer Pakete, die durch die umgewandelten Klassen importiert werden.
  • Im allgemeinen enthält die CAP-Datei 16 all die Klassen und Schnittstellen, die in einem einzelnen Java-Paket definiert sind, und wird durch einen Strom von 8 Bit umfassenden Bytes dargestellt. Alle 16-Bit- und 32-Bit-Größen werden jeweils durch das Auslesen in zwei oder vier aufeinander folgenden 8-Bit-Bytes konstruiert. Unter anderem enthält die CAP-Datei 16 ein Element 18 für einen Konstantenpool, das getrennt von einem Methodenelement 20 gepackt wird. Das Element 18 für den Konstantenpool enthält mehrere Konstantentypen, die von numerischen Literaten, bekannt als Compilezeit, bis zu Methoden und Feldreferenzen reichen, die entweder beim Laden des Programms auf die Smartcard 40 oder zum Zeitpunkt der Ausführung durch die Smartcard aufgelöst werden. Das Methodenelement 20 spezifiziert den auf die Smartcard 40 zu ladenden und darauf folgend von ihr auszuführenden Befehlssatz.
  • Weitere Einzelheiten der Struktur einer beispielhaften CAP-Datei 16 werden in der gleichfalls anhängigen Internationalen Anmeldung mit der Bezeichnung "AN OBJECT-ORIENTED INSTRUCTION SET FOR USE WITH OTHER RESOURCE-CONSTRAINED DEVICES" von Joshua B. Susser et al. diskutiert, die gleichzeitig mit der vorliegenden Anmeldung eingereicht worden ist und die auf der Patentanmeldung EP-A-1 149 337 beruht.
  • Allgemein folgen für eine resourcenbeschränkte Plattform, z.B. die Smartcard 40, geschriebene Realisierungen und Applets den Standardregeln für Pakete auf der Java-Plattform. Die virtuelle Java-Maschine und die Java-Programmiersprache sind in T. Lindholm et al., The JavaTM Virtual Machine Specification (1997) und K. Arnold et al., in JavaTM Programming Language Second Edition (1998) beschrieben, die hier als ganzes in Bezug genommen sind. Schnittstellenklassen für die Kartenanwendungen bezogen auf die Smartcard-Plattform werden als Java-Quelldateien geschrieben, die Paketbestimmungen enthalten, wo ein Paket eine Anzahl von Übersetzungseinheiten enthält und einen einheitlichen Namen hat. Paketmechanismen werden zur Kennzeichnung und Steuerung des Zugriffs zu Klassen, Feldern und Methoden verwendet.
  • Wie oben beschrieben akzeptiert der Konverter 14 als eine Eingabe eine oder mehrere Exportdateien 12 zusätzlich zu den umzuwandelnden Klassendateien 10 und erzeugt eine CAP-Datei 16. Jede Klassendatei enthält eine Ausnahmebehandlungstabelle, die einer jeweiligen Methode für eine gegebene Klasse zugeordnet ist. Der Konverter 14 verkettet alle Ausnahmebehandlungstabellen für alle Methoden von allen einem Paket zugeordneten Klassen in eine einzige Ausnahmebehandlungstabelle. Die verkettete Ausnahmebehandlungstabelle wird mit den zugrundeliegenden Methoden für das Paket bei der Laufzeit, wenn eine Ausnahme veranlasst wird, beibehalten und gesucht, wie nachstehend mehr im einzelnen beschrieben wird.
  • Bezogen auf die 5a und 5b beginnt ein Prozess 500, der vom Konverter 14 (4) zur Verkettung der Ausnahmebehandlungstabelle für alle Methoden ausgeführt wird, mit Schritt 502. Eine Ordnungsfolge für die Methoden in dem Paket wird definiert (504). Die Ordnung definiert die Stellung des Codes für die zugrundeliegenden Methoden in einem zugeordneten Methodenelement 550. Z.B. sind in einem Paket 545 drei Methoden 530, 535 und 540 (Methoden A, B und C) enthalten. Jede Methode enthält einen Code (jeweils 531, 536 und 541) und eine zugehörige Ausnahmebehandlungstabelle (jeweils 532, 537 und 542).
  • Das Methodenelement beschreibt jede Methode, die in einem Paket vereinbart ist. Die jeder Methode zugeordneten Ausnahmebehandler sind auch beschrieben. In einer Realisation wird das Methodenelement durch folgende Struktur dargestellt:
  • Figure 00200001
    TABELLE 1: METHODENELEMENT
  • Das Kennzeichenfeld hat einen Wert, der die Datenstruktur als ein Methodenelement identifiziert. Das Größenfeld gibt die Bytezahl in der Methodenelementstruktur an, ausgenommen des Kennzeichens und der Datensätze für das Größenfeld. Das Feld: „Behandler Zahl" gibt die Anzahl der Einträge in der verketten Ausnahmebehandlungstabelle an. Das Feld: „Ausnahme_Behandler" gibt ein Feld von in einer Tabelle angeordneten 8-Byte-Ausnahmebehandlungsstrukturen an und wird als verkettete Ausnahmebehandlungstabelle bezeichnet. Jede Ausnahmebehandlungsstruktur gibt eine Fang- und eine Schlussklausel an, die in einer Methode des Pakets definiert sind. Einträge in der verketteten Ausnahmebehandlungstabelle werden in aufsteigender Reihenfolge mittels des Abstands zwischen dem Beginn des Methodenelements bis zum Endpunkt jedes aktiven Ausnahmebehandlungsbereichs in dem Methodenfeld sortiert. Die Ordnung der Blöcke der den bestimmten Methoden zugeordneten Ausnahmebehandler wird nachstehend im einzelnen beschrieben.
  • Das Methodenfeld stellt ein Feld von Methodeninformationsstrukturen variabler Länger dar. Jeder Eintrag gibt eine in einer Klasse oder in einer Schnittstelle des gegebenen Pakets vereinbarte Methode an.
  • Für den Zweck der vorliegenden Anwendung kann ein Methodenelement 550 als eine Datenstruktur dargestellt werden, die zwei Teile enthält, einen ersten Teil 552 und einen zweiten Teil 554. Der erste Teil 552 ist ein Platzhalter für die Ausnahmebehandler für die zugrundeliegenden Methoden des Pakets. Die Ausnahmebehandler sind in einer verketteten Ausnahmebehandlungstabelle 556 gespeichert. Der einzelne Methodencode ist im zweiten Teil 554 gespeichert.
  • Die einzelnen Ausnahmebehandlungstabellen werden in die verkette Ausnahmebehandlungstabelle geladen und in Übereinstimmung mit der durch Schritt 504 (506) definierten Ordnungs geordnet. D.h., dass jedes Ausnahmebehandlungstabelle für jede Methode blockförmig in die verkette Ausnahmebehandlungstabelle 556 geladen wird. Die in jeder einzelnen Ausnahmebehandlungstabelle für jede Methode definierte lokale Ordnungsfolge wird beibehalten. In dem in 5b gezeigten Beispiel werden die Methoden in der Reihenfolge A, C und B im zweiten Teil 554 des Methodenelements nach der Ausführung des Ordnungsschritts 504 geordnet. Die zugehörigen Ausnahmebehandlungstabellen A, B und C werden in die verkettete Ausnahmebehandlungstabelle 556 in derselben Reihenfolge (A, C und dann B) geladen. Die Reihenfolge der einzelnen Ausnahmebehandler in den einzelnen Ausnahmebehandlungstabellen erfüllt die übliche Konstruktion in der Java-Programmiersprache, um sicher zu stellen, dass eine erste durch eine virtuelle Java-Maschine bei der Laufzeit getroffene Übereinstimmung die spezifischste Übereinstimmung ist, die auftreten kann.
  • Bei einer Realisierung sind Ausnahmen in einer Klassenhierarchie organisiert. Die Ausnahmenklassenhierarchie hat eine höchste Ausnahmeklasse, die "auswerfbar" genannt wird, und zwei Hauptzweige: einen Satz außergewöhnlich ernster Ausnahmen, deren Überklasse die "Fehler"-Klasse ist, und einen Satz etwas weniger katastrophaler Ausnahmen, deren Überklasse die "Ausnahme"-Klasse ist.
  • Sobald eine Ausnahme veranlasst wird, führt eine virtuelle Java-Maschine den ersten Ausnahmebehandler aus, der sich in einem Suchbaum des umfassten Ausnahmebehandlers findet, der für die veranlasste Ausnahme anwendbar ist. Um sicher zu stellen, dass der die niedrigste Klasse umfassende Ausnahmebehandler, der für die veranlasste Ausnahme verwendet werden kann, anwendbar ist, werden die Autoren der Java-Programme (das sind die Methoden) im allgemeinen die Ausnahmebehandler innerhalb jeder Methode so anordnen, dass die Ausnahmebehandler der unteren Klassen vor den Ausnahmebehandlern der höheren Klassen stehen (wobei der Klassenrang durch die Position der Ausnahmenhierarchie bestimmt ist). Außerdem führt eine virtuelle Maschine, wenn es für genau dieselbe Ausnahmebedingung zwei oder mehr umfassende Ausnahmebehandler gibt, die für einen Befehl anwendbar sind, der eine Ausnahme veranlasst, den anwendbaren umfassenden Ausnahmebehandler aus, der durch die Methode eingerichtete ist, die in der Kette der Methodenaufrufe derjenigen Methode am nächsten liegt, die die Ausnahme veranlasst.
  • Nachdem die einzelnen Ausnahmebehandlungstabellen in ihre Ordnung gebracht und im Schritt 506 geladen worden sind, wird jeder Ausnahmebehandlungseintrag in der verketteten Ausnahmebehandlungstabelle 556 in eine für die Verwendung in einer resourcenbeschränkten Einrichtung, wie eine Smartcard 40 (4) optimierte Datenstruktur umgewandelt (508). In einer Realisation ist in 6 die Datenstruktur für einen optimierten Eintrag in der verketteten Ausnahmebehandlungstabelle 556 dargestellt. Die verkettete Ausnahmebehandlungstabelle 600 enthält mehrere Einträge 602, die jeweils Daten in Übereinstimmung mit einer Ausnahmebehandlungsinformations-Datenstruktur enthalten. Die Ausnahmebehandlungsinformations-Datenstruktur enthält einen Startversatz 604, eine aktive Länge 606, einen Handlerversatz 610 und einen Fangtypindex 612. Der Startversatz 604 und ein (nicht gezeigter) Endversatz sind Byteversätze in den bestimmten Methodenelementen.
  • Der Startversatz und der Endversatz geben den Bereich in einem Bytecodefeld an, in dem ein Ausnahmebehandler aktiv ist. Der Wert des Startversatzes 604 muss ein gültiger Versatz in ein Bytecodefeld zu dem Operationscode eines Befehls sein.
  • Der Endversatz ist als die Summe des Startversatzes 604 plus die aktive Länge 606 definiert. Der Wert des Endversatzes muss entweder ein gültiger Versatz in ein Codefeld des Operationscodes eines Befehls oder gleich einer Bytecodezahl einer Methode (die Länge des Codefeldes) sein. Der Wert des Startversatzes 604 muss kleiner sein als der Wert des Endversatzes. Der Startversatz 604 ist inklusiv und der Endversatz exklusiv; d.h., dass der Ausnahmebehandler aktiv sein muss während die Ausführungsadresse innerhalb des Intervalls liegt [Startversatz, Endversatz].
  • Die aktive Länge 606 definiert in Bytecodes den Bereich der durch den gegebenen Ausnahmebehandler umschlossenen Befehle. In einer Realisation ist die aktive Länge 606 so codiert, dass sie angibt, ob der aktive Bereich des bestimmten Ausnahmebehandlers in einen anderen Ausnahmebehandler geschachtelt ist und insbesondere, ob der laufende Ausnahmebehandler der letzte Behandler in einer Liste von einem bestimmten geschützten Codeblock zugeordneten Ausnahmebehandlern ist. Für in der Java-Programmiersprache geschriebene Programme wird das Bit codiert, um anzugeben, wenn der laufende Ausnahmebehandler der letzte (Fang- oder Schlussklausel) in einer Liste von Ausnahmebehandlern für einen geschützten Codeblock ist. Das hohe Bit der aktiven Länge 606 wird auf eins ("1") gesetzt, wenn der geschützte Codeblock nicht in einem anderen geschützten Codeblock enthalten und der laufende Behandler der letzte dem geschützten Codeblock zugeordnete Behandler ist. Das Bit wird auf null ("0") gesetzt, wenn der geschützte Codeblock in einem anderen geschützten Codeblock enthalten oder der laufende Behandler nicht der letzte dem geschützten Codeblock zugeordnete Behandler ist. Bei Verwendung dieser Codierung wird der Endversatz als die Summe des Startversatzes 604 plus die aktive Länge 606 und 0×7FFF definiert.
  • Der Behandlerversatz 608 stellt einen Byteversatz in ein Informationsfeld des Methodenelements dar. Genauer gibt der Behandlerversatz 608 den Start des Ausnahmebehandler und eine Stelle an, wo die Ausführung von der virtuellen Java-Maschine wieder aufzunehmen ist, wenn die bestimmte Ausnahme gefangen ist. Der Wert des Behandlerversatzes 608 muss ein gültiger Versatz in ein Bytecodefeld einer Methode zu einem Operationscode eines Befehls und kleiner sein als der Wert der Bytecodezahl der Methode.
  • Der Fangtypindex 610 gibt den Typ des Ausnahmebehandlers an. Damit die Steuerung an den Ausnahmebehandler übertragen wird, muss der der veranlassten Ausnahme zugehörige pc in den für den Ausnahmebehandler definierten Bereich fallen und vom selben Typ sein. Wenn der Wert des Index 610 für den Fangtyp nicht Null ist, muss er ein gültiger Index in die Konstantenpooltabelle sein, die die Klasse der durch diesen Ausnahmebehandler gefangenen Ausnahme angibt. Wenn der Ausnahmebehandler eine Schlussklausel darstellt, wird der Wert des Index 610 für den Fangtyp auf null gesetzt. Ein Ausnahmebehandler für die Schlussklausel wird für alle Ausnahmen aufgerufen, die innerhalb des Startversatzes und des Endversatzbereichs veranlasst werden, und zwar unabhängig vom Typ.
  • Wieder bezogen auf 4, kann die CAP-Datei 16 nach der Umwandlung in ein computerlesbares Medium 17, z.B. eine Festplatte, eine Floppy-Disc, ein optisches Speichermedium, einen Flashspeicher oder in ein anderes geeignetes Speichermedium gespeichert werden. Dann kann die CAP-Datei 16 kopiert oder an ein Terminal 22, z.B. einen Tischcomputer mit einer peripheren Kartenannahmeeinrichtung (CAD) 24 übertragen werden. Die CAD 24 gestattet ein Einschreiben und wieder Aufsuchen von Information von einer Smartcard 40. Die CAD 24 enthält ein Cardport (nicht gezeigt), in die eine Smartcard 40 eingelegt oder gesteckt werden kann. Sobald sie eingesteckt worden ist, drücken Kontakte von einem Stecker gegen einen Oberflächenverbindungsbereich der Smartcard 40, um Versorgungsleistung zu liefern und einen Verkehr mit der Smartcard 40 zu ermöglichen. Das Endgerät 22 enthält auch ein Installationswerkzeug oder -programm 26, das die CAP-Datei 16 lädt und sie auf die Card 40 überträgt.
  • Die Smartcard 40 hat ein Eingabe/Ausgabe(In/Out)-Port 42, das einen Kontaktsatz enthält, durch den Programme, Daten und andere Kommunikationen übertragen werden können. Die Smartcard 40 enthält auch ein Installationswerkzeug 46, mit dem die Inhalte der CAP-Datei 16 empfangen werden und das Applet zur Ausführung auf der Card 40 bereitgestellt wird. Das Installationswerkzeug 46 kann z.B. als Java-Programm realisiert und auf der Smartcard 40 ausgeführt werden. Die Smartcard 40 hat auch einen Speicher, der einen flüchtigen Speicher, z.B. einen RAM 50, und einen nichtflüchtigen Speicher, z.B. einen elektrisch löschbaren, programmierbaren ROM (EEPROM) 54 einschließt. Die Smartcard 40 hat auch einen ROM-Speicher, z.B. das ROM 52. Das vom Umwandler 14 bereitgestellte Applet (CAP-Datei 16) kann im EEPROM 54 gespeichert werden.
  • Als Teil des Installationsprozesses werden ein oder mehrere Datenbereiche vom Installationswerkzeug 46 eingerichtet, um Laufzeitoperationen zu erleichtern. Ein Beispiel eines Datenbereichs ist eine Ausnahmeregistratur. Die Ausnahmeregistratur ist eine von einer virtuellen Maschine einer Java-CardTM verwendete Liste, wenn veranlasste Ausnahmen interpretiert werden.
  • Bezogen auf die 4 und 7 kann die Ausnahmeregistratur 700 eine erweiterbare verbundene Listendatenstruktur haben. Neue Einträge können dem Kopf der Liste hinzugefügt werden. Jeder Eintrag 702 in der Ausnahmeregistratur 700 stellt ein Methodenelement 550 (siehe 5b) dar, das Ausnahmebehandler enthält. Methodenelemente ohne Ausnahmebehandler sind nicht enthalten.
  • Während der Installation einer CAP-Datei ruft das Installationswerkzeug 46 eine virtuelle Maschine der Java-Card zum Registrieren der einem Paket zugehörigen Methodenelemente auf. Jeder Eintrag enthält eine Adresse 704 des zugeordneten Methodenelements und dessen Größe 706. Die Adresse 704 und die Größe 706 definieren einen Bereich bezogen auf den Programmzähler (pc) für Befehle, die in einem Paket enthalten sind. Die Verwendung der Ausnahmeregistratur wird nachstehend mehr im einzelnen beschrieben.
  • Wie eingangs im Hintergrund der Erfindung beschrieben, hält eine virtuelle Java-Maschine verschiedene Laufzeitdatenstrukturen, um die Verfolgung, Ausführung und den Aufruf von Methoden zu erhalten. Eine virtuelle Java-Card-Maschine macht das gleiche. Bei der Laufzeit hält eine virtuelle Java-Card-Maschine eine pc und einen Laufzeitstapel aufrecht. Ein Laufzeitstapel speichert Rahmen der virtuellen Java-Card-Maschine. Bezogen auf 8 enthält ein Laufzeitstapel 800 mehrere virtuelle Maschinenrahmen 802. Jeder Rahmen 802 enthält einen Rücksprungzeiger 806.
  • Der Rücksprungzeiger 806 ist ein Zeiger zu der Methode, die die laufende Methode aufrief und genauer zu dem Ort, wo die Ausführung in der aufrufenden Methode bei vollständiger Ausführung der laufenden Methode wieder aufzunehmen ist.
  • Wie nachstehend erläutert, braucht auf dem Laufzeitstapel keine Referenz zu der derzeit ausgeführten Methode gehalten werden. Alle die Ausnahmebehandler für sämtliche Methoden, die in einem Paket zugeordnet sind, sind in einer einzigen verketteten Ausnahmebehandlungstabelle gespeichert, die zur Laufzeit für einen für den laufenden pc relevanten Ausnahmebehandler aufgesucht werden kann.
  • Bezogen auf 9 beginnt ein Prozess 900 für eine Laufzeitausnahmebehandlung mit dem Schritt 902. Eine virtuelle Java-Card-Maschine veranlasst eine Ausnahme (904) entweder explizit oder implizit. Die Klasse der Ausnahme wird ermittelt (906) zusammen mit dem pc-Stand, wo die Ausnahme veranlasst wurde (908).
  • In der Ausnahmeregistratur wird eine Suche durchgeführt, um ein Methodenelement zu orten, das den pc einschließt, wo die Ausnahme veranlasst wurde (910). Dies bestimmt, in welchem Paket die Methode des laufenden Rahmens implementiert ist. Falls sich kein übereinstimmendes einschließendes Methodenelement finden (und damit auch keine verkettete Ausnahmebehandlungstabelle) (912), erfolgt eine Prüfung, um festzustellen, ob ein Stapelrahmen zur Entnahme aus dem Laufzeitstapel verfügbar ist (914). Falls keine Stapelrahmen zur Entnahme aus dem Laufzeitstapel mehr verfügbar sind, wird die virtuelle Java-Card-Maschine mit einer ungefangenen Ausnahme angehalten (916). Falls ein anderer Rahmen zur Entnahme aus dem Laufzeitstapel verfügbar ist, wird dieser Rahmen entnommen (918). Die Entnahme des Rahmens enthält eine Wiederinstandsetzung des vorigen Rahmens und das Setzen des pc auf einen neuen Wert, nämlich den Rücksprungort, den der im Laufzeitstapel gespeicherte und zum vorangehenden Rahmen gehörende Rücksprungzeiger angibt. Danach geht der Prozess mit Schritt 910 weiter. Das Entnehmen der Einträge aus dem Laufzeitstapel gestattet die Verschachtelung von Methoden zwischen Paketen. D.h., dass eine Methode in einem ersten Paket von einer aufrufenden Methode in einem zweiten anderen Paket aufgerufen werden kann. Als solche kann die Aufrufmethode als die aufgerufene Methode einschließend angesehen werden und dementsprechend kann sie einen Ausnahmebehandler enthalten, der in dem Fall anwendbar ist, wo die aufrufende Methode eine bestimmte Ausnahme nicht fangen kann.
  • Wenn ein einschließendes Methodenelement im Suchschritt 910 lokalisiert wird, wird ein Eintrag in der zugehörigen verketteten Ausnahmebehandlungstabelle (die laufende verkettete Ausnahmebehandlungstabelle), die dem Methodenelement zugehört, wieder aufgefunden (in diesem Fall der erste Eintrag) (930). Bei einer Realisation zeigt die in der Ausnahmeregistratur gespeicherte Startadresse auf die Adresse für den ersten Eintrag in der verketteten Ausnahmebehandlungstabelle für das gegebene Methodenelement. Als solche kann die Ausführung der folgenden Schritte direkt nach Wiederauffinden der Startadresse aus der Ausnahmeregistratur fortgeführt werden.
  • Der Bereich, der dem laufenden, zu prüfenden Eintrag zugeordnet ist, wird geprüft, um festzustellen, ob er den pc umfasst, wo die Ausnahme veranlasst wurde (932). Falls sich keine Übereinstimmung ergibt, wird im Schritt 930 ein nächster Eintrag in der laufenden verketteten Ausnahmebehandlungstabelle aufgesucht. Falls keine Einträge mehr verfügbar sind (934), fährt der Prozess mit Schritt 914 fort und prüft in der zuvor beschriebenen Weise, ob mehr Stapelrahmen zur Entnahme verfügbar sind.
  • Wenn in Schritt 932 der Bereich den pc umfasst, erfolgt eine Prüfung, um festzustellen, ob der vom Ausnahmebehandler spezifizierte Ausnahmetyp mit der veranlassten Ausnahme übereinstimmt (936). Der Typ stimmt überein, wenn der Typ der veranlassten Ausnahme dieselbe Klasse hat, wie die spezifizierte Klasse oder eine Unterklasse der spezifizierten Klasse. Auch dann, wenn der Ausnahmebehandler einer Schlussklausel entspricht, liegt Übereinstimmung vor. Eine Schlussklausel ist ein Konstrukt der Java-Programmiersprache, das es einem Programmierer gestattet, einen Ausnahmebehandler zu definieren, der für alle Klassentypen ausgeführt wird und an sich mit allen Typen veranlasster Ausnahmen übereinstimmt. Wenn der Typ passt, wird der dem laufenden Eintrag zugeordnete Ausnahmebehandler ausgeführt (938) und der Prozess vervollständigt (940). Genauer wird der pc auf der Basis der im laufenden Eintrag für den Ausnahmebehandler gespeicherten Adresse eingestellt (Behandlerversatz 610 von 6) und die Ausführung mit der ersten Anweisung des gefangenen Ausnahmebehandler fortgesetzt.
  • In einer Realisation brauchen nicht alle Einträge in der verketteten Ausnahmebehandlungstabelle vor der Feststellung, dass eine ungefangene Ausnahme veranlasst wurde, getestet werden. Bezogen auf 10a wird nach der Prüfung des Typs im Schritt 936 zusätzlich geprüft, um festzustellen, ob eine andere umfassende Versuchsanweisung in der laufenden Methoden enthalten ist (937). Wie oben beschrieben, spiegelt eine umfassende Versuchsanweisung einen anderen Ausnahmebehandler wieder, dessen Bereich ebenfalls den laufenden pc umfasst. Wenn keine andere einschließende Versuchsanweisung vorliegt, kann der Prozess unmittelbar zu dem Laufzeitstapelentnahmeschritt 914 springen, unabhängig davon, ob andere Einträge in der laufenden verketteten Ausnahmebehandlungstabelle zur Verarbeitung verbleiben.
  • In einer Realisation kann Schritt 937 unter Verwendung des Optimierbits (das codierte hohe Bit des Felds der aktiven Länge 606), das in der verketteten Ausnahmebehandlungstabelle für den laufenden Eintrag gespeichert ist, aufgerufen werden. Genauer wird das höchste Bit der aktiven Länge für den laufenden Eintrag wieder aufgefunden (937a). Eine Prüfung erfolgt, um festzustellen, ob das Bit gesetzt ist (937b). Falls das Bit nicht gesetzt ist (was angibt, dass die umfassende Versuchsanweisung vorhanden ist oder dass weitere Behandler für dieselbe Versuchsanweisung vorliegen), fährt der Prozess mit Schritt 934 fort. Falls das Bit gesetzt ist, fährt der Prozess mit Schritt 914 fort.
  • Diese Erfindung wurde bezogen auf einige spezifische Ausführungsbeispiele beschrieben, wobei die Beschreibung als die Erfindung veranschaulichend und nicht beschränkend anzusehen ist. Verschiedene Modifikationen können den einschlägigen Fachleuten einfallen, ohne vom Umfang der durch die beiliegenden Ansprüche definierten Erfindung abzuweichen.
  • Diese Erfindung ist auf Programme und Methoden anwendbar, die in anderen Programmiersprachen als Java geschrieben sind, die Programmiersprachen einschließen, die in plattformabhängige Codes übersetzt sind. Die beschriebenen Techniken können in anderem Kontext, z.B. auf in „C" oder „Pascal" geschriebene Programme, angewendet werden, wo gleichartige Laufzeitstapelbehandlungen benötigt werden.

Claims (30)

  1. Verfahren, das im Computer zur Verwaltung von Ausnahmen realisiert ist, die während der Ausführung von Methoden (530, 535, 540) in einer oder mehreren Klassen (10) durch eine Machine (49) veranlassbar sind, von denen jede Methode (530, 535, 540) ein Ausnahmebehandlungsfeld (532, 537, 542) enthält, welches dieser Methode zugeordnete Ausnahmebehandler definiert, wobei das Verfahren aufweist: Kombination der Ausnahmebehandlungsfelder (532, 537, 542) für zwei oder mehr Methoden in einer einzigen Ausnahmebehandlungstabelle (600).
  2. Verfahren nach Anspruch 1, das die Kombination sämtlicher Ausnahmebehandlungsfelder (532, 537, 542) für alle Methoden in einer Klasse (10) in einer einzigen Ausnahmebehandlungstabelle (600) enthält.
  3. Verfahren nach Anspruch 1, das die Kombination aller Ausnahmebehandlungsfelder (532, 537, 542) für alle Methoden in allen Klassen (10) in der einzelnen Ausnahmebehandlungstabelle (600) enthält.
  4. Verfahren nach Anspruch 1, das die Kombination aller Ausnahmebehandlungsfelder (532, 537, 542) für alle Methoden in einer JAVA-Paket (545) in der einzelnen Ausnahmebehandlungstabelle (600) enthält.
  5. Verfahren nach Anspruch 1, bei dem eine Methode (530, 535, 540) in einer Klassendatei (10) enthalten ist und der Schritt, der alle Ausnahmebehandlungsfelder (532, 537, 542) kombiniert, die Kombination der Ausnahmebehandlungsfelder (532, 537, 542) für alle Methoden (530, 535, 540) in einer Klassendatei (10) in der Ausnahmebehandlungstabelle (600) enthält.
  6. Verfahren nach Anspruch 1, das weiterhin das Suchen der Ausnahmebehandlungstabelle (600) enthält, wenn eine Ausnahme während der Ausführung einer der Methoden (530, 535, 540) einschließlich der Einordnung (932) einer ersten übereinstimmenden Ausnahme in der einzigen Ausnahmebehandlungstabelle (600) veranlasst wird (904).
  7. Verfahren nach Anspruch 6, bei dem der Suchschritt ein Aufsuchen in der Reihenfolge der Ausnahmebehandlungseinträge aus der Ausnahmebehandlungstabelle (600) und eine Prüfung des Typs (936) und Bereichs (932) jedes Ausnahmebehandlers für den ersten passenden Ausnahmebehandler enthält.
  8. Verfahren nach Anspruch 7, das außerdem einen Suchstopp (934) aufweist, falls ein laufender Ausnahmebehandler nicht passt und der letzte Behandler (937) für das oberste Niveau eines geschützten Codes in einem zugehörigen Verfahren ist.
  9. Verfahren nach Anspruch 1, bei dem die Klassendateien (10) JAVA-Klassendateien sind.
  10. Verfahren nach Anspruch 1, bei dem die Methoden (530, 535, 540) in einer oder mehreren Klassen in einem Paket (545) gruppiert sind, welches eine Paketdatenstruktur ein schließlich eines ersten und zweiten Teils enthält, und das Verfahren das Speichern der Ausnahmebehandlungstabelle in dem ersten Teil (542) des Pakets und sämtlicher Methoden in dem zweiten Teil (554) des Pakets enthält.
  11. Verfahren nach Anspruch 10, bei dem der Kombinationsschritt eine Verkettung der Ausnahmebehandlungsfelder einschließlich das Laden jedes Ausnahmebehandlungsfeldes (532, 542, 537) in den ersten Teil (542) der Paketdatenstruktur in Übereinstimmung mit einer vorbestimmten Ordnung enthält.
  12. Verfahren nach Anspruch 11, bei dem die vorbestimmte Ordnung auf Grund der im zweiten Teil (554) der Paketdatenstruktur gespeicherten Ordnungsmethoden (531, 541, 536) ermittelt wird.
  13. Verfahren nach Anspruch 1, bei dem die Maschine eine virtuelle Maschine (49) ist, die auf einer kapazitätsbeschränkten Vorrichtung realisiert ist.
  14. Verfahren nach Anspruch 13, bei dem die kapazitätsbeschränkte Vorrichtung eine Smartcard (40) ist.
  15. Verfahren nach Anspruch 14, bei dem die Methoden in einer oder mehreren Klassen (10) in einem Paket (545) gruppiert sind und letzteres auf der Smartcard (40) installiert ist.
  16. Verfahren nach Anspruch 15, das außerdem die Erzeugung eines Pakets (545), das eine Paketdatenstruktur einschließlich eines ersten und zweiten Teils enthält und das Verfahren eine Verkettung der Ausnahmebehandlungsfelder (532, 537, 542) für jede der Methoden (531, 536, 541) in einer Ausnahmebehandlungstabelle (600), das Speichern der Ausnahmebehandlungstabelle (600) im ersten Teil (552) des Pakets (545) und sämtlicher Methoden (531, 536, 541) im zweiten Teil (554) des Pakets enthält.
  17. Computerrealisiertes Verfahren zur Verringerung der Speichergröße, die für einen Laufzeitstapel (800) benötigt wird, wenn ein Programm einschließlich des Verfahrens von Anspruch 1 ausgeführt wird, wobei die Methoden in dem Programm enthalten sind, der Laufzeitstapel (800) während der Ausführung des Programms durch eine Maschine zur Speicherung eines oder mehrerer Rahmen (802) in der Laufzeit gehalten wird, von denen jeder Rahmen einen Rücksprungzeiger (806) zu einer Auf rufmethode enthält, welche eine momentan in dem Programm ausgeführte Methode aufrief, wobei dieses Verfahren aufweist: Lokalisieren und Suchen der kombinierten Ausnahmebehandlungstabelle (600), wenn eine Ausnahme während der Ausführung einer der Methoden (531, 536, 541) veranlasst (904) wird, um die Lage der Ausnahmebehandlungsinformation aufzufinden, ohne dass ein Zeiger zur Ausnahmebehandlungsinformation auf dem Laufzeitstapel (800) gespeichert werden muss.
  18. Verfahren nach Anspruch 17, bei dem der Zeiger ein direkter Zeiger zur Ausführungsbehandlungsinformation ist.
  19. Verfahren nach Anspruch 17, bei dem das Programm ein JRVA-Programm ist.
  20. Verfahren nach Anspruch 19, bei dem die Maschine eine virtuelle Maschine (49) ist, die auf einer virtuellen JAVATM-Maschine implementiert ist.
  21. Verfahren nach Anspruch 17, bei dem das Programm ein Paket (545) von Methoden (531, 536, 541) und zwar in einer oder mehreren Klassen (10) enthält und bei dem die virtuelle Maschine (49) in einer kapazitätsbeschränkten Vorrichtung implementiert ist, auf der das Paket installiert und ausführend ist.
  22. Verfahren nach Anspruch 21, bei dem die kapazitätsbeschränkte Vorrichtung eine Smartcard (40) ist.
  23. Verfahren nach Anspruch 21, das außerdem eine Registrierung des Pakets (545) bei der Installation in einem Registrierdienst (700) enthält, welcher einen Zeiger (704) und einen Bereich (706) behält, von denen der Zeiger in der kapazitätsbeschränkten Vorrichtung (704) einen Ort in der einem gegebenen Paket (545) zugeordneten kombinierten Ausnahmebehandlungstabelle (600) angibt und der Bereich (706) einen Adressenbereich in der kapazitätsbeschränkten Vorrichtung definiert, an dem sich die zu dem Paket (545) gehörenden Methoden befinden.
  24. Verfahren nach Anspruch 23, bei dem der Ortsangabeschritt die Ortsangabe eines einer momentan ausgeführten Methode zugeordneten Pakets (545) enthält einschließlich des Vergleichs (910) einer Adresse, an der eine Ausnahme veranlasst wurde, mit dem Bereich für jedes in dem Registrierdienst (700) registrierte Paket und der Suchschritt das Aufsuchen der dem angegebenen Paket zugehörigen kombinierten Ausnahmebehandlungstabelle (600) enthält.
  25. Verfahren zur Umwandlung von Klassendateien (10) in ein gewandeltes Applet (16) zur Ausführung auf einer kapazitätsbeschränkten Vorrichtung, wobei das Verfahren enthält: Empfangen einer oder mehrere Klassendateien (10), die jeweils eine oder mehrere Methoden (531, 536, 541) enthalten, von denen jede ein Ausnahmebehandlungsfeld enthält, welches einen von der Methode heranziehbaren Ausnahmebehandler (532, 537, 542) definiert; Definition einer Datenstruktur (550) zur Speicherung der Methoden und der Ausnahmebehandler für das gewandelte Applet einschließlich eines ersten Teils (552) und eines zweiten Teils (554); Definition einer Ordnungsfolge für die Methode und Laden der Methoden in Übereinstimmung mit der Ordnungsfolge in den zweiten Teil (554) der Datenstruktur; Kombination der Ausnahmebehandlungsfelder für alle Methoden in einer einzelnen Ausnahmebehandlungstabelle (600) einschließlich der Ordnungsfolge der Ausnahmebehandlungsfelder in Übereinstimmung mit der für die Methoden definierten Ordnungsfolge und Speichern der einzelnen Ausnahmebehandlungstabelle in dem ersten Teil (552) der Datenstruktur.
  26. Computerrealisierter Prozess zur Verwaltung von Ausnahmen, die während der Ausführung von zwei oder mehr Methoden in einer oder mehr Klassen durch eine virtuelle Maschine nach Anspruch 6 veranlassbar sind, wobei jede Methode außerdem in einer Klasse enthalten ist.
  27. Computerrealisiertes System zur Verwaltung von Ausnahmen, die während der Ausführung von Methoden in einer oder mehreren Klassen durch eine Maschine veranlassbar sind, wobei das System Befehle zur Ausführung des Verfahrens von Anspruch 1 aufweist.
  28. Computerimplementiertes System zur Verringerung der für einen Laufzeitstapel, wenn ein Programm ausgeführt wird, benötigten Speichermenge, wobei das System Befehle zur Ausführung des Verfahrens von Anspruch 17 aufweist, wobei die Ausnahmebehandlungsinformation für zwei oder mehr Methoden kombiniert ist.
  29. Computerrealisiertes System zur Umwandlung von Klassendateien in ein Umwandlungs-Applet für die Ausführung auf einer kapazitätsbeschränkten Vorrichtung, wobei das System Befehle zur Ausführung des Verfahrens von Anspruch 25 aufweist.
  30. Computerrealisiertes System zur Verwaltung von Ausnahmen, welche während der Ausführung von Methoden in einer oder mehreren Klassen durch eine virtuelle Maschine veranlassbar sind, wobei das System Befehle zur Ausführung des Verfahrens von Anspruch 26 aufweist.
DE60002295T 1999-02-02 2000-02-02 Aufwandslose ausnahmebehandlung Expired - Lifetime DE60002295T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US243107 1999-02-02
US09/243,107 US6848111B1 (en) 1999-02-02 1999-02-02 Zero overhead exception handling
PCT/US2000/002681 WO2000046665A2 (en) 1999-02-02 2000-02-02 Zero overhead exception handling

Publications (2)

Publication Number Publication Date
DE60002295D1 DE60002295D1 (de) 2003-05-28
DE60002295T2 true DE60002295T2 (de) 2004-02-05

Family

ID=22917379

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60002295T Expired - Lifetime DE60002295T2 (de) 1999-02-02 2000-02-02 Aufwandslose ausnahmebehandlung

Country Status (12)

Country Link
US (2) US6848111B1 (de)
EP (1) EP1145106B1 (de)
JP (1) JP2002536742A (de)
KR (1) KR100713738B1 (de)
CN (2) CN100342329C (de)
AT (1) ATE238585T1 (de)
AU (1) AU772849B2 (de)
BR (2) BRPI0007976B1 (de)
CA (1) CA2362000A1 (de)
DE (1) DE60002295T2 (de)
ES (1) ES2195881T3 (de)
WO (1) WO2000046665A2 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
GB0030958D0 (en) * 2000-12-19 2001-01-31 Smart Card Solutions Ltd Compartmentalized micro-controller operating system architecture
US7137103B2 (en) * 2001-03-08 2006-11-14 International Business Machines Corporation Coverage analysis of message flows
DE10129643A1 (de) * 2001-06-20 2003-01-02 Philips Corp Intellectual Pty Verfahren zur Verschlüsselung der Datenübertragung in einer Datenverarbeitungseinheit, insbesondere in einer Smartcard
US7003778B2 (en) * 2001-10-24 2006-02-21 Sun Microsystems, Inc. Exception handling in java computing environments
US8010405B1 (en) 2002-07-26 2011-08-30 Visa Usa Inc. Multi-application smart card device software solution for smart cardholder reward selection and redemption
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US9852437B2 (en) 2002-09-13 2017-12-26 Visa U.S.A. Inc. Opt-in/opt-out in loyalty system
US8626577B2 (en) 2002-09-13 2014-01-07 Visa U.S.A Network centric loyalty system
US8015060B2 (en) 2002-09-13 2011-09-06 Visa Usa, Inc. Method and system for managing limited use coupon and coupon prioritization
US7827077B2 (en) 2003-05-02 2010-11-02 Visa U.S.A. Inc. Method and apparatus for management of electronic receipts on portable devices
DE10324384B3 (de) * 2003-05-28 2004-11-04 Giesecke & Devrient Gmbh Behandlung eines Fehlerereignisses bei der Installation eines Anwendungsprogramms in einem tragbaren Datenträger
US8554610B1 (en) 2003-08-29 2013-10-08 Visa U.S.A. Inc. Method and system for providing reward status
US7051923B2 (en) 2003-09-12 2006-05-30 Visa U.S.A., Inc. Method and system for providing interactive cardholder rewards image replacement
US7669193B1 (en) 2003-09-25 2010-02-23 Lantronix, Inc. Program transformation using flow-sensitive type constraint analysis
US8005763B2 (en) 2003-09-30 2011-08-23 Visa U.S.A. Inc. Method and system for providing a distributed adaptive rules based dynamic pricing system
US8407083B2 (en) 2003-09-30 2013-03-26 Visa U.S.A., Inc. Method and system for managing reward reversal after posting
US7653602B2 (en) 2003-11-06 2010-01-26 Visa U.S.A. Inc. Centralized electronic commerce card transactions
EP1622009A1 (de) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM-Architektur und Systeme
KR100664922B1 (ko) * 2004-08-21 2007-01-04 삼성전자주식회사 자바 보안 기능 개선 방법
CA2604827C (en) 2005-04-18 2012-03-20 Research In Motion Limited Method for handling a detected error in a script-based application
DE102005028066B3 (de) 2005-06-16 2006-12-07 Deutsche Exide Gmbh Polbrücke für eine Batterie
US7730453B2 (en) * 2005-12-13 2010-06-01 Microsoft Corporation Runtime detection for invalid use of zero-length memory allocations
US7904881B2 (en) * 2006-07-26 2011-03-08 Intel Corporation Using a virtual stack for fast and composable stack cutting
US8866038B2 (en) * 2007-01-23 2014-10-21 Hypertherm, Inc. Consumable component parts for a plasma torch
US8762953B2 (en) * 2007-07-12 2014-06-24 The Mathworks, Inc. Exception-based error handling in an array-based language
CN101256612B (zh) * 2008-04-01 2010-11-03 北京飞天诚信科技有限公司 基于.Net卡的程序保护方法和系统
US7992781B2 (en) 2009-12-16 2011-08-09 Visa International Service Association Merchant alerts incorporating receipt data
US8429048B2 (en) 2009-12-28 2013-04-23 Visa International Service Association System and method for processing payment transaction receipts
CN102004694B (zh) * 2010-11-26 2013-04-24 北京握奇数据系统有限公司 一种基于Java的异常处理方法和异常处理装置
WO2012103955A1 (en) * 2011-02-04 2012-08-09 Siemens Aktiengesellschaft A system and a method for analyzing a piece of code
US9501301B2 (en) * 2015-02-26 2016-11-22 Nxp B.V. Flexible instruction sets for obfuscated virtual machines
US10705850B2 (en) * 2017-10-11 2020-07-07 Microsoft Technology Licensing, Llc Stack frame unwinding for exception handling
US11042429B2 (en) 2019-01-07 2021-06-22 International Business Machines Corporation Selective stack trace generation during java exception handling
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
US11042422B1 (en) 2020-08-31 2021-06-22 Microsoft Technology Licensing, Llc Hybrid binaries supporting code stream folding
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
CN114968282A (zh) * 2022-05-20 2022-08-30 北京握奇智能科技有限公司 一种异常处理执行的优化方法和系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE182014T1 (de) * 1989-09-01 1999-07-15 Amdahl Corp Programmierbarer rechner mit automatischer übersetzung zwischen quell - und zielkode mit versionüberwachung
US5367685A (en) 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
ATE152539T1 (de) * 1994-02-08 1997-05-15 Belle Gate Invest Bv Datenauswechselsystem mit tragbaren datenverarbeitungseinheiten
US5605893A (en) * 1994-03-15 1997-02-25 Children's Hospital Of Los Angeles Method of using a therapeutic food composition to diminish blood sugar fluctuations in diabetic patients
US5628016A (en) * 1994-06-15 1997-05-06 Borland International, Inc. Systems and methods and implementing exception handling using exception registration records stored in stack memory
US5668999A (en) * 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5732263A (en) 1995-10-03 1998-03-24 International Business Machines Corporation Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
US5815718A (en) 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US5761513A (en) * 1996-07-01 1998-06-02 Sun Microsystems, Inc. System and method for exception handling in dynamically linked programs
EP0932865B1 (de) 1996-10-25 2002-08-14 SCHLUMBERGER Systèmes Verwendung einer hohen programmiersprache in einem mikrokontroller
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US6496926B1 (en) * 1997-05-06 2002-12-17 Microsoft Corporation Computer-implemented paramaterless language with exception handler
US6009517A (en) * 1997-10-06 1999-12-28 Sun Microsystems, Inc. Mixed execution stack and exception handling
US6349344B1 (en) 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system

Also Published As

Publication number Publication date
BR0007976A (pt) 2001-10-30
AU3480400A (en) 2000-08-25
JP2002536742A (ja) 2002-10-29
CN1150451C (zh) 2004-05-19
US20050108736A1 (en) 2005-05-19
CN100342329C (zh) 2007-10-10
CA2362000A1 (en) 2000-08-10
EP1145106B1 (de) 2003-04-23
US6848111B1 (en) 2005-01-25
ATE238585T1 (de) 2003-05-15
EP1145106A2 (de) 2001-10-17
AU772849B2 (en) 2004-05-06
DE60002295D1 (de) 2003-05-28
BRPI0007976B1 (pt) 2018-09-11
WO2000046665A2 (en) 2000-08-10
ES2195881T3 (es) 2003-12-16
CN1534465A (zh) 2004-10-06
CN1346463A (zh) 2002-04-24
WO2000046665A3 (en) 2000-12-21
KR100713738B1 (ko) 2007-05-02
US7461386B2 (en) 2008-12-02
KR20010103758A (ko) 2001-11-23

Similar Documents

Publication Publication Date Title
DE60002295T2 (de) Aufwandslose ausnahmebehandlung
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE60031370T2 (de) Tokenbasierte verknüpfung
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69533005T2 (de) Bytecodeprogramminterpreter, Verfahren und Anordnung mit Vorprüfung von Datentyprestriktionen
DE19959758A1 (de) Bestimmung der Art und der Genauigkeit von lokalen Variablen bei vorhandenen Subroutinen
DE69721634T2 (de) Computersystem und Verfahren für die Ausführung von mehreren Threads mit reduziertem Runtime-Speicherbedarf
DE69724322T2 (de) Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung
DE60103521T2 (de) Vorladen von klassen in einer datenverarbeitungseinrichtung ohne virtueller speicherverwalter
DE60028069T2 (de) Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen
DE2458300A1 (de) Datenverarbeitungssystem zur verarbeitung verschiedener datenformate
WO2011085789A1 (de) Verfahren zum komprimieren von bezeichnern
DE69931685T2 (de) Verfahren und Gerät zum Implementieren von schnellen Subclass- und Subtyp-Überprüfungen
DE102004057490B4 (de) Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes
DE60224937T2 (de) Verfahren und anordnung zum verknüpfen von verwandelten appletdateien
DE102018127317B3 (de) Verfahren und vorrichtungen zur computerimplementierten erzeugung eines ausführbaren programmcodes und zur ausführung eines ausführbaren programmcodes
DE19633002A1 (de) Verfahren und Einrichtung zum Behandeln von Ausnahmebedingungen
DE69911104T2 (de) Statische Bindung von dynamisch abgesendeten Anrufen in Anwesenheit von dynamischer Verknüpfung und Ladung
DE69911660T2 (de) Laden von objektorientierten rechnerprogrammen
DE102019105418B3 (de) Verfahren zum Erzeugen einer Darstellung einer Programmlogik, Dekompiliervorrichtung, Rekompiliersystem und Computerprogrammprodukte
WO2005069136A1 (de) Ausführung eines programms durch eine virtuelle maschine
EP1516245B1 (de) Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: SUN MICROSYSTEMS, INC., SANTA CLARA, CALIF., US

8364 No opposition during term of opposition