DE69834087T2 - Verfahren und Gerät zur Vorverarbeitung und Verpackung von Klassendateien - Google Patents
Verfahren und Gerät zur Vorverarbeitung und Verpackung von Klassendateien Download PDFInfo
- Publication number
- DE69834087T2 DE69834087T2 DE69834087T DE69834087T DE69834087T2 DE 69834087 T2 DE69834087 T2 DE 69834087T2 DE 69834087 T DE69834087 T DE 69834087T DE 69834087 T DE69834087 T DE 69834087T DE 69834087 T2 DE69834087 T2 DE 69834087T2
- Authority
- DE
- Germany
- Prior art keywords
- class
- class files
- computer
- memory
- files
- 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
Links
- 238000000034 method Methods 0.000 title claims description 58
- 238000007781 pre-processing Methods 0.000 title claims description 12
- 238000004806 packaging method and process Methods 0.000 title description 6
- 238000011068 loading method Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 15
- 238000012546 transfer Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004090 dissolution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 101150101567 pat-2 gene Proteins 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
- G06F9/44563—Sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
Description
- HINTERGRUND DER ERFINDUNG
- ERFINDUNGSGEBIET
- Diese Erfindung betrifft das Gebiet der Computersoftware, und genauer, objektorientierte Computeranwendungen.
- STAND DER TECHNIK
- Infolge der Fortschritte in der Netzwerktechnologie hat der Einsatz von Netzwerken zur Erleichterung der Verteilung von Medieninformationen, wie beispielsweise Text, Graphik und Audio, drastisch zugenommen, insbesondere hinsichtlich Internet und World Wide Web. Ein Schwerpunktgebiet derzeitiger Forschungsbemühungen ist das Gebiet der Webanwendungen und der Netzwerkinteraktivität. Neben passiven Medieninhalten, wie HTML-Definitionen, sind an das Netzwerk gekoppelte Computernutzer oder „Clients" in der Lage, auf Anwendungsinhalte zuzugreifen oder sie herunterzuladen, in der Form von Applets, beispielsweise von „Servern" im Netzwerk.
- Um der Vielfalt der von Clients genutzten Hardwaresystemen gerecht zu werden, werden die Anwendungen oder Applets in einem plattformunabhängigen Format, beispielsweise dem Java®-Class-Datei-Format, verteilt. Objektorientierte Anwendungen werden aus mehreren Class-Dateien gebildet, auf die von Servern zugegriffen wird und die einzeln nach Bedarf heruntergeladen werden. Class-Dateien enthalten Bytecode-Anweisungen. Ein „Virtual-Machine"-Prozess, der auf einer bestimmten Hardwareplattform ausgeführt wird, lädt die einzelnen Class-Dateien und führt die enthaltenen Bytecodes aus.
- Ein mit dem Class-Datei-Format und dem Class-Lade-Prozeß verbundenes Problem ist, daß die Class-Dateien oft doppelte Daten enthalten. Die Speicherung, der Transfer und die Verarbeitung der einzelnen Class-Dateien ist somit aufgrund der Redundanz der Informationen ineffizient. Eine Anwendung kann außerdem viele Class-Dateien enthalten, die alle in separaten Transaktionen geladen und verarbeitet werden. Dies verlangsamt die Anwendung und verschlechtert die Leistung des Speicherzuweisers. Darüber hinaus muss ein Client für die Dauer der Anwendung eine physische Verbindung zu dem Server aufrechterhalten, um auf die abrufbaren Class-Dateien zuzugreifen.
- Eine Übersicht allgemeinen objektorientierten Programmierens und ein Beispiel einer derzeitigen Netzwerkanwendungsumgebung verdeutlicht diese Schwierigkeiten.
- Objektorientiertes Programmieren
- Objektorientiertes Programmieren ist ein Verfahren zum Erstellen von Computerprogrammen durch Kombinieren bestimmter Basisbausteine und Erzeugen von Beziehungen zwischen den Bausteinen. In objektorientierten Programmierungssystemen werden die Bausteine „Objekte" genannt. Ein Objekt ist eine Programmiereinheit, die eine Datenstruktur (eine oder mehrere Instanzvariablen) und die Operationen (Methoden), die diese Daten verwenden oder beeinflussen können, zusammengruppiert. Ein Objekt besteht somit aus Daten und einer oder mehreren Operationen oder Abläufen, die an diesen Daten ausgeführt werden können. Die Verbindung von Daten und Operationen in einem einheitlichen Baustein wird „Verkapselung" genannt.
- Ein Objekt kann angewiesen werden, eine seiner Methoden auszuführen, wenn es eine „Nachricht" erhält. Eine Nachricht ist ein Befehl oder eine Anweisung, der bzw. die an das Objekt gesendet wird, damit dieses eine bestimmte Methode ausführt. Eine Nachricht besteht aus einer Methodenauswahl (z.B. Methodenname) und mehreren Argumenten. Eine Nachricht sagt dem empfangenden Objekt, welche Operation es ausführen soll.
- Ein Vorteil objektorientierten Programmierens ist die Weise, in der Methoden aufgerufen werden. Wird eine Nachricht an ein Objekt gesendet, so ist es nicht nötig, daß die Nachricht das Objekt darüber instruiert, wie eine bestimmte Methode ausgeführt werden soll. Es ist lediglich notwendig, anzufordern, daß das Objekt die Methode ausführt. Dies vereinfacht die Programmentwicklung erheblich.
- Objektorientierte Programmiersprachen basieren vorwiegend auf einem „Class"-Schema. Das klassenbasierte objektorientierte Programmierungsschema wird allgemein in Liebermann, „Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems", OOPSLA 86 Proceedings, September 1986, S. 214–223 beschrieben.
- Eine Klasse definiert eine Objektart, die in der Regel sowohl Variablen als auch Methoden für die Klasse enthält. Eine Objektklasse wird zum Erzeugen einer bestimmten Objektinstanz verwendet. Eine Instanz einer Objektklasse enthält die für die Klasse definierten Variablen und Methoden. Aus einer Objektklasse können mehrere Instanzen derselben Klasse erzeugt werden. Jede aus der Objektklasse erzeugte Instanz gilt als derselben Art oder Klasse zugehörig.
- Zur Verdeutlichung kann eine Angestellten-Objektklasse die Instanzvariablen „Name" und „Gehalt" und eine Methode „setze_Gehalt" enthalten. Für jeden Angestellten in einem Unternehmen können Instanzen der Angestellten-Objektklasse erzeugt oder initiiert werden. Jede Angstellten-Objektinstanz gilt als der Art „Angestellter" zugehörig. Jede Angestellten-Objektinstanz enthält die Instanzvariablen „Name" und „Gehalt" und die Methode „setze_Gehalt". Die Werte, die in jeder Angestellten-Objektinstanz den Variablen „Name" und „Gehalt" zugeordnet sind, enthalten den Namen und das Gehalt eines Angestellten in dem Unternehmen. An die Angestellten-Objektklasse eines Angestellten kann eine Nachricht gesendet werden, um die Methode „setze_Gehalt" aufzurufen, um das Gehalt des Angestellten zu modifizieren (d.h. der in dem Angstellten-Objekt eines Angestellten der Variablen „Gehalt" zugeordnete Wert).
- Eine Klassenhierarchie kann so definiert werden, daß eine Objektklassendefinition eine oder mehrere Unterklassen hat. Eine Unterklasse erbt die Definition seiner Elternklasse (und Großelternklasse usw.). Jede Unterklasse kann das durch seine Elternklasse angegebene Verhalten ergänzen oder modifizieren. Von einigen objektorientierten Programmiersprachen wird eine Mehrfachbeerbung unterstützt, bei der eine Unterklasse eine Klassendefinition von mehr als einer Elternklasse erben kann. Andere Programmiersprachen unterstützen lediglich eine einfache Beerbung, bei der eine Unterklasse darauf beschränkt ist, die Klassendefinition von nur einer Elternklasse zu erben. Die Java-Programmiersprache stellt auch einen als „Schnittstelle" bekannten Mechanismus bereit, der eine Gruppe konstanter und abstrakter Methodenerklärungen enthält. Eine Objektklasse kann die in einer Schnittstelle definierten Methoden umsetzen. Für eine Schnittstelle sind sowohl Einfach- als auch Mehrfachbeerbung möglich. Das heißt, eine Schnittstelle kann eine Schnittstellendefinition von mehr als einer Elternschnittstelle erben.
- Ein Objekt ist ein generischer Begriff, der in der objektorientierten Programmierungsumgebung mit Bezug auf ein Modul verwendet wird, das einen verwandten Code und Variablen enthält. Eine Softwareanwendung kann mittels einer objektorientierten Programmierungssprache geschrieben werden, wodurch die Funktionalität des Programms mit Hilfe von Objekten umgesetzt wird.
- Ein Java-Programm besteht aus einer Reihe von Klassen und Schnittstellen. Anders als viele Programmiersprachen, in denen ein Programm in maschinenabhängige, ausführbare Programmcodes kompiliert wird, werden Javaklassen in maschinenunabhängige Bytecode-Class-Dateien kompiliert. Jede Klasse enthält den Code und die Daten in einem plattformunabhängigen Format, das Class-Datei-Format genannt wird. Das als Ausführungsvehikel verwendete Computerprogramm enthält ein Virtual-Machine genanntes Programm, das für die Ausführung des Codes in Javaklassen verantwortlich ist. Die Virtual-Machine stellt einen Abstraktionsgrad zwischen der Maschinenunabhängigkeit der Bytecode-Klassen und der maschinenabhängigen Anweisungsgruppe des zugrundeliegenden Hardware-Systems. Ein „Class-Loader" in der Virtual-Machine ist für das Laden der Bytecode-Class-Dateien nach Bedarf verantwortlich, und entweder führt ein Übersetzer die Bytecodes direkt aus oder ein „Just-in-time"(JIT)-Kompilierer wandelt die Bytecodes in Maschinencode um, so daß sie von dem Prozessor ausgeführt werden können.
1 ist ein Blockdiagramm, das eine beispielhafte Java-Netzwerk-Umgebung mit einer Client-Plattform102 zeigt, die über ein Netzwerk101 mit einem Server100 gekoppelt ist, um zur Durchführung einer Java-Anwendung oder eines Java-Applets auf Java-Class-Dateien zuzugreifen. - Beispielhafte Java-Netzwerk-Anwendungs-Umgebung
- Der Server
100 umfaßt in1 eine Java-Entwicklungsumgebung104 zur Verwendung bei der Erzeugung von Java-Class-Dateien für eine bestimmte Anwendung. Die Java-Entwicklungsumgebung104 stellt einen Mechanismus, beispielsweise einen Editor oder einen Applet-Anzeiger bereit, um Class-Dateien zu erzeugen und eine Vorschau der Applets zu bieten. Eine Gruppe Java-Kern-Klassen103 umfaßt eine Bibliothek von Javaklassen, auf die von Quelldateien verwiesen werden kann, die andere/neue Javaklassen enthalten. Von der Java-Entwicklungs-Umgebung104 werden eine oder mehrere Java-Quelldateien105 generiert. Die Java-Quelldateien105 enthalten die für den Programmierer lesbaren Klassendefinitionen, einschließlich Datenstruktur, Methodenumsetzungen und Bezüge zu anderen Klassen. Die Java-Quelldateien105 werden einem Java-Kompilierer106 bereitgestellt, der Java-Quelldateien105 in kompilierte „Class"-Dateien107 kompiliert, welche Bytecodes enthalten, die von einer Java-Virtual-Machine ausführbar sind. Bytecodes-Class-Dateien107 werden auf dem Server100 gespeichert (d.h. in den Zwischenspeicher oder den permanenten Speicher) und stehen zum Herunterladen über das Netzwerk101 zur Verfügung. - Die Client-Plattform
102 enthält eine Java-Virtual-Machine (JVM)111 , die aufgrund der Verwendung verfügbarer Signale112 eines nativen Betriebssystems (O/S) zur Ausführung von Bytecode-Class-Dateien und nativer (O/S)-Signale in der Lage ist, falls dies während der Ausführung erforderlich ist. - Java-Class-Dateien werden in einem HTML-Dokument (Hypertext Markup Language) oft mittels Applet-Tags identifiziert. Eine Web-Server-Anwendung
108 wird auf dem Server100 so ausgeführt, daß sie auf HTTP-(Hypertext Transport Protocol)-Anforderungen, die URLs (Universal Resource Locators) für HTML-Dokumente (auch „Webseiten" genannt) enthalten, reagiert. Wenn eine auf einer Client-Plattform102 ausgeführte Browser-Anwendung ein HTML-Dokument anfordert, wie beispielsweise durch Weiterleiten von URL109 an den Webserver108 , initiiert der Browser automatisch das Herunterladen der Class-Dateien107 , die in dem Applet-Tag des HTML-Dokuments identifiziert sind. Die Class-Dateien107 werden in der Regel vom Server heruntergeladen und einzeln nach Bedarf in die Virtual-Machine111 geladen. - Für die Klassen eines Java-Programms ist es üblich, daß sie nach Möglichkeit erst bei der Ausführung des Programms geladen werden; sie werden nach Bedarf von dem Netzwerk (auf einem Server gespeichert) oder von einem lokalen Dateisystem geladen, wenn auf sie erstmals während der Ausführung des Java-Programms Bezug genommen wird. Die Virtual-Machine lokalisiert und lädt jede Class-Datei, analysiert das Class-Datei-Format, weist den verschiedenen Komponenten der Klasse Speicherplatz zu und verbindet die Klasse mit anderen bereits geladenen Klassen. Dieser Prozeß führt dazu, daß der Code der Klasse durch die Virtual-Machine leicht ausgeführt werden kann.
- Der individualisierte Class-Lade-Prozeß hat, so wie er üblicherweise ausgeführt wird, einige Nachteile hinsichtlich der Verwendung von Speicherressourcen auf Speichervorrichtungen, der Zuweisung von Speicherplatz und der Ausführungsgeschwindigkeit und -kontinuität. Diese Nachteile werden dadurch erschwert, daß eine typische Java-Anwendung Hunderte oder Tausende kleiner Class-Dateien enthalten kann. Jede Klasse ist eigenständig. Dies führt oft zu Informationsredundanzen zwischen Class-Dateien, beispielsweise, wenn zwei oder mehrere Class-Dateien gemeinsame Konstanten teilen. Daher brauchen viele Klassen große Speicherbereiche auf permanenten Speichervorrichtungen auf ineffiziente Art und Weise, um doppelt vorliegende Informationen einzeln zu speichern. Analog führt auch das einzelne Laden jeder Class-Datei zu unnötiger Verdopplung von Informationen in Anwendungsspeichern. Darüber hinaus wird der AuflösungsProzeß für die Konstanten unnötig wiederholt, weil gemeinsame Konstanten für jede Klasse während der Ausführung des Java-Codes getrennt aufgelöst werden.
- Weil die Klassen jede für sich geladen wird, benötigt jede kleine Klasse eine eigene Gruppe von Zuweisungen von dynamischem Speicherplatz. Dies führt zur Fragmentation des Speichers und somit zur Verschwendung von Speicherplatz und verschlechtert die Leistung des Zuweisers. Für jede Klasse wird außerdem eine einzelne Lade-„Transaktion" benötigt. Die Virtual-Machine sucht nach einer Class-Datei entweder auf einer Netzwerkvorrichtung oder in einem lokalen Dateisystem und stellt eine Verbindung her, um die Klasse zu laden und zu analysieren. Dies ist ein verhältnismäßig langsamer Prozeß, der für jede Klasse wiederholt werden muss. Die Ausführung eines Java-Programms neigt bei der Reaktion/Ausführung zu unbestimmten Pausen, die durch jede Ladeprozedur einer Klasse verursacht werden, insbesondere, wenn die Klassen über ein Netzwerk geladen werden. Diese Pausen sind für Systeme, für die die interaktive oder Echtzeit-Ausführung wichtig ist, problematisch.
- Ein weiterer Nachteil des Ladeprozesses einzelner Klassen ist, daß der Computer, der das Java-Programm ausführt, mit der Quelle der Java-Dateien für die Ausführungsdauer des Programms physisch verbunden bleiben muss. Dies ist insbesondere für mobile oder eingebettete Computer ohne lokale Speicherplatten oder eigenen Netzwerkzugriff problematisch. Wird die physische Verbindung während der Ausführung des Java-Programms unterbrochen, dann kann auf die Class-Dateien nicht zugegriffen werden und die Anwendung scheitert, sobald eine neue Klasse benötigt wird. Es passiert außerdem oft, daß die physische Verbindung zu Netzwerken wie dem Internet Kosten mit sich bringt, die mit der Dauer der Verbindung verknüpft sind. Zu der Unbequemlichkeit, eine Verbindung während der Ausführungsdauer einer Anwendung aufrechtzuerhalten, kommen für den Nutzer auch noch Kosten, die sich aus der physischen Verbindung ergeben.
- Zur Gruppierung von Class-Dateien in ein einzelnes transportierbares Paket, das JAR-Datei genannt wird, wurde ein Java-Archiv-(JAR)-Format entwickelt. Eine JAR-Datei kann in einem HTML-Dokument in einem Applet-Tag identifiziert werden. Wenn eine Browser-Anwendung das HTML-Dokument liest und das Applet-Tag findet, wird die JAR-Datei auf den Client-Computer heruntergeladen und dekomprimiert. Eine Gruppe von Class-Dateien kann somit in einer einzigen Lade-Transaktion von einem Server zu einem Client heruntergeladen werden. Nach dem Herunterladen und Dekomprimieren sind die archivierten Class-Dateien auf dem Clientsystem für das individuelle Laden nach Bedarf gemäß Standard-Klassen-Lade-Verfahren verfügbar. Die archivierten Class-Dateien unterliegen weiterhin Speicherineffizienzen aufgrund von Datenverdopplung zwischen den Dateien sowie Speicherfragmentierung aufgrund der Durchführung einzelner Speicherplatzzuweisungen für jede Class-Datei.
- Aus
EP 0 702 291 A1 ist ein Verfahren und ein Mechanismus zum Aufrufen von Objekten mit Schnittstellenbeerbung bekannt. Ein Objektbezug verwendet zweiteilige m-Tabellen; insbesondere wird ein Zeiger auf Daten für ein Objekt und ein Zeiger auf Methoden auf dem Objekt beschrieben. Die Methoden auf dem Objekt werden durch eine Sammlung von m-Tabellen dargestellt. Eine m-Tabelle für eine bestimmte Schnittstelle besteht aus Zeigern auf m-Tabellen für geerbte Schnittstellen und Zeiger auf Funktionen, die die in der Schnittstelle erklärten Operationen umsetzen. - Aus dem Artikel „Object-oriented Programming in C The Linnaeus System" IBM Technical Disclosability, Bd.32, Nr.9B, S. 437–439 ist das Linnaeus-System bekannt, das objektorientiertes Programmieren in der C-Programmier-Sprache bereitstellt. Das Linnaeus-System ermöglicht objektorientiertes Programmieren in einer nicht-OOP-Sprache. Der Ansatz vereint die Vorteile von objektorientiertem Programmieren mit der Effizienz der Verwendung einer kompilierten Sprache. Wird ein Objekt instanziert, so trägt es einen Zeiger auf die entsprechende Klassentabelle. Objekte tragen keine ausdrücklichen Zeiger auf Methoden und es gibt nur eine Kopie jeder Klassentabelle.
- KURZE DARSTELLUNG DER ERFINDUNG
- Es wird ein Verfahren und eine Vorrichtung zum Vorverarbeiten und Paketieren von Class-Dateien beschrieben. Ausführungsformen der Erfindung entfernen doppelte Informationselemente aus einer Gruppe von Class-Dateien, um die Größe der einzelnen Class-Datei zu reduzieren und eine redundante Auflösung der Informationselemente zu verhindern. Speicherzuweisungserfordernisse werden im Voraus für die Gruppe der Klassen als Ganzes bestimmt, um die Komplexizität der Speicherzuweisung zu verringern, wenn die Gruppe von Klassen geladen wird. Für die effiziente Speicherung, den Transfer und Verarbeitung als eine Einheit werden die Class-Dateien in einem einzelnen Paket gespeichert.
- In einer Ausführungsform der Erfindung untersucht ein Vor-Prozessor jede Class-Datei in einer Gruppe von Class-Dateien, um doppelte Informationen in Form von redundanten Konstanten in einem Konstanten-Pool zu lokalisieren. Die doppelte Konstante wird in eine getrennte gemeinsame Tabelle platziert und alle Vorkommnisse der Konstante werden aus der jeweiligen Konstanten-Pool der individuellen Class-Dateien entfernt. Während der Vorverarbeitung werden für jede Class-Datei Speicherzuweisungserfordernisse bestimmt und werden für die Bestimmung eines Gesamtspeicherzuweisungserfordernis für die Gruppe von Class-Dateien verwendet. Die gemeinsame Tabelle, das Speicherzuweisungserfordernis und die reduzierten Class-Dateien werden als eine Einheit in eine Multi-Class-Datei gepackt.
- Wünscht eine Virtual-Machine das Laden der Klassen in der Multi-Class-Datei, so wird der Ort der Mehrfach-Class-Datei bestimmt und die Multi-Class-Datei wird bei Bedarf von einem Server heruntergeladen. Die Speicherzuweisungsinformation in der Multi-Class-Datei wird von der Virtual-Machine dazu verwendet, Speicher aus dem Heap der Virtual-Machine für der Gruppe von Klassen zuzuweisen. Die einzelnen Klassen werden mit entsprechenden reduzierten Konstanten-Pools zusammen mit den gemeinsam genutzten Tabellen in die Virtual-Machine geladen. An den reduzierten Konstanten-Pools und den gemeinsam genutzten Dateien wird nach Bedarf eine Konstanten-Auflösung durchgeführt.
- KURZE BESCHREIBUNG DER FIGUREN
-
1 ist eine Ausführungsform einer Java-Netzwerk-Anwendungs-Umgebung. -
2 ist ein Blockdiagram einer Ausführungsform eines Computersystems, das zum Bereitstellen einer geeigneten Ausführungsumgebung für eine Ausführungsform der Erfindung in der Lage ist. -
3 ist ein Blockdiagramm einer Ausführungsform eines Class-Datei-Formats. -
4 ist ein Flussdiagramm eines Class-Datei-Vorverarbeitungs-Verfahrens gemäß einer Ausführungsform der Erfindung. -
5 ist ein Blockdiagramm eines Mehrfach-Class-Datei-Formats gemäß einer Ausführungsform der Erfindung. -
6 ist ein Blockdiagramm von Runtime-Daten-Gebieten einer Virtual-Machine gemäß einer Ausführungform der Erfindung. - AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
- Die Erfindung ist ein Verfahren und eine Vorrichtung zum Vorverarbeiten und Paketieren von Class-Dateien. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um eine gründlichere Beschreibung von Ausführungsformen der Erfindung bereitzustellen. Einem Fachmann dürfte jedoch klar sein, daß die Erfindung auch ohne diese spezifischen Einzelheiten ausgeführt werden kann. An anderen Stellen wurden wohlbekannte Merkmale nicht näher beschrieben, um die Erfindung nicht undeutlicher zu machen.
- AUSFÜHRUNGSFORM DER COMPUTERAUSFÜHRUNGSUMGEBUNG (Hardware)
- Eine Ausführungsform der Erfindung kann als Computer-Software in Form eines computerlesbaren Programmcodes umgesetzt werden, der auf einem Allzweck-Computer, wie dem in
2 gezeigten Computer200 ausgeführt wird, oder in Form von Bytecode-Class-Dateien, die durch eine auf einem solchen Computer laufende Virtual-Machine ausführbar sind. Eine Tastatur210 und eine Maus211 sind an einen bidirektionalen Systembus218 gekoppelt. Die Tastatur und die Maus dienen der Einführung von Benutzereingaben in das Computersystem und dem Übermitteln dieser Benutzereingaben an eine Zentrale Verarbeitungseinheit (CPU)213 . Andere geeignete Eingabevorrichtungen können zusätzlich zu oder anstelle von der Maus211 und der Tastatur210 verwendet werden. Eine E/A-(Eingabe/Ausgabe)-Einheit219 , die an einen bidirektionalen Systembus218 gekoppelt ist, steht für solche E/A-Elemente, wie beispielsweise einen Drucker, A/V-(Audio/Video)-E/A usw. - Der Computer
200 enthält einen Videospeicher214 , einen Hauptspeicher215 und einen Massenspeicher212 , die zusammen mit der Tastatur210 , der Maus211 und der CPU213 alle an einen bidirektionalen Systembus218 gekoppelt sind. Der Massenspeicher212 kann sowohl feste als auch entfernbare Medien, wie beispielsweise magnetische, optische oder magnetooptische Speichersysteme, oder beliebige andere erhältliche Massenspeichertechnologie enthalten. Der Bus218 kann beispielsweise 32 Adresszeilen zum Adressieren des Videospeichers214 oder des Hauptspeichers215 enthalten. Der Systembus218 enthält außerdem beispielsweise, einen 32-Bit-Datenbus für die Datenübertragung zwischen und unter den Komponenten, wie CPU213 , Hauptspeicher215 , Videospeicher214 und Massenspeicher212 . Alternativ können Multiplexdaten-/Adresszeilen anstelle getrennter Daten- und Adresszeilen verwendet werden. - In einer Ausführungsform der Erfindung handelt es sich bei der CPU
213 um einen von Motorola® hergestellten Mikroprozessor, beispielsweise den 680X0-Prozessor, oder einen von Intel® hergestellten Mikroprozessor, beispielsweise den 80X86, oder einen Pentium®-Prozessor, oder einen SPARC®-Mikroprozessor von Sun Microsystems®. Jeder andere geeignete Mikroprozessor oder Mikrocomputer kann jedoch verwendet werden. Der Hauptspeicher215 besteht aus einen Dynamischen Direktzugriffsspeicher (DRAM). Der Videospeicher214 ist ein zweiportiger Video-Direktzugriffsspeicher. Ein Port des Videospeichers214 ist mit einem Videoverstärker216 verbunden. Der Videoverstärker216 wird verwendet, um den Katodenstrahlröhren(CRT)-Raster-Monitor217 anzutreiben. Der Videoverstäker wird dazu verwendet, den Kathodenstrahlröhren-(CRT)-Raster-Monitor217 anzusteuern. Der Videoverstärker ist wohlbekannt und kann durch jede geeignete Vorrichtung umgesetzt werden. Diese Schaltung wandelt in dem Videospeicher216 gespeicherte Pixeldaten in ein Rastersignal um, das sich für die Verwendung durch den Monitor217 eignet. Der Monitor217 ist eine Art Monitor, die sich zum Anzeigen graphischer Bilder eignet. - Der Computer
200 kann auch eine mit dem Bus218 gekoppelte Kommunikationsschnittstelle220 enthalten. Die Kommunikationsschnittstelle220 stellt eine Zwei-Wege-Datenkommunikationskopplung über die Netzwerkverbindung221 zu einem lokalen Netzwerk222 bereit. Zum Beispiel stellt die Kommunikationsschnittstelle220 , wenn es sich um eine ISDN-(Integrated Services Digital Network)-Karte oder ein Modem handelt, eine Datenkommunikationsverbindung mit der entsprechenden Art von Telefonleitung bereit, welche Teil der Netzwerkverbindung221 ist. Wenn die Kommunikationsschnittstelle220 eine LAN-(Local Area Network)-Karte ist, dann stellt die Kommunikationsschnittstelle220 eine Datenkommunikationsverbindung über die Netzwerkverbindung221 zu einem kompatiblen LAN bereit. Auch drahtlose Verbindungen sind möglich. In allen derartigen Umsetzungen sendet oder empfängt die Kommunikationsschnittstelle220 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, welche für verschiedene Arten von Informationen stehen. - Die Netzwerkverbindung
221 stellt in der Regel über ein oder mehrere Netzwerke Datenkommunikationen zu anderen Datenvorrichtungen bereit. Beispielsweise kann eine Netzwerkverbindung221 eine Verbindung über ein lokales Netzwerk222 zu einem Hostcomputer223 oder zu durch einen Internet-Service-Provider-(ISP)224 betriebenen Datengeräten bereitstellen. Der ISP224 stellt wiederum Datenkommunikationsdienste durch das World-Wide-Packet-Data-Kommunikationsnetzwerk bereit, das heute allgemein als „Internet"225 bezeichnet wird. Das lokale Netzwerk222 und das Internet225 verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung221 und durch die Kommunikationsschnittstelle220 , die die digitalen Daten zu und von dem Computer200 tragen, sind beispielhafte Formen von Trägerwellen, die die Informationen transportieren. - Der Computer
200 kann über das/die Netzwerk/Netzwerke, die Netzwerkverbindung221 und die Kommunikationsschnittstelle220 Nachrichten senden und Daten, einschließlich eines Programmcodes, empfangen. In dem Internet-Beispiel könnte der Server226 einen angeforderten Code für ein Anwendungsprogramm über das Internet225 , ISP224 , das lokale Netzwerk222 und die Kommunikationsschnittstelle220 übermitteln. Erfindungsgemäß ist eine derartige heruntergeladene Anwendung die beschriebene Vorrichtung zum Vorverarbeiten und Paketieren von Class-Dateien. - Der empfangene Code kann wie er empfangen wird von CPU
213 ausgeführt und/oder für die spätere Ausführung in einem Massenspeicher212 oder in einem anderen nichtflüchtigen Speicher gespeichert werden. Auf diese Weise kann der Computer200 einen Anwendungscode in Form einer Trägerwelle erhalten. - Die oben beschriebenen Computersysteme sind in jedem Fall nur exemplarisch gedacht. Eine Ausführungsform der Erfindung kann in jeder Art von Computersystem oder Programmierungs- oder Verarbeitungsumgebung umgesetzt werden.
- Class-Datei-Struktur
- Die Ausführungsformen der Erfindung sind unter Bezug auf Aspekte des Class-Datei-Format leichter verständlich. Im folgenden wird das Java-Class-Datei-Format beschrieben. Als Anhang A beigefügt ist dieser Beschreibung außerdem das Kapitel 4 „The Class File Format" und das Kapitel 5 „Constant Pool Resolution", aus The Java Virtual Machine Specification, von Tim Lindholm und Frank Yellin, hrsg. Von Addision-Wesley, September 1996 ©Sun Microsystems, Inc.
- Die Java-Klassen-Datei besteht aus einer Kette von 8-Bit-Bytes, mit 16-Bit-, 32-Bit und 64-Bit-Strukturen, die aus aufeinanderfolgenden 8-Bit-Bytes bestehen. Die Class-Datei enthält eine einzelne Klasse oder Schnittstellen-Datei-Struktur. Die Class-Datei-Struktur stellt sich wie folgt dar: wobei u2 und u4 sich auf vorzeichenlose Zwei-Byte- und Vier-Byte-Größen beziehen. Diese Struktur wird in
3 graphisch dargestellt. - Die Class-Datei
300 in3 umfaßt Folgendes: Vier-Byte-Magic-Value301 , Zwei-Byte-Minor-Versionsnummer302 , Zwei-Byte-Major-Versionsnummer303 , Zwei-Byte-Konstanten-Pool-Zählwert304 , Konstanten-Pool-Tabelle305 , die der Konstanten-Pool-Anordnung von Elementen variabler Länge entspricht, Zwei-Byte-Zugriffs-Flag-Wert306 , Zwei-Byte-„Diese Klasse"-Kennung307 , Zwei-Byte-Super-Class-Kennung308 , Zwei-Byte-Schnittstellen-Zählwert309 , Schnittstellentabelle310 , die der Schnittstellenanordnung von Zwei-Byte-Elementen entspricht, Zwei-Byte-Feld-Zählwert311 , Feldtabelle312 , die der Feldanordnung von Elementen variabler Länge entspricht, Zwei-Byte- Methoden-Zählwert313 , Methodentabelle314 , die der Methodenanordnung der Elemente variabler Länge entspricht, Zwei-Byte-Attribut-Zählwert315 und Attributtabelle316 , die der Attributanordnung von Elementen variabler Länge entspricht. Jede der oben genannten Strukturen wird nachstehend kurz erläutert. - Der Magic-Wert
301 enthält eine Zahl, die das Class-Datei-Format identifiziert. Bei dem Java-Class-Datei-Format hat die Magic-Zahl den Wert 0xCAFEBABE. Die Minor-Versionsnummer302 und die Major-Versionsnummer303 spezifizieren die Minor- und Majorversionsnummern des für die Erzeugung der Class-Datei verantwortlichen Kompilierers. - Der Konstanten-Pool-Zählwert
304 identifiziert die Anzahl von Einträgen in einer Konstanten-Pool-Tabelle305 . Die Konstanten-Pool-Tabelle305 ist eine Tabelle mit Datenstrukturen variabler Länge, die verschiedene String-Konstanten, nummerische Konstanten, Klassennamen, Feldnamen und andere Konstanten repräsentieren, auf die innerhalb der Class-Datei-Struktur Bezug genommen wird. Jeder Eintrag in die Konstanten-Pool-Tabelle hat die folgende allgemeine Struktur: wobei das Ein-Byte-„Tag" eine bestimmte Konstantenart spezifiziert. Das Format der info[]-Anordnung variiert abhängig von der Konstantenart. Die info[]-Anordnung kann ein nummerischer Wert wie für ganze Zahlen oder Floatkonstanten sein, ein Stringwert für Stringkonstanten oder ein Index zu einem anderen Eintrag einer anderen Konstantenart in der Konstanten-Pool-Tabelle. Weitere Einzelheiten der Konstanten-Pool-Tabellenstruktur und der Konstantenarten sind in Kapitel 4 Anhang A ersichtlich. - Der Zugriffs-Flag-Wert
306 ist eine Maske von Modifizierern, die bei Klassen- und Schnittstellenerklärungen verwendet werden. Der „Diese Klasse"-Wert307 ist ein Index in die Konstanten-Pool-Tabelle305 zu einer Konstantenartstruktur, die die Klasse oder die durch diese Class-Datei definierte Schnittstelle repräsentiert. Der Super-Class-Wert308 ist entweder Null, was anzeigt, daß die Klasse eine Unterklasse von java.lang.Objekt ist, oder ein Index in die Konstanten-Pool-Tabelle zu einer Konstantenartstruktur, die die durch diese Class-Datei definierte Schnittstelle repräsentiert. - Der Schnittstellen-Zählwert
309 identifiziert die Anzahl von direkten Super-Schnittstellen dieser Klasse oder Schnittstelle, und entsprechend die Anzahl von Elementen in der Schnittstellen-Tabelle310 . Die Schnittstellen-Tabelle310 enthält Zwei-Byte-Indizes in die Konstanten-Pool-Tabelle305 . Jeder entsprechende Eintrag in die Konstanten-Pool-Tabelle305 ist eine Konstantenartstruktur, die eine Schnittstelle repräsentiert, welche eine durch diese Class-Datei definierte direkte Super-Schnittstelle der Klasse oder Schnittstelle repräsentiert. - Der Feld-Zählwert
311 stellt die Anzahl von Strukturen in der Feld-Tabelle312 bereit. Jeder Eintrag in die Feld-Tabelle312 ist eine Struktur variabler Länge, die eine Beschreibung eines Felds in der Klassenart bereitstellt. Die Feld-Tabelle312 enthält nur jede Felder, die von der durch diese Class-Datei definierte Klasse oder Schnittstelle erklärt werden. - Der Methodenzählwert
313 zeigt die Anzahl von Strukturen in der Methodentabelle314 an. Jedes Element der Methodentabelle314 ist eine Struktur variabler Länge, die eine Beschreibung und einen Code für eine Virtual-Machine für eine Methode in der Klasse oder Schnittstelle bereitstellt. - Der Attributzählwert
315 gibt die Anzahl von Strukturen in der Attributtabelle316 an. Jedes Element in der Attributtabelle 31 ist eine Attributstruktur variabler Länge. Die Attributstruktur wird in dem Abschnitt 4.7 von Anhang A erläutert. - Ausführungsformen der Erfindung untersuchen die Konstanten-Pool-Tabelle für jede Klasse in einer Gruppe von Klassen, um zu bestimmen, wo Doppelinformationen bestehen. Beispielsweise kann die Stringkonstante dort, wo zwei oder mehrere Klassen dieselbe Stringkonstante verwenden, aus jeder Class-Datei-Struktur entfernt und in eine gemeinsam genutzte Pool-Tabelle platziert werden. In dem einfachen Fall, wenn N Klassen denselben Konstanteneintrag aufweisen, werden N Einheiten Speicherplatz in den Speicherressourcen aufgenommen. Durch Entfernen aller Konstanteneinträge und Bereitstellen eines gemeinsamen Eintrags, werden N-1 Einheiten Speicherplatz befreit. Die Speicherplatzersparnis steigt mit N. Auch bei der Umsetzung einer gemeinsamen Konstanten-Tabelle müssen Einträge in die Konstanten-Tabelle höchstens einmal vollkommen aufgelöst werden. Nach der Anfangsauflösung können zukünftige Codereferenzen zu der Konstante die Konstante direkt verwenden.
- Vorverarbeitung und Paketierung von Klassen
- Eine Ausführungsform der Erfindung verwendet einen Klassen-Vorprozessor zum Paketieren von Klassen in einem „mclass"- oder Multi-Class-Datei genannten Format. Ein Verfahren zum Vorverarbeiten und Paketieren einer Gruppe von Class-Dateien wird in dem Flussdiagramm von
4 gezeigt. - Das Verfahren beginnt bei Schritt
400 mit einer Gruppe zufälliger Class-Dateien „S" (in der Regel Teil einer Anwendung). In Schritt401 liest und analysiert der Vorverarbeiter jede Klasse in „S". In Schritt402 untersucht der Vorverarbeiter die Konstanten-Pool-Tabellen jeder Klasse, um die Gruppe von Class-Datei-Konstanten (wie Strings und Zahlen und ähnliches für das Class-Datei-Format spezifisches) zu bestimmen, die von den Klassen in „S" gemeinsam genutzt werden kann. Eine gemeinsam genutzte Konstanten-Pool-Tabelle wird in Schritt403 erstellt, wobei alle doppelten Konstanten aus Schritt402 bestimmt werden. In Schritt404 entfernt der Vorprozessor die doppelten, gemeinsam genutzten Konstanten von den einzelnen Konstanten-Pool-Tabellen jeder Klasse. - In Schritt
405 errechnet der Vorprozessor die Kern-Speicher-Erfordernisse jeder Klasse in „S", wie dies normalerweise durch den Class-Loader für die jeweilige Virtual-Machine bestimmt würde. Dies ist die Speichermenge, die eine Virtual-Machine jeder Klasse zuweisen würde, wenn sie jede Klasse einzeln laden würde. Nach Betrachten jeder Klasse in „S" und des zusätzlichen Speichererfordernisses für die gemeinsam benutzte Pool-Tabelle, wird in Schritt406 das Gesamtspeichererfordernis zum Laden von „S" errechnet. - In Schritt
407 erzeugt der Vorprozessor eine Mehrfach-Klassen(mclass)-Datei, die Folgendes enthält: die in Schritt403 erzeugte, gemeinsam genutzte Konstanten-Pool-Tabelle, Informationen über in Schritt405 und406 bestimmte Speicherzuweisungserfordernisse und alle Klassen in „S" mit ihren jeweils reduzierten Konstanten-Pool-Tabellen. Die mclass-Datei für die Klassengruppe „S" wird in Schritt408 ausgegeben. In einigen Ausführungsformen kann die Mehrfach-Klassen-Datei komprimiert werden, um die Größe der Mehrfach-Klassen-Datei weiter zu verringern. -
- In einer Ausführungsform der Erfindung wird eine neue Konstantenart mit einem entsprechenden Konstantenart-Tag bestimmt. Die neue Konstantenart stellt als ihr info[]-Element einen Index in die gemeinsam genutzte Konstantentabelle bereit. Während der Vorverarbeitung werden doppelte Konstantenelemente in den gemeinsam genutzten Konstanten-Pool als ein gemeinsam genutztes Element platziert und ein Element der neuen Konstantenart ersetzt das doppelte Element im reduzierten Pool zur direkten Aufläsung des gemeinsam genutzten Elements im gemeinsam genutzten Konstanten-Pool. Reduktion tritt auf, weil das Ersatzelement nur ein Zeiger zu der eigentlichen Konstante ist, die im gemeinsam genutzten Konstanten-Pool platziert ist.
-
5 ist ein vereinfachtes Blockdiagramm einer Ausführungsform des Mehrfach-Klassen-Datei-Formats. Die Mclass-Datei500 umfaßt die gemeinsam genutzte Pool-Tabelle501 , Speicherzuweisungserfordernisse502 und die Gruppe einzelner Klassen503 . Die Gruppe einzelner Klassen503 umfaßt die Class-Datei-Strukturen für die Klassen 1-N (wobei N die Zahl der Klassen in der Gruppe ist), zusammen mit den entsprechenden reduzierten Konstanten-Pool-Tabellen 1-N. Die Größe der gemeinsam genutzten Konstanten-Pool-Tabelle501 hängt von der der Anzahl der in dieser Gruppe von Klassen gefundenen doppelten Konstanten ab. Die Speicherzuweisungserfordernisse502 können als ein einziger Wert dargestellt werden, der den für das Laden aller Klassenstrukturen (Klassen 1-N) in einzelne Klassen503 sowie die gemeinsam genutzte Konstanten-Pool-Tabelle501 benötigten Gesamtspeicher anzeigt. Der Zähler des gemeinsam genutzten Pools und der Zähler der Class-Datei (in5 nicht gezeigt) kennzeichnen die Anzahl von Elementen in der gemeinsam genutzten Konstanten-Pool-Tabelle501 und der Class-Datei-Anordnung von Class-Datei-Strukturen (durch Klassen503 repräsentiert). - Die Mehrfach-Class-Datei ist in der Regel erheblich kleiner als die Summe der Größen der einzelnen Class-Dateien, aus der sie abgeleitet wurde. Sie kann durch die Virtual-Machine während oder vor der Ausführung einer Anwendung geladen werden, statt jede enthaltene Klasse nach Bedarf zu laden. Die Virtual-Machine ist auch in der Lage, die Informationen über das Zuweisungserfordernis zu nutzen, um allen für die Mehrfach-Klassen-Gruppe benötigten Speicherplatz vorher zuzuweisen. Dies löst viele der mit dem Klassen-Laden verbundenen Probleme.
- Klassen in einer Mehrfach-Klassen-Gruppe teilen Informationen untereinander und sind daher kleiner. Dies bietet die folgenden Vorteile:
- a) Die Klassen nehmen auf Servern oder Speichergeräten weniger Platz in Anspruch;
- b) die Klassen beanspruchen zum Lesen weniger Netzwerk- oder Dateiübertragungszeit;
- c) die Klassen beanspruchen beim Laden weniger Speicherplatz; und
- d) die Ausführung ist schneller, da gemeinsam genutzte Konstanten höchstens einmal gelöst werden.
- Mehrfach-Klassen-Gruppen konsolidieren das Laden der benötigten Klassen anstelle des Ladens der Klassen Klasse für Klasse. Mit Hilfe von Zuweisungsinformationen wird nur eine Zuweisung dynamischen Speichers benötigt anstelle von Mehrfachzuweisungsoperationen. Dies führt zu geringerer Fragementierung, weniger im Zuweiser verbrachte Zeit und weniger Verschwendung von Speicherplatz.
- Da die Class-Dateien in einer einzigen Mehrfach-Klassen-Datei konsolidiert sind, wird nur eine einzige Transaktion benötigt, um eine Netzwerk- oder Dateisystemsuche auszuführen, eine Übertragungssitzung (z.B. HTTP) aufzustellen und die gesamte Gruppe von Klassen zu übertragen. Dies minimiert Pausen in der Ausführung, die aus solchen Transaktionen entstehen können und gewährleistet eine deterministische Ausführung ohne Pausen zum Klassenladen während eines Programmdurchlaufs. Außerdem muss der Computer, der das Programm ausführt, nicht mit der Quelle der Klassen verbunden bleiben, sobald die Mehrfach-Klassen-Datei geladen und analysiert ist.
-
6 veranschaulicht Runtime-Daten-Gebiete der Virtual-Machine, wenn eine Mehrfach-Klassen-Datei gemäß einer Ausführungsform der Erfindung verarbeitet und geladen wird. In6 umfassen Runtime-Daten-Gebiete600 Mehrfach-Programm-Zähler-Register (PC REG 1-M) und Mehrfachstapel 1-M. Ein Programmzählerregister und ein Stapel sind jedem in der Virtual-Machine ausgeführten Thread zugewiesen. Jedes Programmzählerregister enthält die Adresse der Virtual-Machine-Anweisung für die aktuelle, von dem jeweiligen Thread ausgeführte Methode. Die Stapel werden von den jeweiligen Threads ausgeführt, um lokale Variablen, Teilergebnisse und einen Operandenstapel zu speichern. - Runtime-Daten-Gebiete
600 umfassen weiterhin den Heap601 , der das Methodengebiet602 enthält. Der Heap601 ist das Runtime-Daten-Gebiet, aus dem Speicher für alle Klasseninstanzen und Anordnungen zugewiesen wird. Das Methodengebiet602 wird unter allen Threads geteilt und speichert Klassenstrukturen, wie Konstanten-Pool, Feld- und Methodendaten und den Code für die Methoden. Innerhalb des Methodengebiets602 , wird der Speicherblock603 , der zusammenhängend oder nicht zusammenhängend sein kann, der Mehrfachklassengruppe der Klassen „S" zugeordnet. Andere Gebiete im Heap601 können ebenfalls „S" zugeordnet werden. Die reduzierten Konstanten-Pools 1-N befinden sich zusammen mit dem gemeinsam genutzten Konstanten-Pool604 in Block603 . - Aufgrund des Entfernens redundanter Konstanten gemäß einer Ausführungsform der Erfindung ist die Größe von Block
603 , die zum Enthalten reduzierter Konstanten-Pools 1-N und gemeinsam genutzter Konstanen-Pools604 benötigt wird, viel kleiner, als nötig wäre, um die Konstanten-Pools 1-N aufzunehmen, wenn sie nicht reduziert wären. Die Zuweisungen in Block603 sind auch weniger fragmentiert (und können im Speicher zusammenhängend vorgefunden werden) als der Speicher, der zugewiesen werden würde, wenn die Klassen einzeln geladen werden würden. - Es wurde also ein Verfahren und eine Vorrichtung zum Vorverarbeiten und Paketieren von Class-Dateien in Verbindung mit einer oder mehreren spezifischen Ausführungsformen beschrieben. Die Erfindung wird durch die Ansprüche und ihren vollen Umfang von Äquivalenten definiert.
- Die in der oben stehenden Beschreibung, den Ansprüchen und/oder den angefügten Zeichnungen offenbarten Merkmale können, sowohl einzeln oder in jeder Kombination für die Umsetzung der Erfindung in verschiedenen Formen entscheidend sein.
Claims (23)
- Verfahren zur Vorverarbeitung von Class-Dateien, umfassend: Bestimmen (
402 ) mehrerer doppelter Elemente in mehreren Class-Dateien; Bilden (403 ) einer zwischen den Class-Dateien gemeinsam geteilten Tabelle, welche die mehreren doppelten Elemente umfaßt; Entfernen (404 ) der doppelten Elemente aus den mehreren Class-Dateien, um mehrere reduzierte Class-Dateien zu erhalten; und Bilden (407 ) einer Multi-Class-Datei, die die mehreren reduzierten Class-Dateien und die gemeinsame Tabelle umfaßt. - Verfahren nach Anspruch 1, das des weiteren umfaßt: Berechnen (
405 ) eines individuellen Speicherzuweisungserfordernisses für jede der mehreren reduzierten Class-Dateien; Berechnen (406 ) eines Gesamtspeicherzuweisungserfordernisses für die mehreren Class-Dateien aus dem individuellen Speicherzuweisungserfordernis jeder der mehreren reduzierten Class-Dateien; Speichern des Gesamtspeicherzuweisungserfordernisses in der Multi-Class-Datei. - Verfahren nach Anspruch 2, das des weiteren umfaßt: Lesen des Gesamtspeicherzuweisungserfordernisses aus der Multi-Class-Datei; Zuweisen eines Teils eines Speichers basierend auf dem Gesamtspeicherzuweisungserfordernis; und Laden der reduzierten Class-Dateien und der gemeinsamen Tabelle in den Teil des Speichers.
- Verfahren nach Anspruch 3, das des weiteren umfaßt: Zugreifen auf die gemeinsame Tabelle im Teil des Speichers, um eines oder mehrere in einer oder mehreren der reduzierten Class-Dateien nicht gefundene Elemente zu erhalten.
- Verfahren nach Anspruch 1, wobei der Schritt (
402 ) des Bestimmens mehrerer doppelter Elemente umfaßt: Bestimmen einer oder mehrerer zwischen zwei oder mehreren Class-Dateien gemeinsam geteilter Konstanten. - Verfahren nach Anspruch 5, wobei der Schritt des Bildens (
403 ) einer gemeinsamen Tabelle umfaßt: Bilden einer gemeinsamen Konstanten-Tabelle, die eine oder mehrere zwischen den zwei oder mehreren Class-Dateien gemeinsam geteilte Konstanten umfaßt. - Computerprogrammprodukt, welches umfaßt: ein computernutzbares Medium mit einem darin implementierten computerlesbaren Programmcode zur Vorverarbeitung von Class-Dateien, wobei das Computerprogrammprodukt umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, mehrere doppelte Elemente in mehreren Class-Dateien zu bestimmen (
402 ); einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, eine zwischen den Class-Dateien gemeinsam geteilte Tabelle zu bilden (403 ), welche die mehreren doppelten Elemente umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, die doppelten Elemente aus den mehreren Class-Dateien zu entfernen (402 ), um mehrere reduzierte Class-Dateien zu erhalten; einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, eine Multi-Class-Datei zu bilden (407 ), welche die mehreren reduzierten Class-Dateien und die gemeinsame Tabelle umfaßt. - Computerprogrammprodukt nach Anspruch 7, das des weiteren umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, ein individuelles Speicherzuweisungserfordernis jeder der mehreren reduzierten Class-Dateien zu berechnen (
405 ); einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, ein Gesamtspeicherzuweisungserfordernis der mehreren Class-Dateien aus dem individuellen Speicherzuweisungserfordernis jeder der mehreren reduzierten Class-Dateien zu berechnen (406 ); und einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, das Gesamtspeicherzuweisungserfordernis in der Multi-Class-Datei zu speichern. - Computerprogrammprodukt nach Anspruch 8, das des weiteren umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, das Gesamtspeicherzuweisungserfordernis aus der Multi-Class-Datei zu lesen; einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, einen Teil eines Speichers basierend auf dem Gesamtspeicherzuweisungserfordernis zuzuweisen; einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, die reduzierten Class-Dateien und die gemeinsame Tabelle in den Teil des Speichers zu laden.
- Computerprogrammprodukt nach Anspruch 9, das des weiteren umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, auf die gemeinsame Tabelle in dem Teil des Speichers zuzugreifen, um eines oder mehrere in einer oder mehreren der reduzierten Class-Dateien nicht gefundene Elemente zu erhalten.
- Computerprogrammprodukt nach Anspruch 7, wobei der computerlesbare Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, die mehreren doppelten Elemente zu bestimmen (
402 ), umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, eine oder mehrere zwischen zwei oder mehreren Class-Dateien gemeinsam geteilte Konstanten zu bestimmen. - Computerprogrammprodukt nach Anspruch 11, wobei der computerlesbare Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, die gemeinsame Tabelle zu bilden, umfaßt: einen computerlesbaren Programmcode, der konfiguriert ist, einen Computer dazu zu veranlassen, eine gemeinsame Konstanten-Tabelle zu bilden, die die eine oder mehreren zwischen den zwei oder mehreren Class-Dateien gemeinsam geteilten Konstanten umfaßt.
- Vorrichtung, umfassend: einen Prozessor; einen mit dem Prozessor gekoppelten Speicher; mehrere im Speicher gespeicherte Class-Dateien; einen auf dem Prozessor ablaufenden Prozeß, wobei der Prozeß konfiguriert ist, eine Multi-Class-Datei zu bilden, die umfaßt: mehrere reduzierte Class-Dateien (
503 ), die aus den mehreren Class-Dateien durch Entfernen eines oder mehrerer Elemente, die in zwei oder mehr der mehreren Class-Dateien doppelt sind, erhalten sind; und eine zwischen den Class-Dateien gemeinsam geteilte Tabelle (501 ), welche die doppelten Elemente umfaßt. - Vorrichtung nach Anspruch 13, wobei die Multi-Class-Datei des weiteren ein Speichererfordernis (
502 ) umfaßt, wobei das Speichererfordernis durch den Prozeß berechnet wird. - Vorrichtung nach Anspruch 13, wobei die doppelten Elemente Elemente von Konstanten-Datenbasen jeweiliger Class-Dateien umfassen, wobei die gemeinsame Tabelle (
501 ) einen gemeinsamen Konstanten-Pool umfaßt. - Vorrichtung nach Anspruch 13, die des weiteren umfaßt: eine Virtual-Machine mit einem Class-Loader und einem Runtime-Datenbereich, wobei der Class-Loader konfiguriert ist, die Multi-Class-Datei in den Runtime-Datenbereich zu erhalten und zu laden.
- Vorrichtung nach Anspruch 16, wobei der Class-Loader konfiguriert ist, einen Teil des Runtime-Datenbereichs basierend auf dem Speichererfordernis (
502 ) in der Multi-Class-Datei zuzuweisen. - Vorrichtung nach Anspruch 17, wobei der Class-Loader konfiguriert ist, die mehreren reduzierten Class-Dateien (
503 ) und die gemeinsame Tabelle (501 ) in den Teil des Runtime-Datenbereichs zu laden. - Vorrichtung nach Anspruch 16, wobei die Virtual-Machine konfiguriert ist, auf die gemeinsame Tabelle (
501 ) zuzugreifen, wenn ein gewünschtes mit einer ersten Class-Datei in Verbindung stehendes Element nicht in einer entsprechenden der mehreren reduzierten Class-Dateien (503 ) vorhanden ist. - Vorrichtung nach einem der Ansprüche 13 bis 19, umfassend einen Speicher, der konfiguriert ist, Daten für einen Zugriff durch eine Virtual-Machine, die in einem Computersystem ausführt, zu speichern, wobei der Speicher umfaßt: eine im Speicher gespeicherte Datenstruktur, wobei die Datenstruktur umfaßt: mehrere reduzierte Class-Dateien (
503 ), die mit mehreren entsprechenden Classes zusammenhängen, wobei die mehreren reduzierten Class-Dateien (503 ) konfiguriert sind, durch die Virtual-Machine zur Ausführung der mehreren Classes geladen zu werden; eine zwischen den Class-Dateien gemeinsam geteilte Tabelle (501 ), die eines oder mehrere Elemente umfaßt, die in zwei oder mehreren der mehreren Classes doppelt sind, wobei die gemeinsame Tabelle (501 ) konfiguriert ist, in die Virtual-Machine geladen zu werden, damit darauf für die doppelten Elemente zugegriffen werden kann; und einen Speichererforderniswert (502 ), der konfiguriert ist, durch einen Class-Loader der Virtual-Machine gelesen zu werden, um einen Teil eines Runtime-Datenbereichs zum Laden der mehreren reduzierten Class-Dateien (503 ) und der gemeinsamen Tabelle (501 ) zuzuweisen. - Vorrichtung nach Anspruch 20, wobei die doppelten Elemente aus den mehreren reduzierten Class-Dateien (
503 ) entfernt sind. - Vorrichtung nach Anspruch 20, wobei die doppelten Elemente Konstanten aufweisen und die gemeinsame Tabelle (
501 ) einen gemeinsamen Konstanten-Pool aufweist. - Vorrichtung nach Anspruch 20, wobei der Speichererforderniswert (
502 ) aus individuellen Speichererfordernissen der mehreren reduzierten Class-Dateien (503 ) und einem Speichererfordernis der gemeinsamen Tabelle (501 ) berechnet wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/961,874 US5966702A (en) | 1997-10-31 | 1997-10-31 | Method and apparatus for pre-processing and packaging class files |
US961874 | 1997-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69834087D1 DE69834087D1 (de) | 2006-05-18 |
DE69834087T2 true DE69834087T2 (de) | 2006-11-23 |
Family
ID=25505128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69834087T Expired - Lifetime DE69834087T2 (de) | 1997-10-31 | 1998-10-28 | Verfahren und Gerät zur Vorverarbeitung und Verpackung von Klassendateien |
Country Status (5)
Country | Link |
---|---|
US (2) | US5966702A (de) |
EP (1) | EP0913769B1 (de) |
JP (1) | JP2000029706A (de) |
KR (1) | KR100562398B1 (de) |
DE (1) | DE69834087T2 (de) |
Families Citing this family (219)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145119A (en) * | 1997-03-31 | 2000-11-07 | International Business Machines Corporation | Programming development environment for intranet and internet applications employing unique project data structure |
US6292827B1 (en) * | 1997-06-20 | 2001-09-18 | Shore Technologies (1999) Inc. | Information transfer systems and method with dynamic distribution of data, control and management of information |
US6314429B1 (en) * | 1997-10-08 | 2001-11-06 | Mitel Corporation | Bi-directional conversion library |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
EP1057121B1 (de) * | 1998-02-17 | 2006-10-04 | Intergraph Hardware Technologies Company | Apparat und verfahren zum übermitteln von dokumenten zwischen einem server-rechner und einem benutzer-rechner |
US6199196B1 (en) * | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
US6493870B1 (en) * | 1998-03-20 | 2002-12-10 | Sun Microsystems, Inc. | Methods and apparatus for packaging a program for remote execution |
US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
JPH11272825A (ja) * | 1998-03-24 | 1999-10-08 | Toshiba Corp | アクセス管理方法及びその装置 |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US6263489B1 (en) * | 1998-04-30 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code |
US6434741B1 (en) | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
US6105066A (en) * | 1998-05-05 | 2000-08-15 | International Business Machines Corp. | Client-server system with central application management and using fully qualified class names of object-oriented applications for determining permanent server storage locations for application configuration information |
US20020138640A1 (en) * | 1998-07-22 | 2002-09-26 | Uri Raz | Apparatus and method for improving the delivery of software applications and associated data in web-based systems |
US7197570B2 (en) | 1998-07-22 | 2007-03-27 | Appstream Inc. | System and method to send predicted application streamlets to a client device |
US20010044850A1 (en) | 1998-07-22 | 2001-11-22 | Uri Raz | Method and apparatus for determining the order of streaming modules |
US6311221B1 (en) * | 1998-07-22 | 2001-10-30 | Appstream Inc. | Streaming modules |
US20010037400A1 (en) * | 1998-07-22 | 2001-11-01 | Uri Raz | Method and system for decreasing the user-perceived system response time in web-based systems |
US6289012B1 (en) | 1998-08-03 | 2001-09-11 | Instanton Corporation | High concurrency data download apparatus and method |
US6430569B1 (en) * | 1998-08-14 | 2002-08-06 | Sun Microsystems, Inc. | Methods and apparatus for type safe, lazy, user-defined class loading |
US6708181B1 (en) * | 1998-09-01 | 2004-03-16 | International Business Machines Corporation | System and method for initializing variables in an object-oriented program |
GB2341463B (en) * | 1998-09-12 | 2003-02-19 | Ibm | Software file loading |
US6366898B2 (en) * | 1998-09-21 | 2002-04-02 | Sun, Microsystems, Inc. | Method and apparatus for managing classfiles on devices without a file system |
US6154842A (en) * | 1998-10-13 | 2000-11-28 | Motorola, Inc. | Method and system for reducing time and power requirements for executing computer-readable instruction streams in an execution environment having run-time security constraints |
US6336122B1 (en) * | 1998-10-15 | 2002-01-01 | International Business Machines Corporation | Object oriented class archive file maker and method |
JP2000122876A (ja) * | 1998-10-16 | 2000-04-28 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
GB2343021A (en) * | 1998-10-19 | 2000-04-26 | Ibm | Class loading model for object oriented programming |
US6385643B1 (en) | 1998-11-05 | 2002-05-07 | Bea Systems, Inc. | Clustered enterprise Java™ having a message passing kernel in a distributed processing system |
US6236999B1 (en) * | 1998-11-05 | 2001-05-22 | Bea Systems, Inc. | Duplicated naming service in a distributed processing system |
US6571274B1 (en) | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
US6581088B1 (en) | 1998-11-05 | 2003-06-17 | Beas Systems, Inc. | Smart stub or enterprise javaTM bean in a distributed processing system |
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
CA2255035C (en) * | 1998-11-30 | 2002-01-29 | Victor Shih-Chuan Chan | Archiving tool |
US6295643B1 (en) * | 1998-12-10 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for improving java virtual machine performance using persistent execution information |
US6223224B1 (en) * | 1998-12-17 | 2001-04-24 | International Business Machines Corporation | Method and apparatus for multiple file download via single aggregate file serving |
GB2345160B (en) * | 1998-12-23 | 2003-08-20 | Ibm | Virtual machine memory management |
GB2345159B (en) * | 1998-12-23 | 2003-08-20 | Ibm | Virtual machine memory management |
US6446060B1 (en) * | 1999-01-26 | 2002-09-03 | International Business Machines Corporation | System and method for sequential processing for content-based retrieval of composite objects |
US6684393B1 (en) | 1999-01-29 | 2004-01-27 | International Business Machines Corporation | Compilation method and system to reuse memory storage instead of allocating it |
US6880155B2 (en) * | 1999-02-02 | 2005-04-12 | Sun Microsystems, Inc. | Token-based linking |
US6542899B1 (en) * | 1999-02-19 | 2003-04-01 | Sun Microsystems, Inc. | Method and system for expressing information from an object-oriented database in a grammatical form |
US7283991B1 (en) * | 1999-03-11 | 2007-10-16 | Microsoft Corporation | Caching system for path search optimization |
US6321240B1 (en) * | 1999-03-15 | 2001-11-20 | Trishul M. Chilimbi | Data structure partitioning with garbage collection to optimize cache utilization |
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 |
US6763397B1 (en) | 1999-05-27 | 2004-07-13 | Sun Microsystems, Inc. | Fully lazy linking |
US6601114B1 (en) | 1999-05-27 | 2003-07-29 | Sun Microsystems, Inc. | Fully lazy linking with module-by-module verification |
US6618769B1 (en) * | 1999-05-27 | 2003-09-09 | Sun Microsystems, Inc. | Module-by-module verification |
US6766521B1 (en) | 1999-05-27 | 2004-07-20 | Sun Microsystems, Inc. | Dataflow algorithm for symbolic computation of lowest upper bound type |
US6618855B1 (en) * | 1999-05-27 | 2003-09-09 | Sun Microsystems, Inc. | Caching untrusted modules for module-by-module verification |
US6490616B1 (en) | 1999-06-14 | 2002-12-03 | Wind River International, Ltd. | Method and apparatus for incremental download from server to client |
US6857015B1 (en) | 1999-06-14 | 2005-02-15 | Wind River International, Ltd. | Method and system for remotely observing and controlling objects |
US6584612B1 (en) * | 1999-07-15 | 2003-06-24 | International Business Machines Corporation | Transparent loading of resources from read-only memory for an application program |
US6834284B2 (en) * | 1999-08-12 | 2004-12-21 | International Business Machines Corporation | Process and system for providing name service scoping behavior in java object-oriented environment |
US7882501B1 (en) * | 1999-08-13 | 2011-02-01 | Oracle America, Inc. | System and method for enabling dynamic modifed class reloading in an application server environment |
US6845503B1 (en) * | 1999-08-13 | 2005-01-18 | Sun Microsystems, Inc. | System and method for enabling atomic class loading in an application server environment |
GB9921721D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6438560B1 (en) * | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
EP1091276A1 (de) * | 1999-10-06 | 2001-04-11 | Alcatel | Vorrichtung und Verfahren zur Authentifizierung von Hypertext-Ressourcen durch elektronischen Unterschriften |
US6829761B1 (en) * | 1999-10-21 | 2004-12-07 | Oracle International Corporation | Method and apparatus for managing shared memory in a run-time environment |
US6634022B1 (en) | 1999-10-28 | 2003-10-14 | Koninklijke Philips Electronics N.V. | Method for platform specific efficiency enhancement of java programs and software product therefor |
GB9925510D0 (en) * | 1999-10-29 | 1999-12-29 | Ibm | Incorporating native code in java archive files |
US7158993B1 (en) | 1999-11-12 | 2007-01-02 | Sun Microsystems, Inc. | API representation enabling submerged hierarchy |
EP1109104A1 (de) * | 1999-12-14 | 2001-06-20 | Sun Microsystems, Inc. | Löschung von unbenutzten Datenschablonen |
US6983315B1 (en) | 2000-01-18 | 2006-01-03 | Wrq, Inc. | Applet embedded cross-platform caching |
AU2001239492A1 (en) * | 2000-02-07 | 2001-08-14 | Insignia Solutions Plc | Global constant pool to allow deletion of constant pool entries |
WO2001061486A2 (en) * | 2000-02-17 | 2001-08-23 | Interactive Video Technologies, Inc. | Incremental bootstrap class loader |
JP2001312406A (ja) * | 2000-02-21 | 2001-11-09 | Matsushita Electric Ind Co Ltd | プログラム生成装置 |
US6745386B1 (en) * | 2000-03-09 | 2004-06-01 | Sun Microsystems, Inc. | System and method for preloading classes in a data processing device that does not have a virtual memory manager |
JP2001256058A (ja) * | 2000-03-13 | 2001-09-21 | Omron Corp | インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置 |
US6675375B1 (en) * | 2000-04-28 | 2004-01-06 | Sun Microsystems, Inc. | Method and apparatus for optimized multiprocessing in a safe language |
US6986132B1 (en) | 2000-04-28 | 2006-01-10 | Sun Microsytems, Inc. | Remote incremental program binary compatibility verification using API definitions |
US6883163B1 (en) * | 2000-04-28 | 2005-04-19 | Sun Microsystems, Inc. | Populating resource-constrained devices with content verified using API definitions |
US6651186B1 (en) * | 2000-04-28 | 2003-11-18 | Sun Microsystems, Inc. | Remote incremental program verification using API definitions |
US6976061B1 (en) * | 2000-05-24 | 2005-12-13 | Sun Microsystems, Inc. | Resource adapter and XML descriptor for use in a client server environment utilizing an enterprise information system |
US7085810B1 (en) * | 2000-05-31 | 2006-08-01 | International Business Machines Corporation | Dynamic command sets in a computer messaging system in a method, system and program |
US6941410B1 (en) * | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US6865657B1 (en) * | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
JP4280957B2 (ja) * | 2000-08-17 | 2009-06-17 | ソニー株式会社 | 画像処理装置および方法、並びに記録媒体 |
US6918126B1 (en) * | 2000-09-08 | 2005-07-12 | International Business Machines Corporation | Method and apparatus for creating and enforcing protected system level Java code |
US6981245B1 (en) * | 2000-09-14 | 2005-12-27 | Sun Microsystems, Inc. | Populating binary compatible resource-constrained devices with content verified using API definitions |
US7051315B2 (en) | 2000-09-26 | 2006-05-23 | Appstream, Inc. | Network streaming of multi-application program code |
US6810519B1 (en) * | 2000-09-29 | 2004-10-26 | International Business Machines Corporation | Achieving tight binding for dynamically loaded software modules via intermodule copying |
US7013455B1 (en) | 2000-10-19 | 2006-03-14 | International Business Machines Corporation | System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence |
US6839712B1 (en) | 2000-10-26 | 2005-01-04 | International Business Machines Corporation | Pre-processing code to identify and modify format of keys |
US20020078165A1 (en) * | 2000-12-14 | 2002-06-20 | International Business Machines Corporation | System and method for prefetching portions of a web page based on learned preferences |
US6851111B2 (en) * | 2000-12-15 | 2005-02-01 | International Business Machines Corporation | System and method for class loader constraint checking |
US6892377B1 (en) * | 2000-12-21 | 2005-05-10 | Vignette Corporation | Method and system for platform-independent file system interaction |
US7349912B2 (en) * | 2000-12-22 | 2008-03-25 | Oracle International Corporation | Runtime modification of entries in an identity system |
US7581011B2 (en) | 2000-12-22 | 2009-08-25 | Oracle International Corporation | Template based workflow definition |
US7363339B2 (en) * | 2000-12-22 | 2008-04-22 | Oracle International Corporation | Determining group membership |
US7711818B2 (en) | 2000-12-22 | 2010-05-04 | Oracle International Corporation | Support for multiple data stores |
US7415607B2 (en) | 2000-12-22 | 2008-08-19 | Oracle International Corporation | Obtaining and maintaining real time certificate status |
US7085834B2 (en) | 2000-12-22 | 2006-08-01 | Oracle International Corporation | Determining a user's groups |
US7475151B2 (en) | 2000-12-22 | 2009-01-06 | Oracle International Corporation | Policies for modifying group membership |
US7380008B2 (en) | 2000-12-22 | 2008-05-27 | Oracle International Corporation | Proxy system |
US8015600B2 (en) | 2000-12-22 | 2011-09-06 | Oracle International Corporation | Employing electronic certificate workflows |
US7213249B2 (en) * | 2000-12-22 | 2007-05-01 | Oracle International Corporation | Blocking cache flush requests until completing current pending requests in a local server and remote server |
US7937655B2 (en) | 2000-12-22 | 2011-05-03 | Oracle International Corporation | Workflows with associated processes |
US7802174B2 (en) | 2000-12-22 | 2010-09-21 | Oracle International Corporation | Domain based workflows |
US20060036941A1 (en) * | 2001-01-09 | 2006-02-16 | Tim Neil | System and method for developing an application for extending access to local software of a wireless device |
US7107537B2 (en) * | 2001-01-16 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Apparatus and method for updating applications to embedded devices and peripherals within a network environment |
EP1374046B1 (de) * | 2001-02-23 | 2012-02-22 | Microsoft Corporation | System und verfahren zum transformieren von objektkodes |
US20020170047A1 (en) * | 2001-02-23 | 2002-11-14 | Brian Swetland | System and method for transforming object code |
US6751790B2 (en) * | 2001-05-09 | 2004-06-15 | Sun Microsystems, Inc. | Frameworks for efficient representation of string objects in Java programming environments |
US6996824B2 (en) * | 2001-05-09 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for efficient representation of string objects in Java programming environments |
US6986129B2 (en) * | 2001-05-16 | 2006-01-10 | Sun Microsystems, Inc. | System and method for java preprocessor |
US7389515B1 (en) | 2001-05-21 | 2008-06-17 | Microsoft Corporation | Application deflation system and method |
US7243346B1 (en) * | 2001-05-21 | 2007-07-10 | Microsoft Corporation | Customized library management system |
CA2448962C (en) * | 2001-05-30 | 2009-10-06 | Research In Motion Limited | A mobile communications device application processing system |
US7171422B2 (en) * | 2001-06-02 | 2007-01-30 | Iona Technologies | Caching system for nested archives |
US8205193B2 (en) * | 2001-06-11 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Runtime updating of virtual machine class files |
EP1333374B1 (de) * | 2001-06-11 | 2016-09-07 | Sap Se | Dynamische Erzeugung von sprachlokalisierten und selbstprüfenden Javaklassen unter Verwendung von XML Beschreibungen und statischen Initialisatoren |
US7082597B2 (en) * | 2001-06-20 | 2006-07-25 | Sun Microsystems, Inc. | Representation of objects in a Java programming environment |
US6901589B2 (en) * | 2001-06-25 | 2005-05-31 | Wind River Systems, Inc. | System and method for determining a root cause of a failure |
US6732108B2 (en) | 2001-07-12 | 2004-05-04 | International Business Machines Corporation | Class file archives with reduced data volume |
US7036120B2 (en) * | 2001-07-31 | 2006-04-25 | Sun Microsystems, Inc. | Two tier clusters for representation of objects in Java programming environments |
US6934944B2 (en) * | 2001-08-13 | 2005-08-23 | International Business Machines Corporation | Computer system and method for constant pool operations |
US7213240B2 (en) | 2001-10-05 | 2007-05-01 | Sun Microsystems, Inc. | Platform-independent selective ahead-of-time compilation |
US7093242B2 (en) * | 2001-11-19 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamic class interposition |
US6976254B2 (en) | 2001-11-28 | 2005-12-13 | Esmertec Ag | Inter-method control transfer for execution engines with memory constraints |
US7225256B2 (en) | 2001-11-30 | 2007-05-29 | Oracle International Corporation | Impersonation in an access system |
US6938241B1 (en) * | 2001-12-10 | 2005-08-30 | Lsi Logic Corporation | Compiler independent bit-field macros |
US7319948B2 (en) * | 2002-05-06 | 2008-01-15 | Sun Microsystems, Inc. | Blocking access to selected APIs |
US7840658B2 (en) | 2002-05-15 | 2010-11-23 | Oracle International Corporation | Employing job code attributes in provisioning |
US7216163B2 (en) | 2002-05-15 | 2007-05-08 | Oracle International Corporation | Method and apparatus for provisioning tasks using a provisioning bridge server |
US7506323B2 (en) | 2002-06-18 | 2009-03-17 | Panasonic Corporation | Program execution processing terminal device, program execution processing method, and program |
US7745203B2 (en) * | 2002-07-31 | 2010-06-29 | Kabushiki Kaisha Toshiba | Base sequence detection apparatus and base sequence automatic analyzing apparatus |
US7165076B2 (en) * | 2002-11-15 | 2007-01-16 | Check Point Software Technologies, Inc. | Security system with methodology for computing unique security signature for executable file employed across different machines |
US7761861B2 (en) | 2002-11-29 | 2010-07-20 | Research In Motion Limited | Method for generating interpretable code for storage in a device having limited storage |
US7263696B1 (en) * | 2002-12-10 | 2007-08-28 | Emc Corporation | Dynamic web based jar file finder |
US7051324B2 (en) * | 2003-01-16 | 2006-05-23 | International Business Machines Corporation | Externalized classloader information for application servers |
KR100493893B1 (ko) * | 2003-02-07 | 2005-06-10 | 삼성전자주식회사 | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 |
US7073171B2 (en) * | 2003-02-28 | 2006-07-04 | Bea Systems, Inc. | EJB implementation class loading with removed dependencies with ability to replace EJB implementation class without full redeployment |
US7644401B2 (en) * | 2003-04-24 | 2010-01-05 | International Business Machines Corporation | Executable file creation |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7305666B2 (en) * | 2003-07-23 | 2007-12-04 | Microsoft Corporation | Description language for an extensible compiler and tools infrastructure |
US7120898B2 (en) * | 2003-06-26 | 2006-10-10 | Microsoft Corporation | Intermediate representation for multiple exception handling models |
US7146606B2 (en) * | 2003-06-26 | 2006-12-05 | Microsoft Corporation | General purpose intermediate representation of software for software development tools |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US20050028152A1 (en) * | 2003-08-01 | 2005-02-03 | International Business Machines Corporation | Method and apparatus for identifying a Java class package name without disassembling Java bytecodes |
US8862686B2 (en) * | 2003-08-28 | 2014-10-14 | International Business Machines Corporation | System and method for providing shared web modules |
US20050060272A1 (en) * | 2003-09-11 | 2005-03-17 | Wen-Hua Lin | Embedded system program code reduction method and system |
JP4097584B2 (ja) * | 2003-09-19 | 2008-06-11 | 株式会社リコー | Wwwサーバ機能を有する組み込み機器、ウェブページ提供方法、および、ウェブページ提供制御プログラム |
US7340447B2 (en) | 2003-10-09 | 2008-03-04 | Oracle International Corporation | Partitioning data access requests |
US7904487B2 (en) | 2003-10-09 | 2011-03-08 | Oracle International Corporation | Translating data access requests |
US7882132B2 (en) | 2003-10-09 | 2011-02-01 | Oracle International Corporation | Support for RDBMS in LDAP system |
US7188339B2 (en) * | 2003-10-24 | 2007-03-06 | Hewlett-Packard Development Company, L.P. | ACPI preprocessor |
US7480895B2 (en) * | 2003-11-24 | 2009-01-20 | International Business Machines Corporation | Web application development tool |
US7313820B2 (en) * | 2003-12-29 | 2007-12-25 | International Business Machines Corporation | Method and system for providing an authorization framework for applications |
US20050155024A1 (en) * | 2004-01-14 | 2005-07-14 | Jeffrey Wannamaker | Method of transforming java bytecode into a directly interpretable compressed format |
US7275069B2 (en) * | 2004-04-26 | 2007-09-25 | Tarari, Inc. | System and method for tokening documents |
US7380214B1 (en) | 2004-04-29 | 2008-05-27 | Sap Ag | Graphical user interface with an error reporting system |
US7360170B1 (en) * | 2004-04-29 | 2008-04-15 | Sap Ag | Graphical user interface and background search methodology for creating references between software components |
US8627283B2 (en) * | 2004-04-29 | 2014-01-07 | Sap Ag | Graphical user interface with a background class loading event system |
US7412700B2 (en) * | 2004-05-18 | 2008-08-12 | Oracle International Corporation | Product packaging and installation mechanism |
US8522205B2 (en) * | 2004-05-18 | 2013-08-27 | Oracle International Corporation | Packaging multiple groups of read-only files of an application's components into multiple shared libraries |
US7546593B2 (en) | 2004-05-28 | 2009-06-09 | Sap Ag | Common class loaders |
FR2871590B1 (fr) | 2004-06-15 | 2006-08-04 | Gemplus Sa | Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif. |
US7647581B2 (en) * | 2004-06-30 | 2010-01-12 | International Business Machines Corporation | Evaluating java objects across different virtual machine vendors |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
US7516149B2 (en) | 2004-08-30 | 2009-04-07 | Microsoft Corporation | Robust detector of fuzzy duplicates |
US7630974B2 (en) | 2004-09-28 | 2009-12-08 | Oracle International Corporation | Multi-language support for enterprise identity and access management |
JP4575860B2 (ja) * | 2004-10-21 | 2010-11-04 | 株式会社リコー | 画像形成装置、インストール方法、インストールプログラム、及び記録媒体 |
US7849459B2 (en) * | 2004-11-04 | 2010-12-07 | International Business Machines Corporation | Deploying java applications in resource constrained environments |
US7444629B2 (en) * | 2004-11-12 | 2008-10-28 | International Business Machines Corporation | Autonomic self-healing of java resources |
MY135555A (en) * | 2004-12-14 | 2008-05-30 | Axiomatic Solutions Sdn Bhd | Compile time linking via hashing technique |
US9535679B2 (en) * | 2004-12-28 | 2017-01-03 | International Business Machines Corporation | Dynamically optimizing applications within a deployment server |
US7581216B2 (en) * | 2005-01-21 | 2009-08-25 | International Business Machines Corporation | Preserving platform independence with native accelerators for performance critical program objects |
US7574700B2 (en) * | 2005-03-31 | 2009-08-11 | Sun Microsystems, Inc. | Supporting dynamically-typed languages in typed assembly languages |
US7703089B2 (en) * | 2005-04-29 | 2010-04-20 | Sap Ag | Compatibility framework using versioning class loaders |
DE102005061659A1 (de) * | 2005-12-22 | 2007-06-28 | Giesecke & Devrient Gmbh | Sicherung eines tragbaren Datenträgers gegen Angriffe |
US7627863B2 (en) * | 2006-01-13 | 2009-12-01 | Microsoft Corporation | Typed intermediate language support for languages with multiple inheritance |
US8250559B2 (en) * | 2006-04-12 | 2012-08-21 | Oracle America, Inc. | Supporting per-program classpaths with class sharing in a multi-tasking virtual machine |
US7814498B2 (en) * | 2006-05-01 | 2010-10-12 | Microsoft Corporation | Loading application resources |
US8351919B2 (en) * | 2006-10-23 | 2013-01-08 | Research In Motion Limited | Apparatus, and associated method, by which to store specific network identifiers at a wireless device |
US9183011B2 (en) * | 2006-10-31 | 2015-11-10 | Oracle America Inc. | Method and system for runtime environment emulation |
US8892533B2 (en) * | 2007-09-28 | 2014-11-18 | Apple Inc. | Accelerated cached object retrieval |
US8127284B2 (en) * | 2007-10-16 | 2012-02-28 | Microsoft Corporation | On-demand loading of types of software code of a program executing on a computing device |
US8352509B2 (en) * | 2007-12-19 | 2013-01-08 | International Business Machines Corporation | Methods, systems, and computer program products for accessing a multi-format data object |
US8589788B2 (en) * | 2007-12-19 | 2013-11-19 | International Business Machines Corporation | Methods, systems, and computer program products for automatic parsing of markup language documents |
US8813041B2 (en) * | 2008-02-14 | 2014-08-19 | Yahoo! Inc. | Efficient compression of applications |
US8875115B2 (en) * | 2008-11-29 | 2014-10-28 | International Business Machines Corporation | Type merging technique to reduce class loading during Java verification |
US9450783B2 (en) * | 2009-05-28 | 2016-09-20 | Red Hat, Inc. | Abstracting cloud management |
WO2011018852A1 (ja) * | 2009-08-13 | 2011-02-17 | 株式会社日立ソリューションズ | 重複排除機能付きデータ格納装置及び当該データ格納装置の検索インデックスを作成する制御装置 |
CN102147734B (zh) * | 2010-02-10 | 2016-01-13 | 甲骨文国际公司 | 运行时类提取的方法和系统 |
US8984009B2 (en) | 2010-04-21 | 2015-03-17 | Salesforce.Com, Inc. | Methods and systems for utilizing bytecode in an on-demand service environment including providing multi-tenant runtime environments and systems |
US8499299B1 (en) | 2010-06-29 | 2013-07-30 | Ca, Inc. | Ensuring deterministic thread context switching in virtual machine applications |
US8732670B1 (en) | 2010-06-29 | 2014-05-20 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
US8769518B1 (en) | 2010-06-29 | 2014-07-01 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
US8839215B2 (en) * | 2010-07-19 | 2014-09-16 | International Business Machines Corporation | String cache file for optimizing memory usage in a java virtual machine |
CN102810065B (zh) | 2011-05-31 | 2016-04-27 | 国际商业机器公司 | 用于加载程序模块的方法和系统 |
US10346938B2 (en) | 2011-08-09 | 2019-07-09 | Drfirst.Com, Inc. | Systems and methods for providing supplemental materials to increase patient adherence to prescribed medication |
US20130246082A1 (en) | 2012-03-16 | 2013-09-19 | Brandon Anthony Brylawski | Systems and Methods for Supplementing Patient and Provider Interactions to Increase Patient Adherence Specifically Using Combined Educational Coupons and Tailored Educational Documents and Services |
CA2759516C (en) | 2011-11-24 | 2019-12-31 | Ibm Canada Limited - Ibm Canada Limitee | Serialization of pre-initialized objects |
CA2753626C (en) * | 2011-09-30 | 2019-05-07 | Ibm Canada Limited - Ibm Canada Limitee | Packed data objects |
US8843912B2 (en) | 2012-02-20 | 2014-09-23 | International Business Machines Corporation | Optimization of an application to reduce local memory usage |
US10832364B2 (en) | 2012-03-16 | 2020-11-10 | Drfirst.Com, Inc. | Information system for physicians |
US9043934B2 (en) * | 2012-04-06 | 2015-05-26 | Wayne Odom | System, method, and device for delivering communications and storing and delivering data |
US8892876B1 (en) | 2012-04-20 | 2014-11-18 | Trend Micro Incorporated | Secured application package files for mobile computing devices |
US9092306B1 (en) | 2012-04-27 | 2015-07-28 | Trend Micro Incorporated | Lightweight data leakage detection for mobile computing devices |
US20130304510A1 (en) | 2012-05-08 | 2013-11-14 | Drfirst.Com, Inc. | Health information exchange system and method |
US8677495B1 (en) | 2012-05-24 | 2014-03-18 | Trend Micro Incorporated | Dynamic trap for detecting malicious applications in computing devices |
US9383448B2 (en) | 2012-07-05 | 2016-07-05 | Deca System Co., Ltd. | Golf GPS device with automatic hole recognition and playing hole selection |
US10333820B1 (en) * | 2012-10-23 | 2019-06-25 | Quest Software Inc. | System for inferring dependencies among computing systems |
US9785456B2 (en) * | 2014-04-22 | 2017-10-10 | Oracle International Corporation | Metadata-driven dynamic specialization |
US9355011B2 (en) | 2014-06-09 | 2016-05-31 | International Business Machines Corporation | Detecting potential class loader problems using the class search path sequence for each class loader |
US9535666B2 (en) * | 2015-01-29 | 2017-01-03 | AppDynamics, Inc. | Dynamic agent delivery |
US9762385B1 (en) * | 2015-07-20 | 2017-09-12 | Trend Micro Incorporated | Protection of program code of apps of mobile computing devices |
CN106802860B (zh) * | 2015-11-25 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 无用类检测方法及装置 |
JP2017126293A (ja) * | 2016-01-15 | 2017-07-20 | キヤノン株式会社 | 情報処理装置及びリソース管理方法 |
GB2554083A (en) * | 2016-09-16 | 2018-03-28 | Siemens Rail Automation Holdings Ltd | Method for operating a computer, method for controlling a railway network and computer program product |
CN110119274A (zh) | 2018-02-05 | 2019-08-13 | 北京智明星通科技股份有限公司 | 一种数据编译的方法、装置以及电子终端、计算机可读存储介质 |
US11132233B2 (en) * | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
CN115858220A (zh) * | 2022-12-15 | 2023-03-28 | 中电金信软件有限公司 | 一种错误码共享方法、系统、计算机设备及可读存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111395A (en) * | 1989-11-03 | 1992-05-05 | Smith Rodney A | Automated fund collection system including means to eliminate duplicate entries from a mailing list |
US5488725A (en) * | 1991-10-08 | 1996-01-30 | West Publishing Company | System of document representation retrieval by successive iterated probability sampling |
US5367675A (en) * | 1991-12-13 | 1994-11-22 | International Business Machines Corporation | Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query |
US5497486A (en) * | 1994-03-15 | 1996-03-05 | Salvatore J. Stolfo | Method of merging large databases in parallel |
DE69526165T2 (de) * | 1994-09-19 | 2002-10-31 | Sun Microsystems Inc | Verfahren und Einrichtung für das Aufrufen von Objekten mit Schnittstellenvererbung |
US5838965A (en) * | 1994-11-10 | 1998-11-17 | Cadis, Inc. | Object oriented database management system |
US5548754A (en) * | 1995-02-07 | 1996-08-20 | International Business Machines Corporation | Optimization of SQL queries using early-out join transformations |
US5850544A (en) * | 1995-06-06 | 1998-12-15 | International Business Machines Corporation | System and method for efficient relational query generation and tuple-to-object translation in an object-relational gateway supporting class inheritance |
US5813009A (en) * | 1995-07-28 | 1998-09-22 | Univirtual Corp. | Computer based records management system method |
US5732265A (en) * | 1995-11-02 | 1998-03-24 | Microsoft Corporation | Storage optimizing encoder and method |
US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
US5826265A (en) * | 1996-12-06 | 1998-10-20 | International Business Machines Corporation | Data management system having shared libraries |
US6026237A (en) * | 1997-11-03 | 2000-02-15 | International Business Machines Corporation | System and method for dynamic modification of class files |
US6286051B1 (en) * | 1997-11-12 | 2001-09-04 | International Business Machines Corporation | Method and apparatus for extending a java archive file |
US6047318A (en) * | 1997-11-19 | 2000-04-04 | International Business Machines Corporation | Method of downloading java bean files in a network |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
US6260187B1 (en) * | 1998-08-20 | 2001-07-10 | Wily Technology, Inc. | System for modifying object oriented code |
US6446084B1 (en) * | 1998-09-22 | 2002-09-03 | Sun Microsystems, Inc. | Optimizing symbol table lookups in platform-independent virtual machines |
US6336122B1 (en) * | 1998-10-15 | 2002-01-01 | International Business Machines Corporation | Object oriented class archive file maker and method |
GB2343021A (en) * | 1998-10-19 | 2000-04-26 | Ibm | Class loading model for object oriented programming |
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
-
1997
- 1997-10-31 US US08/961,874 patent/US5966702A/en not_active Expired - Lifetime
-
1998
- 1998-10-28 EP EP98120428A patent/EP0913769B1/de not_active Expired - Lifetime
- 1998-10-28 DE DE69834087T patent/DE69834087T2/de not_active Expired - Lifetime
- 1998-10-29 JP JP10346523A patent/JP2000029706A/ja active Pending
- 1998-10-31 KR KR1019980046555A patent/KR100562398B1/ko not_active IP Right Cessation
-
1999
- 1999-07-19 US US09/356,589 patent/US6530080B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR100562398B1 (ko) | 2006-12-01 |
EP0913769B1 (de) | 2006-04-05 |
US6530080B2 (en) | 2003-03-04 |
US5966702A (en) | 1999-10-12 |
EP0913769A2 (de) | 1999-05-06 |
KR19990037560A (ko) | 1999-05-25 |
DE69834087D1 (de) | 2006-05-18 |
EP0913769A3 (de) | 1999-12-01 |
US20030009743A1 (en) | 2003-01-09 |
JP2000029706A (ja) | 2000-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69834087T2 (de) | Verfahren und Gerät zur Vorverarbeitung und Verpackung von Klassendateien | |
DE60035745T2 (de) | Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung | |
DE69919384T2 (de) | Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms | |
DE69936162T2 (de) | Verfahren und Gerät für ein objektorientiertes Unterbrechungssystem | |
EP1393184B1 (de) | Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten | |
DE60031370T2 (de) | Tokenbasierte verknüpfung | |
DE69734175T2 (de) | Transportunabhängige Anruf- und Dienstschnittstellen, die die Marshalling von integrierten Type-Codes sowie kompilierten Code erlauben | |
DE69724356T2 (de) | Verfahren und Apparat für die Darstellung von Information im Bezug auf jeden einzelnen von mehreren Hyperlinks | |
DE69737709T2 (de) | Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung | |
DE69730276T2 (de) | Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes | |
DE69533530T2 (de) | Verfahren und System zur dynamischen Aggregation von Objekten | |
DE60126016T2 (de) | Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen | |
DE69918334T2 (de) | Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen | |
DE69727381T2 (de) | Verfahren zum transportieren von in einer schnittstellendefinitionssprache definierten datenstrukturen zwischen heterogenen systemen | |
DE60208710T2 (de) | Plattformunabhängige im-voraus-kompilierung | |
DE69827213T2 (de) | Verfahren und Vorrichtung zur Erhöhung der Datenausgabe eines Geräts mit eingeschränkten Betriebsmitteln | |
DE69727933T2 (de) | Verfahren und gerät zum beschreiben einer definierten schnittstelle, einer operation und eines datentyps in einer schnittstellendefinitionssprache | |
DE69835062T2 (de) | Gemischter Registerstapel und Ausnahmebehandlung | |
DE69721632T2 (de) | Verfahren und Vorrichtung zur Servletverarbeitung | |
DE60002295T2 (de) | Aufwandslose ausnahmebehandlung | |
DE69814174T2 (de) | Java laufzeitsystem mit veränderter sammlung von konstanten | |
DE19928980A1 (de) | Codeerzeugung für einen Bytecode-Compiler | |
EP0967547A2 (de) | Verfahren und Gerät zur Beschaffung eines Stroms von Bytekode und serialisierten Objekten | |
DE69930695T2 (de) | Verfahren und Vorrichtung für ein Applikationsverteiler für eine Serverapplikation | |
DE60103521T2 (de) | Vorladen von klassen in einer datenverarbeitungseinrichtung ohne virtueller speicherverwalter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |