[go: up one dir, main page]

DE69814174T2 - Java laufzeitsystem mit veränderter sammlung von konstanten - Google Patents

Java laufzeitsystem mit veränderter sammlung von konstanten Download PDF

Info

Publication number
DE69814174T2
DE69814174T2 DE69814174T DE69814174T DE69814174T2 DE 69814174 T2 DE69814174 T2 DE 69814174T2 DE 69814174 T DE69814174 T DE 69814174T DE 69814174 T DE69814174 T DE 69814174T DE 69814174 T2 DE69814174 T2 DE 69814174T2
Authority
DE
Germany
Prior art keywords
constant pool
linking
information
java runtime
package
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.)
Revoked
Application number
DE69814174T
Other languages
English (en)
Other versions
DE69814174D1 (de
Inventor
Michael Baentsch
Peter Buhler
Marcus Oestreicher
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=8231635&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69814174(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69814174D1 publication Critical patent/DE69814174D1/de
Publication of DE69814174T2 publication Critical patent/DE69814174T2/de
Anticipated expiration legal-status Critical
Revoked legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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

Landscapes

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

Description

  • BEREICH DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das dynamische Herunterladen von Code und die Verknüpfung (linking) in Java-Laufzeitumgebungen mit Ressourcen-Engpass (resource constraint Java runtime environments) wie zum Beispiel JavaCards.
  • STAND DER TECHNIK
  • In einem herkömmlichen Java-System werden Verweise auf Klassenstrukturen (interne und externe) mittels einer indirekten Namenssuche über einen sogenannten Konstantenpool aufgelöst. Eine solche Vorgehensweise kann nur in einem System angewendet werden, das genügend Ressourcen im Sinne von Verarbeitungsleistung und internen Ressourcen bereitstellt.
  • In einem Laufzeitsystem mit Ressourcen-Engpass (z. B. JavaCard) ist diese Vorgehensweise nicht vielversprechend. Stattdessen könnte man aufgelöste Verweise auf Klassenstrukturen verwenden, so dass Verweisoperatoren überflüssig werden und die Pflege des Konstantenpools vermieden werden kann.
  • Das Auflösen der Verweise (Verknüpfung) ist der Gegenstand der vorliegenden Erfindung.
  • Es ist eine Aufgabe der vorliegenden Erfindung, in Java-Laufzeitumgebungen mit Ressourcen-Engpass eine wirksame Verknüpfung zu erzielen.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine platzsparende und laufzeiteffiziente Verknüpfung in Java-Lauffzeitumgebungen mit Ressourcen-Engpass zu erzielen, während gleichzeitig ein spätes Binden des Codes ermöglicht wird.
  • Diese Aufgaben werden von einem Java-Laufzeitsystem nach Anspruch 1 und einem Verfahren nach Anspruch 3 gelöst.
  • Bevorzugte Ausführungsformen sind in den. abhängigen Ansprüchen dargelegt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt die Verknüpfung mit dem von JavaSoft vorgeschlagenen CAP-Dateiformat.
  • 2 zeigt die Verknüpfung durch Offset mit dem hier vorgeschlagenen Dateiformat.
  • 3 zeigt die Verknüpfung durch Name mit dem hier vorgeschlagenen Dateiformat.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Folgenden wird ein allgemeiner Überblick über die vorliegende Erfindung gegeben, und es werden Aspekte der Ausführung angesprochen. Java ist eine Programmiersprache und -umgebung, die von Sun Microsystems, Inc., 2550 Garcia Ave., Mountain View, CA 94043-1100, USA, entwickelt wurde; der Begriff "Java" ist ein Warenzeichen dieses Unternehmens.
  • Da sich die vorliegende Beschreibung auch mit Einzelheiten der Ausführung befasst, wird davon ausgegangen, dass der Fachmann mit den gründlegenden Mechanismen der "Java Virtual Machine" (JVM) und ihrer Ausführung vertraut ist. Die Programmiersprache Java und die Ausführung der JVM wurden von J. Goslin, B. Joy und G. Tele in "The Java Language Specification" und von T. Lindholm und F. Yellin in "The Java Virtual machine Specification", beide erschienen bei Addison-Wesley Publishing Co., 1996, umfassend beschrieben. Es sei jedoch angemerkt, dass sich die virtuelle Java-Card-Maschine, die hier als Java-Cord VM bezeichnet wird, in mehreren Aspekten unterscheidet, da nur eine Teilmenge des Bytecodes sowie zusätzliche Bytecodes verwendet werden.
  • 1.0 Von JavaSoft vorgeschlagenes CAP-Dateiformat
  • Das CAP-Dateiformat, wie es von JavaSoft vorgeschlagen wurde, teilt eine CAP-Datei in mehrere Teile auf. Eine CAP-Datei enthält hauptsächlich einen Text- und einen Datenteil. Der Textteil enthält die Klassenstrukturen, die Methodenstrukturen und die Bytecode-Befehle. Der Datenteil enthält die statischen Felder des Cardlet.
  • Der Textteil referenziert alle Symbole (Klassen, Methoden usw.), deren tatsächliche Adressen vor dem Verknüpfungszeitpunkt nicht bekannt sind, mittels eines Offset in den Konstantenpool. Für jedes dieser Symbole enthält der Konstantenpool die AID für das Zielpaket und den Offset dieses Symbols in, diesem Zielpaket (d. h. dem Paket, mit dem eine Verknüpfung stattfindet). Der Konstantenpool stellt diese Offsets für alle importierten Symbole (die Symbole, die in anderen Paketen angegeben sind) und für alle exportierten Symbole (die Symbole, die in dem Cardlet, das geladen wird, angegeben sind und auf die darin zugegriffen wird) bereit.
  • Der Aufbau des Textteils, des Datenteils und des Konstantenpools stellt genügend Informationen zur Ausführung eines Cardlet bereit. Nachdem ein Cardlet geladen wurde, könnte das Verknüpfungsprogramm (Linker) den Konstantenpool schrittweise durchlaufen und die Offsets der Symbole in ihre Zielpakete durch ihre realen Adressen ersetzen. Das Verrknüpfungsprogramm muss lediglich das bestimmte Paket mittels der gegebenen AID suchen, seine Anfangsadresse zum Symbol-Offset hinzufügen und diese Information in den Konstantenpool zurückspeichern. Die Java-Card VM kann dann diese Adressen im Konstantenpool für die Interpretation nutzen. Der Konstantenpool selbst wird zur Laufzeit jedoch nicht benötigt. Tatsächlich würde er einen weiteren überflüssigen Verweisoperator erforderlich machen, um die Adresse eines Symbols während der Interpretation zu finden. Außerdem nimmt der Konstantenpool unnötigerweise Platz auf der Karte in Anspruch. Das JavaSoft-CAP-Dateiformat verwendet daher Berichtigungstabellen (fixup tables) für die einzelnen Teile, damit der Konstantenpool nach dem Verknüpfungsvorgang nicht mehr notwendig ist. Die Berichtigungstabelle enthält alle Positionen in dem Textteil, an denen eine Verschiebung (relocation) stattfinden muss. Das Verknüpfungsprogramm durchläuft die Berichtigungstabelle und übernimmt den Offset an dieser Position in den Konstantenpool. Dann löst es die Adresse dieses Symbols auf und speichert sie an der ursprünglichen Position im Textteil. Der Übersetzer (Interpreter) kann diese Adressen dann zur Laufzeit direkt verwenden, und der Konstantenpool kann daher nach dem Verknüpfungsprozess entfernt werden. Die einzigen Teile, die nach dem Verknüpfungsprozess auf der Karte verbleiben, sind der Text- und der Datenteil.
  • Das Verknüpfen von Cardlets mit vorher berechneten und fest codierten Offsets in Zielpakete lässt ein kompaktes System zu. Jedoch bietet es nicht genügend Flexibilität, um verschiedene Ausführungen von Systemklassen und festgelegte Erweiterungen auf verschiedenen Karten zu ermöglichen. Beispielsweise ist es unwahrscheinlich, dass ein Cardlet, das gegen die Systemklassen von IBM und eine Erweiterung von JavaSoft getauscht wurde, auf einer Karte läuft, bei der das System-Cardlet von JavaSoft und das Erweiterung-Cardlet von IBM stammen. Der Hauptgrund hierfür besteht darin, dass die Offsets von einzelnen Klassen und Methoden und die Feld-Offsets von Instanzen von Ausführungen zu Ausführung unterschiedlich sind.
  • Die folgende Erfindung fußt auf den Gedanken des aktuellen Vorschlags von JavaSoft, wobei es diesen durch einen zuätzlichen einfachen und flexiblen symbolischen Verknüpfungsmechanismus verbessert.
  • 2.0 Erfindungsgemäßes CAP-Dateiformat
  • Das CAP-Dateiformat gemäß der vorliegenden Erfindung teilt die CAP-Datei ebenfalls in verschiedene Teile auf. Der Textteil enthält die Klassenstrukturen, die Methodenstrukturen und die Bytecode-Befehle, der Datenteil wieder die statischen Felder. Die CAP-Datei legt die notwendigen Verschiebeinformationen ebenfalls in Berichtigungstabellen ab. Es gibt eine Berichtigungstabelle für jedes Paket, mit dem das Cardlet verknüpft wird (d. h. das Zielpaket).
  • Die Berichtigungstabelle enthält ebenfalls die Position im Texa- oder Datenteil, an der eine Verschiebung stattfinden muss. Im einfachen Fall werden diese Stellen ebenfalls um einen vorher berechneten Offset in vertrauenswürdige und bekannte Zielpakete verschoben. In diesem Fall sucht das Verknüpfungsprogramm die Anfangsadresse des Pakets mit der gegebenen Ziel-AID (Target AID), fügt den Offset in das Zielpaket hinzu und speichert diesen Wert an der ursprünglichen Position im Textteil. Der Offset in das Zielpaket kann entweder in der Berichtigungstabelle oder im Textteil an der Verschiebeadresse abgelegt werden, um die Berichtigungstabelle kleiner zu halten. Die Verschiebung um einen Offset kann für die meisten Verweise innerhalb des geladenen Cardlet selbst immer angewendet werden. Dem Umsetzer (Converter) ist die vorherige Berechnung dieser Offsets gestattet, ohne jedoch die Kompatibilität zu beeinträchtigen.
  • Aus Gründen der Systemintegrität sollten Verweise auf andere externe Pakete nicht mittels vorher berechneter Offsets verknüpft werden. Stattdessen sollte während des Verknüpfungsprozesses ein Name oder Bezeichner für Verweise auf andere Pakete verwendet werden. Diese Namen und ihre zugehörigen Werte müssen auf der Karte nur für Pakete gespeichert werden, die von mehreren Applets gemeinsam benutzt werden. Da diese Tabellen von Name/Wert-Paaren so klein wie möglich sein sollten, schränkt dieses CAP-Dateiformat die Namensgebung von Elementen von Klassendateien zwar ein, ermöglicht aber immer noch eine herstellerspezifische Umsetzung von unterschiedlichen Spezifikationen:
    • – öffentliche Klassen: müssen benannt sein und exportiert werden können.
    • – öffentliche statische Methoden und Konstruktoren: ebenso
    • – öffentliche statische Felder: ebenso
    • – virtuelle Methoden: Der Übersetzer findet eine virtuelles Methode über einen Index in die virtuelle Methodentabelle. Diese Indexe und die virtuelle Methodentabelle müssten auf der Karte aufgelöst werden, wenn die JavaCard-Umgebung das späte Binden des Codes von virtuellen Methoden, das bei Java Standard ist, unterstützen wollte. Während der Erstellung der Methodentabelle muss das Verknüpfungsprogramm entscheiden, ob eine Methode eine andere Methode in der Methodentabelle erbt. Da diese Methoden in verschiedenen Cardlets festgelegt werden könnten, muss ein globales Namensgebungsschema für Methoden eingeführt werden, um zu entscheiden, ob zwei Methoden denselben Typ haben. Da das späte Binden des Codes von virtuellen Methodenaufrufen ein globales Namensgebungsschema und zusätzliche Ressourcen auf der Karte erforderlich macht, um virtuelle Methoden aufzulösen und zu benennen, wird es von dem erfindungsgemäßen CAP-Dateiformat nicht unterstützt. Aber selbst mit dieser Einschränkung bleibt genügend Platz für herstellerspezifische Ausführungen von Kernpaketen und Erweiterungen. Der Programmierer kann private oder statische Methoden und Klassen uneingeschränkt hinzufügen. Er kann auch nichtprivate Instanzmethoden hinzufügen, wenn sie nicht geerbt und als endgültig deklariert werden. Der Umsetzer kann dann Aufrufe dieser Methoden durch Direktaufrufe ersetzen.
    • – Instanzfelder: Die Anzahl und die Arten von Instazfeldern in einer Klasse werden gewöhnlich nicht mittels Spezifikation festgelegt, und so gibt es bei den Ausführungen verschiedener Hersteller Abweichungen. Daher muss der Vorschlag für das CAP-Dateiformat das Binden von Feld-Offsets ansprechen. Die Verwendung von Feldern in Bezug auf den Verknüpfungsprozess kann in die folgenden drei Kategorien gegliedert werden:
    • – vorher berechnete Feld-Offsets Ein Befehl "get-/put-field" referenziert ein Feld, dessen Klasse und dessen gesamte Superklassen in dem Cardlet festgelegt werden, in dem es enthalten ist. Der Offset dieses Feldes kann dann vom Umsetzer vorher berechnet werden und braucht nicht während des Ladevorgangs verknüpft zu werden. Wenn es eine Vereinbarung dahingehend gibt, dass die Objektklasse keine Felddeklarationen enthält, fallen viele Feldzugriffe in diese Kategorie.
    • – Zugriff auf Felder von innerhalb des Cardlet befindlichen Klassen mit einer oder mehreren beliebigen Superklasse(n), die sich außerhalb des Cardlet befinden. Dieser Fall muss von einem CAP-Dateiformat unterstützt werden, damit Klassen, die in getrennten Paketen festgelegt werden, in Subklassen unterteilt werden können. Der Umsetzer kann den Offset des Feldes im Verhältnis zur Instanzgröße der außerhalb des Cardlet befindlichen Superklasse berechnen und diesen wert in der CAP-Datei speichern. Während des Verknüpfungsprozesses muss der tatsächliche Offset des Feldes auf der Grundlage der Größe der Basisklasse erneut berechnet werden. Dasselbe kann für das Instanzgrößenelement der innerhalb des Cardlet befindlichen Klasse durchgeführt werden.
    • – Zugriff auf Felder in außerhalb des Cardlet befindlichen Superklassen oder in einer beliebigen externen Klasse. Instanzfelder werden zwar selten als öffentliche Felder, häufig aber als geschützte Felder deklariert. Der Zugriff auf geschützte Felder könnte durch die Festlegung von "protected set-/get-field"-Methoden immer gewährt werden, doch gestattet das vorgeschlagene CAP-Dateiformat auch einen direkten Zugriff auf solche als geschützt oder öffentlich deklarierten Felder. Ein Paket, das ein geschütztes oder öffentliches Instanzfeld exportiert, muss einen Namen und den Offset für ein solches Feld enthalten, um eine symbolische Verknüpfung zu ermöglichen.
  • Ein Paket, das Klassen, Methoden oder Felder exportiert, enthält einen Konstantenpool, dessen Einträge die Art (Klasse usw.), den Namen und den Wert für dieses Symbol enthalten. Da das CAP-Dateiformat kein globales Namensgebungsschema zu unterstützen braucht, können die Namen für die zugehörigen Symbole ohne weiteres festgelegt werden. Die Symbole können von 0 bis n nummeriert und zusammen mit einer Spezifikation der Anwendungsprogrammierschnittstelle (API) ausgegeben werden. Der Ausführende einer solchen Spezifikation kann nach wie vor weitere Klassen usw. exportieren, indem er neue Namen wählt und dabei bei n + 1 beginnt.
  • 3 zeigt das symbolische Binden eines Applets an ein Zielpaket. Die Einträge in der Berichtigungstabelle enthalten die Art der Verschiebung (siehe nachstehend), einen Offset in den Textteil, in den verschoben werden soll, und den Namen des Symbols (der aus Platzgründen auch an der Position, die verschoben werden soll, gespeichert werden könnte). Bei dem vorgeschlagenen Namensgebungsschema kann der Name als Index in den Konstantenpool des Zielpakets verwendet werden. Die Einträge im Konstantenpool enthalten die Art des Eintrags, den Namen und den zugehörigen Wert. Das Verknüpfungsprogramm verschiebt die Einträge in der Berichtigungstabelle in Abhängigkeit von der Art des Eintrags:
    • – Eine Methode muss verschoben werden: Das Konstantenpool-Element (constant: pool item) des Zielpakets mit dem gegebenen Namen muss vom Typ "Methode" sein. Der Wert muss ein Offset in das Zielpaket sein, in dem die Methode festgelegt ist. Das Verknüpfungsprogramm berechnet die Adresse der Methode und fixiert den Textteil an dem bestimmten Offset.
    • – Eine Klasse muss verschoben werden: wie oben, außer dass das Konstantenpool-Element mit dem Symbolindex und dem Namen vom Typ "Klasse" sein muss.
    • – Ein statisches Feld muss verschoben werden: wie oben, außer dass das Konstantenpool-Element mit dem Symbolindex und dem Namen vom Typ "statisches Feld" sein muss.
    • – Ein relativer Offset eines Instanzfelds oder ein relativer Wert einer Klasseninstanzgröße muss verschoben werden: Das Konstantenpool-Element des Zielpakets mit dem gegebenen Namen muss vom Typ "Klasse" sein. Das Verknüpfungsprogramm berechnet die Adresse der Zielklasse und holt die Klasseninstanzgröße (Letztere ist ein Element der Klassenstruktur). Das Verknüpfungsprogramm fügt die Instanzgröße zu dem Wert hinzu, der am Textteil-Offset angegeben ist, und ersetzt Letzteren durch die Summe.
    • – Ein absoluter Feldzugriff auf eine nicht festgelegte Klasse: Das Konstantenpool-Element des Zielpakets mit dem gegebenen Namen muss vom Typ "Instanzfeld" sein. Der Wert dieses Elements ist der absolute Offset dieses Felds in eine Instanz seiner Klasse.
  • Wenn das geladene Cardlet ein gemeinsam benutztes Paket ist und geschützte oder öffentliche Felder exportiert, verschiebt das Verknüpfungsprogramm deren Einträge ebenfalls in den Konstantenpool. Ihre realen Offsets werden in der gleichen Weise wie relative Offsets von Instanzfeldern verschoben.
  • Die Berichtigungstabellen können entfernt werden, sobald der Verknüpfungsprozess abgeschlossen ist. Applets brauchen keinen Konstantenpool, nur Pakete, die von mehreren Applets gemeinsam benutzt werden können, brauchen den Konstantenpool zur zukünftigen Verwendung. Die Größe des Konstantenpools hängt von der Anzahl der exportierten Elemente und der Größe eines Elements ab. Ein Konstantenpool für das aktuelle JavaCard-System benötigt derzeit ca. 160 Elemente. Ein Element eines Konstantenpools enthält ein Typ-Feld, einen Namen und einen Wert, die in 4 Byte gespeichert werden können (bei dem vorgeschlagenen Namensgebungsschema könnte dies sogar auf drei Byte verringert werden). Dies ergibt eine Größe eines Konstantenpools von 720 Byte für alle Systemklassen.
  • Unterschiede zum Vorschlag von JavaSoft:
    • – Der JavaSoft-Konstantenpool unterscheidet derzeit nicht zwischen intern festgelegten und extern festgelegten Elementen. Dies macht es schwierig, diejenigen Elemente des Konstantenpools zu entfernen, die intern festgelegte Elemente abdecken.
    • – Die Feld-Offsets in den "get-/put-field"-Befehlen und das Instanzgrößenfeld in der Klassenstruktur sind nur 8 Bit breit. Daher ist es derzeit nicht möglich, diese Werte als Indexe in den Konstantenpool zu verwenden, an denen Informationen gespeichert werden könnten, um den Offset eines Feldes während des Verknüpfungsprozesses zu binden.
  • Aufgrund dieser beiden Einschränkungen bedarf der aktuelle Vorschlag von JavaSoft Verbesserungen, damit ein notwendiges einfaches Namensgebungsschema – wie das hier vorgeschlagene – möglich wird.
  • 3.0 Anhang
  • 3.1 Kleinere Erweiterungen
  • In manchen Umgebungen gibt es möglicherweise überhaupt keinen Bedarf an oder keinen Platz für symbolische Informationen auf der Karte, beispielsweise reicht es unter Umständen aus, während des Verknüpfungsprozesses nur vorher berechnete Offsets zu verwenden. Das CAP-Dateiformat gemäß der vorliegenden Erfindung lässt sich in dieser Richtung auf sichere Weise erweitern:
    • – Ein Paket oder Applet enthält nicht nur eine Versionsnummer, sondern auch die Kennung (ID) des Herstellers (oder eine Ausführungs-I.D).
    • – Die Einträge in den Berichtigungstabellen, die auf Elemente des Konstantenpools verweisen, enthalten auch die Offsets, die der Umsetzer während der Umsetzzeit berechnen könnte.
    • – Zu Beginn des Herunterladens prüft der Lader (Loader), ob die von dem Applet benötigten Pakete von demselben Hersteller stammen (z. B., ob sie genauso ausgeführt sind) wie diejenigen, die gerade auf der Karte installiert sind. Wenn ja, verwendet der Lader die Offsets in die Applet-CAP-Datei während des Verknüpfungsprozesses. Andernfalls schlägt das Herunterladen fehl.
  • 3.2 Spezifikationen für referenzierte Elemente des CAP-Dateiformats
  • Es ist nicht Zweck dieser ausführlichen Beschreibung, den Inhalt einer CAP-Datei genau anzugeben. Vielmehr wird darin ausführlich erörtert, was sich in der CAP-Datei befinden sollte und befinden muss, wobei mit dem Vorschlag von JavaSoft begonnen wird. Dennoch geben wir auch formellere Spezifikationen der in dieser Beschreibung erwähnten Elemente des CAP-Dateiformats in C-ähnlichen Deklarationen an. Diese werden hier der Klarheit halber und in nichtoptimierter Form aufgeführt:
    Figure 00130001
    Figure 00140001
    Figure 00150001

Claims (6)

  1. Java-Laufzeitsystem, das einen stapelspeicherbasierten Interpreter (Übersetzer) umfasst, der ein Programm ausführt, das Bytecodes und Klassenstrukturen umfasst, wobei das System des Weiteren einen veränderten Konstantenpool mit internen Informationen, die nur während des Verknüpfens von Nutzen sind, und mit externen Informationen, die für das späte Binden des Code aufzubewahren sind, umfasst, wobei die internen Informationen nach der Verknüpfung aus dem veränderten Konstantenpool entfernt werden.
  2. Java-Laufzeitsystem nach Anspruch 1, bei dem es sich um eine JavaCard handelt.
  3. Verfahren zum Einführen von neuem Code in ein Java-Laufzeitsystem, das einen stapelspeicherbasierten Interpreter zur Ausführung eines Pakets umfasst, das Bytecodes und Klassenstrukturen umfasst, wobei das Verfahren die folgenden Schritte umfasst: – internes Verknüpfen des neuen Code mit dem Paket, das in dem System vorhanden ist, wobei der Offset des neuen Code in Bezug auf sich selbst durch einen Verweis ersetzt wird, der erst zum Verknüpfungszeitpunkt bekannt ist, – Auflösen von externen Verknüpfungen durch die Verwendung von symbolischen Informationen wie zum Beispiel Namen, die in einem Konstantenpool des Pakets enthalten sind, – Entfernen von zumindest denjenigen Informationen aus dem Konstantenpool, die zum Austausch gegen die Verweise verwendet wurden, welche erst zum Verknüpfungszeitpunkt bekannt sind.
  4. Verfahren nach Anspruch 3, wobei auch Informationen, die zur Verknüpfung mit externen Paketen verwendet werden, aus dem Konstantenpool entfernt werden.
  5. Verfahren nach Anspruch 3, wobei dies in dem Konstantenpool verbleibenden Informationen anderen Paketen und Applets, die zu einem späteren Zeitpunkt heruntergeladen werden, den ordnungsgemäßen Zugriff auf den neuen Code, d. h. das späte Binden des Code, ermöglichen.
  6. Verfahren nach Anspruch 3, wobei das Java-Laufzeitsystem eine JavaCard ist.
DE69814174T 1998-03-23 1998-11-12 Java laufzeitsystem mit veränderter sammlung von konstanten Revoked DE69814174T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP98105179 1998-03-23
EP98105179 1998-03-23
PCT/IB1998/001799 WO1999049392A1 (en) 1998-03-23 1998-11-12 Java runtime system with modified constant pool

Publications (2)

Publication Number Publication Date
DE69814174D1 DE69814174D1 (de) 2003-06-05
DE69814174T2 true DE69814174T2 (de) 2004-03-04

Family

ID=8231635

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69814174T Revoked DE69814174T2 (de) 1998-03-23 1998-11-12 Java laufzeitsystem mit veränderter sammlung von konstanten

Country Status (13)

Country Link
US (1) US6792612B1 (de)
EP (1) EP1066562B1 (de)
JP (1) JP3632598B2 (de)
KR (1) KR100404785B1 (de)
CN (1) CN1109971C (de)
CA (1) CA2322686A1 (de)
CZ (1) CZ20003437A3 (de)
DE (1) DE69814174T2 (de)
HK (1) HK1033700A1 (de)
HU (1) HUP0101368A3 (de)
MY (1) MY124662A (de)
PL (1) PL193009B1 (de)
WO (1) WO1999049392A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6968549B1 (en) * 1999-07-02 2005-11-22 Beryl Technical Assays Llc Method and system for dynamically loading data structures into memory with global constant pool
US7150005B2 (en) * 1999-07-02 2006-12-12 Beryl Technical Assays, Llc Method and system for global constant management for memory
KR100319755B1 (ko) * 1999-12-02 2002-01-05 오길록 내장형 자바가상머신을 위한 바이트코드 압축 방법
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
US7080359B2 (en) 2002-01-16 2006-07-18 International Business Machines Corporation Stack unique signatures for program procedures and methods
US7024657B2 (en) * 2000-02-21 2006-04-04 Matsushita Electric Industrial Co., Ltd. Program generation apparatus for program execution system, replaces variable name in each class file by assigned offset number so that same offset numbers are assigned to non-dependent variables with same variable name
FR2815801B1 (fr) * 2000-10-20 2004-10-29 Trusted Logic Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes
US6779732B2 (en) 2001-08-31 2004-08-24 Schulumberger Malco, Inc. Method and apparatus for linking converted applet files
FR2831684B1 (fr) * 2001-10-31 2004-03-05 Gemplus Card Int Installation de programme compile notamment dans une carte a puce
US7131121B2 (en) * 2001-11-14 2006-10-31 Axalto, Inc. Method and apparatus for linking converted applet files without relocation annotations
US7114152B2 (en) 2002-01-08 2006-09-26 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US7272827B2 (en) 2002-04-03 2007-09-18 International Business Machines Corporation Statically detecting externally referenced interfaces of a program
CA2507371C (en) * 2002-11-29 2012-01-24 Research In Motion Limited Method for generating interpretable code for storage in a device having limited storage
FR2864650B1 (fr) * 2003-12-24 2006-03-24 Trusted Logic Procede de mise a jour d'applications pour carte a puce
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US7886281B2 (en) * 2004-03-30 2011-02-08 Symantec Corporation System and methods for cross-tier transaction tracing
US7356811B2 (en) * 2004-07-08 2008-04-08 International Business Machines Corporation Method and apparatus for referencing a constant pool in a java virtual machine
DE102004058882A1 (de) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
CA2889724C (en) 2009-12-21 2021-06-08 Kik Interactive Inc. Systems and methods for accessing and controlling media stored remotely
US9195568B2 (en) * 2011-02-28 2015-11-24 Typemock Ltd. Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US9846631B2 (en) * 2011-02-28 2017-12-19 Typemock Ltd. Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
CN103677778B (zh) * 2012-09-18 2016-09-14 北京中电华大电子设计有限责任公司 一种CAP文件Classref常量的解析方法
US9223555B2 (en) * 2013-11-07 2015-12-29 Netronome Systems, Inc. Hierarchical resource pools in a linker
US10268465B2 (en) * 2016-10-24 2019-04-23 International Business Machines Corporation Executing local function call site optimization

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291601A (en) 1989-06-01 1994-03-01 Hewlett-Packard Company Shared libraries implemented with linking program loader
US5594903A (en) * 1991-02-26 1997-01-14 Lynx Real-Time Systems, Inc. Operating System architecture with reserved memory space resident program code identified in file system name space
US5581768A (en) 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US6112025A (en) * 1996-03-25 2000-08-29 Sun Microsystems, Inc. System and method for dynamic program linking
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
CN1183449C (zh) * 1996-10-25 2005-01-05 施卢默格系统公司 用微控制器使用高级程序设计语言
US6366876B1 (en) * 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications

Also Published As

Publication number Publication date
HUP0101368A2 (hu) 2001-08-28
PL342994A1 (en) 2001-07-16
HUP0101368A3 (en) 2004-04-28
EP1066562B1 (de) 2003-05-02
EP1066562A1 (de) 2001-01-10
KR20010041716A (ko) 2001-05-25
CN1109971C (zh) 2003-05-28
CZ20003437A3 (cs) 2001-11-14
US6792612B1 (en) 2004-09-14
DE69814174D1 (de) 2003-06-05
CN1286770A (zh) 2001-03-07
JP3632598B2 (ja) 2005-03-23
KR100404785B1 (ko) 2003-11-07
PL193009B1 (pl) 2007-01-31
WO1999049392A1 (en) 1999-09-30
HK1033700A1 (en) 2001-09-14
CA2322686A1 (en) 1999-09-30
MY124662A (en) 2006-06-30
JP2002508544A (ja) 2002-03-19

Similar Documents

Publication Publication Date Title
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69707752T2 (de) Verfahren und System zur Klassenspeicherung in einem Festspeicher
DE69817333T2 (de) Verfahren und Vorrichtung zum Laden von Befehlskodes in einen Speicher und zum Verbinden dieser Befehlskodes
DE60002295T2 (de) Aufwandslose ausnahmebehandlung
DE60031370T2 (de) Tokenbasierte verknüpfung
DE69427174T2 (de) Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung
DE60006410T2 (de) Verfahren und system zum verteilen von objektorientierten rechnerprogrammen
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE69813618T2 (de) Kombinieren von mehreren klassendateien in einer laufzeitabbildung
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69800909T2 (de) Verfahren und Vorrichtung zur Optimierung der präzisen Speicherbereinigung, bei der Programmschleifen mit Zeiger-Feldern verwendet werden
DE3855158T2 (de) Dekodier-verfahren und -system für Befehle mit verschiedenen unvereinbaren Formaten
DE69414387T2 (de) Objektorientiertes dynamisches "link"-system, welches auf katalogisierte funktionen und klassen zugreift
DE69932964T2 (de) Verfahren, System und Rechnerprogrammprodukt zur Initialisierung einer Datenstruktur beim ersten Gebrauch
DE60028069T2 (de) Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen
DE69818103T2 (de) Anrufmechanismus für statisch und dynamisch verknüpfte funktionen in einer objektorientierten steuerung unter verwendung von heterogenen entwicklungsumgebungen
DE60103521T2 (de) Vorladen von klassen in einer datenverarbeitungseinrichtung ohne virtueller speicherverwalter
WO2011085789A1 (de) Verfahren zum komprimieren von bezeichnern
DE102005040075A1 (de) Dynamisches Verbinden von Modulen in einer Vorbetriebssystemumgebung
DE102004057490B4 (de) Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes
DE60318993T2 (de) Eingebettete Speicherbereinigung
EP1695207A2 (de) Java smart card chip mit für globale variablen reserviertem speicherbereich
WO2005098617A1 (de) Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einem datenverarbeitungsanlagen
DE102018127317B3 (de) Verfahren und vorrichtungen zur computerimplementierten erzeugung eines ausführbaren programmcodes und zur ausführung eines ausführbaren programmcodes

Legal Events

Date Code Title Description
8363 Opposition against the patent
8331 Complete revocation