DE69919384T2 - Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms - Google Patents

Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms Download PDF

Info

Publication number
DE69919384T2
DE69919384T2 DE69919384T DE69919384T DE69919384T2 DE 69919384 T2 DE69919384 T2 DE 69919384T2 DE 69919384 T DE69919384 T DE 69919384T DE 69919384 T DE69919384 T DE 69919384T DE 69919384 T2 DE69919384 T2 DE 69919384T2
Authority
DE
Germany
Prior art keywords
computer
file
files
computer program
optimized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69919384T
Other languages
English (en)
Other versions
DE69919384D1 (de
Inventor
Greg White
Han Su CHAN
Achut Reddy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69919384D1 publication Critical patent/DE69919384D1/de
Publication of DE69919384T2 publication Critical patent/DE69919384T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet der Computersoftware und insbesondere ein Verfahren und eine Vorrichtung zur automatischen Optimierung der Ausführung eines Computerprogramms.
  • Teile der Offenbarung dieser Patentunterlagen können Material enthalten, das dem Urheberrechtsschutz unterliegt. Der Inhaber des Urheberrechts hat keinen Einwand, wenn jemand die Patentunterlagen oder die Patentoffenbarung, wie sie in der Akte oder den Aufzeichnungen des Patentamts erscheinen, bildtechnisch reproduziert, behält sich aber alle Urheberrechte darüber hinaus vor. Sun, Sun Microsystems, das Sun-Logo, Java und alle auf Java basierenden Marken und Logos sind Marken oder eingetragene Marken von Sun Microsystems, Inc., in den USA und anderen Ländern.
  • 2. Technischer Hintergrund
  • Die Verwendung von Netzen für die Verteilung von Computerprogrammen ist enorm angewachsen, insbesondere in dem Bereich des Internets und des World Wide Web. Ein Problem beim Verleiten großer Computerprogramme über ein Netz besteht darin, daß viel Zeit benötigt wird, um das Programm herunterzuladen und zu initialisieren. Dieses Problem läßt sich durch einen Überblick über die aktuellen Verfahren zum Verteilen eines Computerprogramms und von Dokumenten über Computernetze verstehen.
  • Internet
  • Computerprogramme und Dokumente können beide über das Internet verteilt werden. Das Internet ist ein weltweites Netz von miteinander verbundenen Computern. Ein Client bzw. ein Internet-Client bezeichnet üblicherweise den Computer, den eine Person benutzt, um auf das Internet zuzugreifen. Ein Internet-Client greift auf andere Computer auf dem Internet über einen Internet-Provider zu. Ein Internet-Provider ist eine Organisation, die einem Client den Zugriff auf das Internet ermöglicht (zum Beispiel über eine analoge Telefonleitung oder über eine Integrated Service Digital Network (ISDN)-Leitung).
  • Dokumentenverteilung über ein Netz
  • Ein Client kann zum Beispiel ein Dokument von einem anderen Computer/Client unter Verwendung des Internets herunterladen oder eine elektronische Mail-Nachricht an diesen senden. Eine Art einer Datei, die ein Client herunterladen kann, ist als eine Web-Seite bekannt. Eine Web-Seite enthält Text, Bilder und andere Arten von Dateien, die dem Client unter Verwendung eines Web-Browsers angezeigt werden. Ein Web-Browser ist ein Softwareprogramm, das auf dem Client ausgeführt wird und das Hypertext Transfer Protocol (HTTP) verwendet, um Web-Seiten von einem Server über das Internet abzurufen. HTTP ist ein Satz von Regeln für das Austauschen von Dateien (Textdateien, Bilddateien, Sounddateien, Videodateien und andere Arten von Dateien). Netscape Navigator und Internet Explorer sind beides Beispiele von weitverbreiteten Web-Browsern, die das HTTP-Protokoll verwenden. (Es ist zu beachten, daß HTTP nur ein für den Dateiaustausch verfügbares Protokoll ist. Verschiedene andere Protokolle können auch benutzt werden).
  • Anzeigen von Dokumenten (oder Dateien) unter Verwendung eines Web-Browsers
  • Die Hypertext Markup Language (HTML) wird benutzt, um zu beschreiben, wie eine Web-Seite dargestellt werden soll. Eine HTML-Beschreibung umfaßt typischerweise einen Satz von „Markup"-Symbolen. Ein HTML-Dokument oder eine Datei, welche die „Markup"-Symbole für eine Web-Seite enthält, wird zu dem Clientcomputer übertragen. Der Web-Browser, der bei dem Client ausgeführt wird, analysiert die „Markup"-Symbole in dem HTML-Dokument syntaktisch und erzeugt eine Web-Seite aufgrund der Informationen in dem HTML-Dokument und zeigt diese an. Damit legt das HTML-Dokument die Web-Seite fest, die während der Laufzeit auf dem Browser erzeugt wird. Beispielsweise führt der folgende Satz von „Markup"-Symbolen dazu, daß der Browser einen Titel, einen Kopf und ein Bild, welches sich „image.jpg" nennt, auf einer Web-Seite anordnet:
    <HTML>
    <HEAD>
    <TITLE>This is the documents title</TITLE>
    </HEAD>
    <BODY>
    <H1>This text displayed using heading level one</H1>
    <IMG SRC=‶http://java.sun.com/image.jpg‶>
    </BODY>
    </HTML>
  • Die „Markup"-Symbole umgeben typischerweise einen HTML-Befehl. Das Symbol „<" zeigt den Beginn eines HTML-Befehls an, und das Symbol „</" zeigt das Ende eines HTLM-Befehls an. Jeder Anfang- oder Endbefehl besitzt ein entsprechendes „>", um den Abschluß dieses entsprechenden Befehls anzuzeigen. Die Informationen, die der HTML-Befehl ausgibt, sind typischerweise zwischen dem Symbol „>" des Startbefehls und dem Symbol „</" des Endbefehls enthalten. Ein HTML-Befehl gibt dem Browser an, was mit dem Informationsblock, der zwischen den zwei Befehlen enthalten ist, zu tun ist. In dem obigen Beispiel sind „<HTML>", „</HTML>", „<TITLE>" und „</TITLE>" Beispiele von HTML-Befehlen, die von „Markup"-Symbolen umgeben sind.
  • Wenn ein Web-Browser ein HTML-Dokument empfängt, stellt er die zwischen jedem Satz von „Markup"-Symbolen enthaltenen Informationen in einer Weise dar, die den ausgegebenen HTML-Befehlen entsprechen. Zum Beispiel weist der Text „<TITLE>This is the document title</TITLE>" den Web-Browser an, den Text „this is the document title" in die Titelleiste des Web-Browsers zu plazieren.
  • Einige HTML-Befehle besitzen Attribute. Der HTML-Befehl „<IMG>" besitzt zum Beispiel ein Attribut „SRC=". Der Befehl <IMG> teilt dem Web-Browser mit, ein Bild anzuzeigen, und das Attribut „SRC=" bestimmt den Ort und den Namen des anzuzeigenden Bildes. Zum Beispiel sagt die Anweisung „<IMG SRC="http://java.sun.com/image.jpg>" dem Web-Browser, ein Bild mit dem Namen image.jpg anzuzeigen, das von dem Web-Server mit der Adresse „http://java.sun.com" erlangt werden kann.
  • Verteilen von Computerprogrammen über das Netz
  • Zusätzlich zum Abrufen von Dokumenten, die „Markup"-Symbole enthalten, kann ein Client auch das Internet benutzen, um andere Dateien, wie Computerprogramme, von anderen Computern, die sich auf dem gleichen Netz befinden, zu erlangen. Es existieren verschiedene Mechanismen, um Computerprogramme unter Verwendung des Internets oder anderer Arten von Computernetzen abzurufen. Um die Probleme und die Nachteile zu verstehen, die mit derzei tigen Ansätzen zum Verteilen von Computerprogrammen über ein Netz verbunden sind, ist ein Überblick über Programmierumgebungen hilfreich.
  • Die von der Programmiersprache Java benutzte Programmierumgebung
  • Java ist eine objektorientierte Programmiersprache und die Programme, die in der Programmiersprache Java geschrieben sind, umfassen mehrere verschiedene Klassen und Schnittstellen. Im Unterschied zu vielen Programmiersprachen, in denen ein Programm in einen maschinenabhängigen, ausführbaren Programmcode kompiliert wird, werden Programme, die in der Programmiersprache Java geschrieben sind, in maschinenunabhängige Bytecode-Klassendateien kompiliert. Jede Klassendatei enthält Code und Daten in einem plattformunabhängigen Format, welches das Klassendateiformat genannt wird. Das Computersystem, welches als das Ausführungsvehikel dient, enthält ein als virtuelle Maschine bezeichnetes Programm, welches für die Ausführung des Bytecodes verantwortlich ist. Die virtuelle Maschine stellt ein Abstraktionsniveau zwischen den maschinenunabhängigen Bytecodeklassen und den maschinenabhängigen Befehlssatz der unterliegenden Computerhardware zur Verfügung. Virtuelle Maschinen existieren für eine Auswahl verschiedener Betriebssysteme. Ein „Klassenlader" in der virtuellen Maschine ist für das Laden der Bytecodeklassendateien verantwortlich, wie sie benötigt werden, und entweder führt ein Interpretierer die Bytecodes direkt aus oder ein „Just-in-time"(JIT)-Kompilierer (Echtzeitkompilierer) transformiert die Bytecodes in Maschinencode, so daß diese von dem Prozessor ausgeführt werden können.
  • Die 1A stellt ein Beispiel einer Programmierumgebung dar, die für die Programmiersprache Java anwendbar ist. Wenn diese Programmierumgebung auf einem Clientcomputer 111 bis 113 (1B) installiert ist, kann dieser Computer diese Programme ausführen. Die Programme laufen in einer Java-Laufzeitumgebung 103 (Java Runtime Environment JRE) ab. Die JRE 103 enthält einen Klassenlader 104, einen Bytecode-Verifizierer 105 und eine oder mehrere Klassen 106. Die JRE benutzt eine virtuelle Maschine für Java (Java Virtual Machine JVM) 107, die einen Bytecode-Interpretierer 108 und eine Peer-Schnittstelle 109 umfaßt. Die JVM 107 interpretiert den Bytecode unter Verwendung eines Bytecode-Interpretierers 108. (Es ist zu beachten, daß in einigen Architekturen (zum Beispiel in JavaStation) die Bytecodes direkt ausgeführt werden können, ohne einen Interpretierer oder einen JIT zu benötigen).
  • Die Programmierumgebung, die für die Programmiersprache Java verwendbar ist, kann optional zusätzliche Komponenten umfassen. Falls gewünscht, kann zum Beispiel ein Just-in-time(JIT)-Kompilierer 110 zu der Programmierumgebung hinzugefügt werden. Der JIT ist ein Kompilierer, der Bytecode in Maschinencode konvertiert, wenn ein Programm ausgeführt wird.
  • Bezug nehmend auf die 1B enthält jeder Computer seine eigene JVM 107. Die JVM 107 wirkt mit verschiedenen Arten von nativen Betriebssystemen 114 bis 116 zusammen. Jeder Computer 111 bis 113 kann verschiedene Betriebssysteme 114 bis 116 aufweisen. Durch Verwendung der JVM 107 sind Computer 111 bis 113 in der Lage, Bytecode in einer Weise auszuführen, die den Betriebssystemen 114 bis 116, die jeder Computer enthält, entspricht. Zum Beispiel können beide Computer 111 und 112 das gleiche Programm ausführen, selbst wenn jeder Computer ein anderes Betriebssystem enthält. Der Computer 111 kann ein Programm unter Verwendung des Betriebssystems UNIX 114 ausführen, und der Computer 112 kann ein Programm unter Verwendung des Java-Betriebssystems 115 ausführen.
  • Beschreibung eines Applets
  • Das Senden eines Applets über ein Computernetz ist eine Möglichkeit, um ein Computerprogramm zu verteilen. Ein Applet ist ein Computerprogramm, das eingebettet in einer Web-Seite auftreten kann oder von der Web-Seite getrennt sein kann. Applets werden zu einem Client gesendet, wenn eine Web-Seite, die ein Applet enthält, von einem Client aufgerufen wird. Wenn zum Beispiel eine Person eine Web-Seite betrachtet, die den folgenden Code enthält, wird ein Applet mit dem Namen „animator" an den Browser zum Anzeigen gesendet:
    <HTML>
    <APPLET CODE=‶animator.class‶ WIDTH=640 HEIGHT=480>
    </HTML>.
  • Ein in der Programmiersprache Java geschriebenes Applet, das mit Hilfe des Web-Browsers oder eines anderen Programms, wie ein ViewerApplet, abläuft, wird als Java-Applet bezeichnet. Ein in Java geschriebenes Programm, das ohne die Hilfe eines Web-Browsers ausgeführt wird, wird als Java-Anwendung bezeichnet. Ein Java-Applet ist ein in der Programmiersprache Java geschriebenes Programm, das als ein Teil einer Web-Seite verteilt wird. In dem obi gen Beispiel wird eine Klassendatei mit dem Namen „animator.class" zu dem Client heruntergeladen und mit Hilfe des Web-Browsers ausgeführt.
  • Obgleich hier beschreiben wird, daß die Applets über HTTP zu den Web-Browsern übertragen werden, ist die vorliegende Anmeldung nicht auf eine solche Übertragung beschränkt. Die Erfindung berücksichtigt Übertragungen unter Verwendung eines beliebigen geeigneten Protokolls mit oder ohne der Benutzung eines Web-Browsers. Die Übertragung kann über FTP, über eine Modemverbindung, über eine Netzverteilung, eine Client/Serververteilung, über eine Trägerwelle, durch eine Übertragung auf portablen Medien oder mit jedem anderen Datenübertragungsverfahren erfolgen.
  • Weiterhin ist die vorliegenden Anmeldung nicht auf Applets und Anwendungen beschränkt, die auf der Programmiersprache Java beruhen, sondern besitzt die gleiche Anwendbarkeit bei jeder Datei oder Programmiersprachenanwendung oder dort, wo nicht ausführbarer Code jeglicher Art verteilt wird.
  • Nicht komprimierte Java-Programme
  • Wenn ein Programm unter Verwendung der Programmiersprache Java erzeugt wird, umfaßt es üblicherweise mehrere einzelne Dateien. Das Senden einer Kopie dieser Dateien von einem Computer zu einem nächsten über ein Computernetz ist eine Art, ein Programm zu verteilen. Bezug nehmend auf 2 kann zum Beispiel ein einzelnes Java-Appelt 200 mehrere verschiedene Klassendateien 201 bis 210, Bilddateien 211 bis 215, Sounddateien 216 bis 220 und andere Arten von Datendateien 221 bis 223 bei seiner Ausführung benötigen. Das Java-Applet 200 befindet sich auf einem Server 259 und wird über das Netz 250 gesendet, wenn ein Abruf 253 von einem Browsers 252 auf einem Clientcomputer 251 erfolgt. Der Clientcomputer 251 zeigt einen Abruf 253 durch Ausgeben eines HTTP-Abrufs an den Servercomputer 259 an, auf dem sich das Java-Applet 200 befindet. In Antwort auf den Abruf 253 wird jede Datei, die das Java-Applet 200 umfaßt, über das Netz 250 gesendet.
  • Diese Dateien können über ein Netz 250 in separaten HTTP-Abruf/Antwort-Paaren gesendet werden. Die Klassendatei 201 wird zum Beispiel über das Netz 250 in einem separaten Abruf/Antwort-Paar aus einer Klassendatei 203 gesendet. In 2 wird jede Datei unter Verwendung eines separaten HTTP-Abruf/Antwort-Paars gesendet. Die Linien, welche die Da teien 201223 mit dem Netz 250 verbinden, stellen eine Abfolge von HTTP-Abruf/Antwort-Paaren 260282 dar. Das Netz 250 verwendet jedes HTTP-Abruf/Antwort-Paar 260282, um mit einem Clientcomputer 251 Kontakt aufzunehmen und die Dateien 201223 zu dem Clientcomputer 251 zu senden. Die Ausführung des Java-Applets wird beginnen, wenn die erste Klassendatei empfangen ist. Wenn zusätzliche Dateien benötigt werden, wird die Ausführung ausgesetzt, bis die zusätzlichen Dateien empfangen werden können, und anschließend wird die Ausführung fortgesetzt. Die Dateien 201223 werden nicht komprimiert, bevor sie über das Netz gesendet werden. Ein Problem beim Verteilen von Computerprogrammen in dieser Weise besteht darin, daß große Zeitverzögerungen zwischen der Zeit, zu der der erste Abruf für das Java-Applet vorgenommen wird, und der Antwort existiert. (Ein Abruf ist hier eine Nachricht von einem Client an den Server zum Anfragen von so etwas wie einer Klassendatei oder einer JAR-Datei. Eine Antwort ist die Nachricht des Servers zurück an den Client, um einen Abruf auszuführen). Im Ergebnis wird der Beginn des Programms verzögert. Dies führt zu einer merklichen Verzögerung für den Benutzer, der eine Web-Seite, die ein Applet enthält, anzuzeigen wünscht.
  • Techniken zum Packen und Komprimieren/Dekomprimieren
  • Eine Möglichkeit zum Reduzieren der Zeit, die benötigt wird, um ein Programm über ein Netz zu senden, ist es, mehrere Dateien in eine Datei zu packen oder jede Datei oder die gepackten Dateien zu komprimieren, bevor sie über das Netz gesendet werden. Es gibt verschieden Schemata zum Packen und/oder Komprimieren von Dateien.
  • ZIP-Dateien
  • Eine ZIP-Datei wird zum Packen und Verteilen von Dateien benutzt. ZIP-Dateien enthalten eine oder mehrere einzelne Dateien. Um eine neue ZIP-Datei zu erzeugen, entscheidet der Benutzer manuell, welche Dateien in eine ZIP-Datei abgelegt werden. Sobald der Benutzer eine oder mehrere Dateien ausgewählt hat, wird die ZIP-Datei erzeugt, wenn ein Befehl zum Erzeugen ausgegeben wird. Die Dateien, die ein Java-Programm (zum Beispiel ein Java-Applet) umfaßt, können zum Beispiel zusammen gruppiert werden und in einer ZIP-Datei zum Verteilen abgelegt werden.
  • Das Ablegen einer Gruppe von Dateien zusammen in einer ZIP-Datei stellt eine Möglichkeit zur Verfügung, um diese Gruppe über das Netz schneller zu übertragen, als die Dateien einzeln zu senden. Das heißt, ein einzelnes Abruf/Antwort-Paar wird benutzt, um die gepackten Daten zu senden. Wenn ein Clientcomputer zum Beispiel eine ZIP-Datei abfragt, wird die gesamte Datei über das Netz in einem einzelnen HTTP-Abruf/Antwort-Paar übertragen. Der Nachteil der ZIP-Dateien ist, daß der Benutzer manuell auswählen muß, welche Dateien in eine ZIP-Datei abzulegen sind. Klassendateien können direkt aus der ZIP-Datei geladen werden. Es wird jedoch darauf hingewiesen, daß gepackte Dateien komprimiert oder Dateien, die das Packet enthalten, individuell komprimiert werden können, wenn dies gewünscht ist.
  • Java-Archiv(JAR)-Dateien
  • Eine Java-Archiv(JAR)-Datei ist eine Datei, die eine oder mehrere andere Dateien enthält. Eine JAR-Datei ermöglicht dem Benutzer zum Beispiel, eine Sammlung von komprimierten Dateien in eine einzelne Archivdatei abzulegen. Eine JAR-Datei enthält typischerweise die Klassendateien und andere Datendateien, die einem Applet oder einer Anwendung zugeordnet sind. Eine Möglichkeit, eine JAR-Datei zu erzeugen, ist die Verwendung eines JAR-Packers. Der JAR-Packer ist eine Java-Anwendung, die mehrere Dateien in einer einzelnen JAR-Datei kombiniert. Der JAR-Packer kann zum Beispiel benutzt werden, um eine einzelne Datei zu erzeugen, die alle komprimierten Dateien enthält, die zum Ausführen eines Java-Applets oder eine Java-Anwendung benötigt werden. Das Grundformat zum Erzeugen einer JAR-Datei unter Verwendung des JAR-Packers ist wie folgt:
    jar cf jar-file input-file(s).
  • Dieser Befehl erzeugt eine komprimierte JAR-Datei. Der Befehl jar erzeugt außerdem eine Default-Manifest-Datei mit dem Namen MANIFEST.MF und legt diese in einem Verzeichnis mit dem Namen META-INF ab. Die Manifest-Datei ist eine Datei, die Informationen über die Dateien enthält, die in der JAR-Datei gepackt sind. Die Option c gibt an, daß der Benutzer eine JAR-Datei erzeugen möchte. Die Option f gibt an, daß die Ausgabe in eine Datei anstatt in einen Ausgabestrom gesendet wird. Die Optionen c und f können in einer beliebigen Abfolge auftreten, sollten jedoch nicht durch ein Leerzeichen getrennt werden. Das Argument jar-file ist der Name der JAR-Datei, die der Benutzer erzeugen möchte. Das Argument input-file(s) ist eine mit Leerzeichen abgegrenzte Liste von einer oder mehreren Dateien, die der Benutzer in die JAR-Datei ablegen möchte. Das Argument input-file(s) kann ein Platzhaltersymbol (*) enthalten. Wenn irgendwelche der input-file(s) Verzeichnisse sind, wird der Inhalt von diesen Verzeichnissen zu der JAR-Datei rekursiv hinzugefügt.
  • Es bestehen auch alternative Möglichkeiten, um manuell eine JAR-Datei zu erzeugen. Jede Datei, die Informationen unter Verwendung des JAR-Formats organisiert, wird als JAR-Datei betrachtet. Das JAR-Format ist ein Satz von Konventionen zum Zuordnen digitaler Signaturen und anderer Informationen zu den Dateien, die in der JAR-Datei enthalten sind. Daher ist eine Möglichkeit zum Herstellen einer JAR-Datei, eine Datei zu erzeugen, die diese Konventionen nutzt. Beispielsweise ermöglichen die folgenden Schritte einem Benutzer, eine JAR-Datei zu erzeugen: 1) Manuelles Identifizieren der Dateien, die in die JAR-Datei abgelegt werden sollen; 2) Erzeugen einer Manifest-Datei; 3) Wenn die Dateien in dem JAR-Archiv digital signiert werden sollen, werden die geeigneten digitalen Signaturdateien in ein Unterverzeichnis mit dem Namen META-INF abgelegt; 4) Kombinieren der META-INF-Dateien mit den anderen Dateien und Erzeugen einer einzelnen ZIP-Datei.
  • Wenn die Komponenten eines Applets oder einer Anwendung (Klassendateien, Bilddateien, Sounddateien, Datendateien usw.) in einer einzelnen JAR-Datei verbunden sind, ist es möglich, eine Gruppe von Dateien unter Verwendung eines einzelnen HTTP-Abruf/Antwort-Paars zu verteilen, anstelle dem Erfordernis eines neuen Abruf/Antwort-Paars für jede Datei. Das Verbinden von mehr als einer Datei in einer einzelne Datei und das anschließende Komprimieren dieser Dateien verbessert die Zeiten zum Herunterladen. Ein Nachteil bei den JAR-Dateien ist, daß der Benutzer spezifizieren muß, welche Dateien in das Archiv abgelegt werden sollen, bevor die JAR-Datei erzeugt wird. Ein weiterer Nachteil ist, daß die gesamt JAR-Datei heruntergeladen werden muß, bevor die Ausführung eines Programms begonnen werden kann.
  • 3 zeigt ein Beispiel eines Computerprogramms, das mehrere Dateien umfaßt. Ein Java-Applet 200 umfaßt zum Beispiel mehrere Klassendateien 201210, Bilddateien 211215, Sounddateien 216220 und Datendateien 221223. Unter Verwendung eines JAR-Packers kann zum Beispiel eine Archivdatei 300 erzeugt werden, die das Java-Applet 200 enthält. Die Archivdatei 300 kann auch unter Verwendung anderer geeigneter Dateiformate erzeugt werden, wie mit dem Dateiformat ZIP. Wenn der Browser 252 auf eine Web-Seite trifft, die HTML-„Markup"-Symbole enthält, die ein <APPLET>-Befehl einschließen, wird ein HTTP- Aufruf 301 für ein Java-Applet 200 vorgenommen, welches in einer Archivdatei 300 enthalten ist. Wenn zum Beispiel das Java-Applet 200 in einer Archivdatei 300 mit dem Namen jarFile.jar enthalten ist, führt der folgende HTML-Code zu einem Abruf der Datei mit dem Namen jarFile.jar. Wenn ein Abruf vorgenommen wird, wird die Datei jarFile.jar mit dem Applet 200 von dem Server 259 zu dem Client 251 übertragen. Das Archiv-Attribut kann ein oder mehrere JAR-Dateien auflisten, die alle heruntergeladen werden, bevor das Applet mit der Ausführung beginnt.
    <APPLET CODE=Applet.class ARCHIVE=‶jarFile.jar‶ WIDTH=anInt HEIGHT=anInt>
    <PARAM NAME=parameter1Name VALUE=aValue>
    <PARAM NAME=parameter2Name VALUE=anotherValue>
    </APPLET>
  • In einer Antwort liefert der Server 259 die Datei jarFile.jar zu dem Browsers 252 unter Verwendung einer einzelnen HTTP-Antwort 302. Dadurch wird eine Möglichkeit zur Verfügung gestellt, alle Dateien, die das Java-Applet 200 umfaßt, von dem Server 259 zu dem Browser 252, der sich auf dem Client 251 befindet, zu übertragen. Ein Nachteil bei diesem Ansatz ist, daß der Browser 252 mit der Ausführung des Java-Applets 200 nicht beginnen kann, bevor die gesamte Archivdatei 300 empfangen ist. Ein anderer Nachteil bei JAR-Dateien ist, daß der Benutzer manuell bestimmen muß, welche Dateien in die JAR-Datei abgelegt werden sollen.
  • Wie das vorhergehende Beispiel zeigt, ist ein Problem beim Verteilen großer Computerprogramme über ein Netz, daß viel Zeit benötigt wird, um das Programm herunterzuladen und zu initialisieren. In vielen Fällen ist diese Zeitdauer für den Benutzer nicht akzeptabel. In einem Versuch, die Zeitdauer zu verkürzen, die ein Benutzer warten muß, bevor ein Programm lädt, können Archivdateien benutzt werden. Viele der Lösungen aus dem Stand der Technik stellen keine Möglichkeit zur Verfügung, die Zeit zu minimieren, die für ein Programm benötigt wird, um einen gewünschten Zustand zu erreichen. Das ZIP-Format verbessert dies durch den Versuch, diese in eine einzelne Archivdatei abzulegen. Um jedoch Dateien in ein ZIP-Archiv abzulegen, muß der Benutzer manuell bestimmen, welche Dateien in die Archivdatei abgelegt werden müssen. Um das JAR-Format zu benutzen, muß der Benutzer außerdem manuell bestimmen, welche Dateien in das Archiv abzulegen sind. Um eine Archivdatei zu erzeugen, die in der Lage ist, ein Computerprogramm zu einem bestimmten Ausführungspunkt zu bringen, muß der Benutzer manuell bestimmen, welche Dateien dies erreichen, und muß dann manuell eine Archivdatei erzeugen, die diese Dateien enthält. Dieser Vorgang ist mühsam und stellt keine Möglichkeit zur Verfügung, die Ausführung eines Computerprogramms automatisch zu optimieren. Alternativ ist im Stand der Technik ein manuelles Bestimmen nur jener Dateien vorgesehen, die zum Starten benötigt werden und ein Ablegen dieser Dateien in eine gepackte Datei.
  • Das Internetdokument von Bill Veneers „Understanding Digital Signatures: Inside the Java virtual Machine by Bill Venners – β-Version" beschreibt das Konzept einer dynamischen Verknüpfung und einer dynamischen Ausführung in Java. Insbesondere offenbart dieses Dokument, Klassendateien so zu laden und dynamisch zu verknüpfen, wie diese von der Anwendung benötigt werden.
  • Das Internetdokument „Oracle Developer/2000: Deploying Applications on the Web" offenbart, mehrere Klassendateien zu bündeln und diese gebündelten Klassendateien vor dem Starten des Programms herunterzuladen.
  • Kurzbeschreibung der Erfindung
  • Mit den Fortschritten in der Netztechnologie ist die Benutzung von Netzen zur Unterstützung der Verteilung von Computerprogrammen erheblich angewachsen, insbesondere in dem Fall des Internets und des World Wide Web. Diese Computerprogramme sind in der Größe erheblich angewachsen. Das Problem beim Verteilen solcher Computerprogramme über das Netz ist die lange Zeit, die erforderlich ist, um das Programm herunterzuladen und zu initialisieren.
  • Die vorliegende Erfindung wird in den beigefügten Ansprüchen festgelegt.
  • Ausführungsformen der Erfindung umfassen ein Verfahren und eine Vorrichtung zur automatischen Optimierung des Ladens eines Computerprogramms. Die Dateien, die zum Ausführen des Computerprogramms benötigt werden, bis es einen gewünschten Zustand erreicht, werden identifiziert und in eine optimierte Datei abgelegt. Die optimierte Datei kann auf dem Computer ausgeführt werden, auf dem sie sich befindet, oder sie kann von einem Computer zu einem anderen übertragen werden (zum Beispiel von einem Server- zu einem Clientcomputer). Die optimierte Datei ermöglicht einem Computer, ein Computerprogramm auszuführen, bis ein gewünschter, zuvor bestimmter Zustand erreicht ist. Andere Dateien können vorgesehen sein, die dem Computer die Möglichkeit eröffnen, das Computerprogramm über den gewünschten Zustand hinaus auszuführen. Der gewünschte Zustand des Computerprogramms kann zum Beispiel der Punkt sein, an dem eine Benutzereingabe von dem Computerprogramm angenommen werden kann.
  • In einer Ausführungsform der Erfindung ist die optimierte Datei eine Sammlung von Datendateien, die in einer einzelnen Datei zusammengepackt sind. Eine Java-Archiv(JAR)-Datei ist beispielsweise eine Art einer optimierten Datei. Die vorliegende Erfindung kann auch andere Arten von Dateipackformaten benutzen, wie das ZIP-Dateiformat. Jede Art von Datei, die ein oder mehrere andere Dateien umfaßt, ist geeignet, um eine optimierte Datei zu erzeugen. Die Computerprogrammarten, auf die sich die vorliegende Erfindung bezieht, umfassen mehr als eine Datei. Ein Computerprogramm, das beispielsweise als ein Java-Applet implementiert ist, umfaßt Klassendateien, Bilddateien, Sounddateien, Datendateien usw.. Von allen Dateien, die das Computerprogramm ausmachen, wird nur ein Teil dieser Dateien benötigt, um tatsächlich das Programm zu starten. In einer Ausführungsform der Erfindung werden die Dateien, die zum Starten des Programms benötigt sind, automatisch ermittelt und in eine optimierte Datei abgelegt.
  • Kurze Beschreibung der Zeichnungen
  • 1A stellt ein Beispiel einer Programmierumgebung dar, die von der Programmiersprache Java benutzt wird.
  • 1B stellt dar, daß jeder Computer eine virtuelle Maschine zum Interagieren, um mit dem nativen Betriebssystem des Computers umfaßt.
  • 2 stellt ein Verteilen eines Computerprogramms, welches mehrere Dateien enthält, über ein Computernetz dar.
  • 3 stellt ein Verteilen eines Computerprogramms, das mehrere Dateien enthält, über ein Computernetz unter Verwendung einer Archivdatei dar.
  • 4 stellt eine Ausführungsform der Erfindung dar, die eine Optimierungseinrichtung verwendet, um Informationen zu erzeugen und diese zu einem Optimierer zu leiten.
  • 5 stellt einen Ablauf dar, der in einer Ausführungsform der Erfindung benutzt wird, um die Ausführung eines Programms zu optimieren.
  • 6A stellt eine Ausführungsform der Erfindung dar, bei der eine optimierte Datei und Restdateien erlangt werden.
  • 6B stellt die Übertragung einer optimierten Datei und einer Restdatei zu einem Clientcomputer über ein Netz gemäß einer Ausführungsform der Erfindung dar.
  • 7 stellt eine Ausführungsform der Erfindung dar, welche die in einer optimierte Datei abzulegenden Dateien identifiziert.
  • 8 stellt eine Ausführungsform der Erfindung dar, bei der sich der Optimierer und die Optimierungseinrichtung auf dem gleichen Computer befinden.
  • 9 stellt ein Beispiel eines Ablaufs dar, der von dem Optimierer verwendet wird, um eine optimierte Datei gemäß einer oder mehreren Ausführungsformen der Erfindung zu erzeugen.
  • 10 stellt eine Ausführungsform der Erfindung dar, die in Form eines computerlesbaren Programmcodes implementiert ist.
  • Detaillierte Beschreibung der Erfindung
  • Es wird ein Verfahren und eine Vorrichtung zur automatischen Optimierung der Ausführung eines Computerprogramms beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details dargestellt, um eine vollständigere Beschreibung der vorliegenden Erfindung zu liefern. Für den Fachmann wird jedoch deutlich, daß die vorliegende Erfindung ohne diese speziellen Details ausgeführt werden kann. Andererseits werden gut bekannte Merkmale nicht im Detail beschrieben, um nicht unnötigerweise von der Erfindung abzulenken.
  • Eine Ausführungsform der Erfindung wird unter Verwendung der Techniken der objektorientierten Programmierung implementiert. Um die aktuellen Ansätze zu verstehen, um Computerprogramme über ein Netz unter Verwendung von objektorientierten Programmiersprachen zu verteilen, ist ein Überblick über das objektorientierte Programmieren hilfreich.
  • Objektorientierte Programmierung
  • Objektorientiertes Programmieren ist ein Verfahren zum Erzeugen eines Computerprogramms durch die Kombination verschiedener fundamentaler Bausteine und durch Erzeugen von Beziehungen unter und zwischen den Bausteinen. Die Bausteine in objektorientierten Programmiersystemen werden als "Objekte" bezeichnet. Ein Objekt ist eine Programmeinheit, die eine Datenstruktur (eine oder mehrere Instanzvariablen) und die Operationen (Methoden), welche diese Daten benutzen oder beeinflussen können, zusammen gruppieren. Demnach besteht ein Objekt aus Daten und einer oder mehreren Operationen oder Prozeduren, die an diesen Daten ausgeführt werden können. Das Kombinieren von Daten und Operationen in einen einheitlichen Baustein wird als "Kapselung" ("encapsulation") bezeichnet.
  • Ein Objekt kann angewiesen werden, eine seiner Methoden auszuführen, wenn es eine "Nachricht" erhält. Eine Nachricht ist eine Anweisung oder ein Befehl, die an das Objekt gesendet wird, um eine bestimmte Methode auszuführen. Eine Nachricht besteht aus einer Methodenauswahl (zum Beispiel Methodenname) und mehreren Argumenten. Eine Nachricht teilt dem empfangenden Objekt mit, welche Operationen auszuführen sind.
  • Ein Vorteil der objektorientierten Programmierung ist die Art, in der die Methoden aufgerufen werden. Wenn eine Nachricht an ein Objekt gesendet wird, ist es nicht notwendig, daß die Nachricht das Objekt anweist, wie eine bestimmte Methode auszuführen ist. Es ist nur ein Aufruf erforderlich, daß das Objekt die Methode ausführt. Dies vereinfacht die Programmentwicklung erheblich.
  • Objektorientierte Programmiersprachen basieren in erster Linie auf einem "Klassen"-Schema. Ein klassenbezogenes objektorientiertes Programmierschema ist allgemein beschrieben in: Liebermann, "Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems", OOPSLSA 86 Proceedings, September 1986, S. 214–223.
  • Eine Klasse definiert eine Art eines Objekts, das typischerweise sowohl Variablen als auch Methoden für die Klasse umfaßt. Eine Objektklasse wird benutzt, um eine bestimmte Instanz eines Objekts zu erzeugen. Eine Instanz einer Objektklasse umfaßt die Variablen und Methoden, die für die Klasse definiert sind. Mehrere Instanzen der gleichen Klasse können aus einer Objektklasse erzeugt werden. Jede Instanz, die aus einer Objektklasse erzeugt wird, gilt als von der gleichen Art oder Klasse.
  • Zur Illustration kann eine Arbeitnehmerobjektklasse die Instanzenvariablen "Name" und "Gehalt" und eine Methode "Gehaltsbestimmung" umfassen. Instanzen der Arbeitnehmerobjektklasse können für jeden Arbeitnehmer in einer Organisation erzeugt oder instantiiert werden. Jede Objektinstanz gilt als vom Typ "Arbeitnehmer". Jede Arbeitnehmerobjektinstanz umfaßt "Name"- und "Gehalt"-Instanzvariablen und die "Gehaltsbestimmung"-Methode. Die Werte, die der "Name"- und "Gehalt"-Variable jeder Arbeitnehmerobjektsinstanz zugeordnet sind, enthalten den Namen und das Gehalt eines Arbeitnehmers in der Organisation. Eine Nachricht kann an eine Arbeitnehmerobjektinstanz eines Arbeitnehmers gesendet werden, um die "Gehaltsbestimmung"-Methode aufzurufen, um das Gehalt des Arbeitnehmers zu verändern (d. h. den Wert, welcher der "Gehalt"-Variable in dem Arbeitnehmerobjekt des Arbeitnehmers zugeordnet ist).
  • Eine Hierarchie von Klassen kann definiert werden, so daß eine Objektklassendefinition eine oder mehrere Unterklassen besitzt. Eine Unterklasse übernimmt die Definitionen ihrer Eltern (und ihrer Großeltern usw.). Jede Unterklasse in der Hierarchie kann dem Verhalten, das durch seine Elternklasse spezifiziert ist, etwas hinzufügen oder dieses modifizieren. Einige objektorientierte Programmiersprachen unterstützen eine Mehrfachvererbung, wenn eine Unterklasse eine Klassendefinition von mehr als einer Elternklasse erbt. Andere Programmiersprachen unterstützen nur eine Einfachvererbung, wenn eine Unterklasse darauf beschränkt ist, die Klassendefinition nur einer Elternklasse zu erben. Die Programmiersprache Java stellt außerdem einen Mechanismus zur Verfügung, der als eine „Schnittstelle" bekannt ist, die als ein Satz von konstanten und abstrakten Methodendeklarierungen umfaßt. Eine Objektklasse kann die abstrakten Methoden, die in der Schnittstelle definiert sind, implementieren. Sowohl die Einfach- als auch die Mehrfachvererbung sind für über Schnittstellen zugänglich. Das heißt, eine Schnittstelle kann eine Schnittstellendefinition von mehr als einer Elternschnittstelle erben.
  • Ein Objekt ist ein generischer Ausdruck, der in der objektorientierten Programmierumgebung benutzt wird, um ein Modul zu bezeichnen, das zugeordneten Code und Variablen enthält. Eine Softwareanwendung kann unter Verwendung einer objektorientierten Programmierspra che geschrieben werden, wobei die Funktionalität des Programms unter Verwendung von Objekten implementiert wird.
  • Optimales Ausführen eines Computerprogramm
  • Ausführungsformen der Erfindung können zum automatischen Bestimmen der Dateien benutzt werden, die zum optimalen Ausführen eines Computerprogramms benötigt werden, bis ein gewünschter Zustand erreicht ist. In einer Ausführungsform der Erfindung wird eine optimierte Datei erzeugt, welche die Dateien enthält, die für das Computerprogramm notwendig sind, um den gewünschten Zustand zu erreichen. Das Erzeugen einer optimierten Datei ist zum Beispiel nützlich, wenn ein Computerprogramm über ein Netz zu einem anderen Computer übertragen wird, wo es anschließend ausgeführt wird.
  • In einer Ausführungsform der Erfindung werden die Dateien, die zum Ausführen des Computerprogramms bis zu einem gewünschten Zustand notwendig sind, über ein Netz zu einem Clientcomputer in der optimierten Datei gesendet. Der gewünschte Zustand kann zum Beispiel der Punkt sein, an dem das Computerprogramm in der Lage ist, eine Benutzereingabe aufzunehmen. Wenn die Dateien, die in der optimierten Datei enthalten sind, empfangen sind, kann der Clientcomputer das Programm bis zu dem gewünschten Zustand ausführen, ohne zu warten, bis die restlichen Dateien, die während der Ausführung des Programms verwendet werden, über das Netz übertragen sind. Da das Programm mit der Ausführung beginnen kann, bevor alle Dateien, die das Computerprogramm umfaßt, empfangen sind, verringert sich die Zeit, die zum Starten des Programms benötigt wird.
  • In einer Ausführungsform der Erfindung ist die optimierte Datei eine Sammlung von Datendateien, die in einer einzelnen Datei zusammengepackt sind. Beispielsweise kann eine Datei, die das Java-Archiv(JAR)-Format benutzt, verwendet werden, um eine optimierte Datei zu erzeugen. Alternativ können auch andere Arten von Dateipackformaten, wie das Dateiformat ZIP, benutzt werden, um eine oder mehrere Ausführungsformen der Erfindung zu implementieren. Für die Fachleute auf dem Gebiet wird deutlich, daß jeder Dateityp oder jedes Dateiformat, das das Implementieren von einer oder mehreren anderen Dateien unterstützt, geeignet ist, um eine optimierte Datei zu erzeugen. Computerprogramme umfassen typischerweise mehr als eine Datei. Ein Computerprogramm, das als ein Java-Applet implementiert ist, umfaßt zum Beispiel Klassendateien, Bilddateien und andere Datendateien. Es wird jedoch nur ein Teil der Dateien benötigt, die ein Computerprogramm umfaßt, um die Ausführung des Programms zu beginnen.
  • In einer Ausführungsform der Erfindung werden die Dateien, die zum Starten des Programms benötigt werden, automatisch ermittelt und in eine optimierte Datei abgelegt. Um eine optimierte Datei zu erzeugen, werden die Dateien identifiziert, die ein Computerprogramm umfaßt. Diese Dateien werden dann analysiert und jene, die benötigt werden, um das Programm zu einem gewünschten Zustand zu bringen, werden in der optimierten Datei abgelegt. In einer Ausführungsform der Erfindung wird dieser Vorgang durch eine Optimierungseinrichtung ausgeführt, die ermittelt, welchen Teil der Dateien das Programm zum Ausführen benötigt, und durch ein Optimierer, der die optimierte Datei erzeugt. Die Optimierungseinrichtung erzeugt eine Liste der Dateien, die es dem Computerprogramm ermöglichen, die Ausführung zu beginnen. Diese Liste der Dateien wird in einer Zwischendatei gespeichert und zu dem Optimierer weitergeleitet.
  • Der Optimierer benutzt die Liste, um eine optimierte Datei zu erzeugen. Die optimierte Datei enthält typischerweise den Teil der Dateien, die das Computerprogramm zum Laden benötigt. Die optimierte Datei kann zum Beispiel die Dateien enthalten, die von dem Computerprogramm benötigt werden, um einen Zustand zu erreichen, an dem eine Benutzereingabe von dem Computerprogramm angenommen werden kann. Die optimierte Datei kann jedoch auch Dateien enthalten, die von dem Computerprogramm an einem beliebigen Zustand benötigt werden. Ein gewünschter Zustand kann zum Beispiel auftreten, bevor das Computerprogramm auf eine große Datendatei zugreift oder bevor das Programm in eine zeitaufwendige Berechnung eintritt. Der Fachmann wird verstehen, daß die in der optimierten Datei abgelegten Dateien oder andere Dateiarten beliebige der Dateien sein können, die von dem Computerprogramm bei der Ausführung benutzt werden. Weiterhin kann der gewünschte Zustand des Computerprogramms durch einen beliebigen Punkt während der Ausführung des Computerprogramms festgelegt sein.
  • 4 stellt eine Ausführungsform der Erfindung dar, die eine Optimierungseinrichtung 401 verwendet, um zu ermitteln, wie ein Computerprogramm optimal auszuführen ist. Die Optimierungseinrichtung 401 bewerkstelligt dies durch Analyse des Programms, bis es einen gewünschten Zustand erreicht, durch Erzeugen von Informationen über diesen Zustand und durch Weiterleiten der Informationen zu einem Optimierer 450. In dieser Ausführungsform der Erfindung kann der gewünschte Zustand durch die Optimierungseinrichtung 401, den Benutzer oder durch den Softwareentwickler bestimmt werden. Zum Bestimmen des optimalen Wegs zum Ausführen des Computerprogramms trennt die Optimierungseinrichtung 401 die Dateien, die das Programm bilden, in verschiedene Kategorien. Beispielsweise werden die Teile der Dateien, die benutzt werden, um das Computerprogramm zu laden, in eine Kategorie abgelegt und (falls die Optimierungseinrichtung diese erkennt) werden die Dateien des verbleibenden Teils in eine andere Kategorie abgelegt.
  • Die Erfindung umfaßt ein Betriebsverfahren, bei dem der Benutzer manuell auswählt, wann der gewünschte Zustand erreicht wurde. Alternativ kann eine API vorgesehen sein, die der Programmierer aufruft, um der Einrichtung mitzuteilen, wann der gewünschte Zustand erreicht wurde.
  • Der Optimierer 450 benutzt die Information über den gewünschten Zustand, um einen Satz von optimierten Dateien zu bilden. In einer Ausführungsform der Erfindung erzeugt der Optimierer 450 eine optimierte Datei 430, welche die Dateien enthält, die das Programm benötigt, um den gewünschten Zustand zu erreichen. Der Optimierer 450 kann außerdem eine oder mehrere optimierte Restdateien 435 erzeugen. Die Restdateien 435 können Dateien sein, die nicht notwendigerweise von dem Programm benötigt werden, um den gewünschten Zustand zu erreichen.
  • Die Optimierungseinrichtung 401 entscheidet, welche Dateien in die erste Kategorie abgelegt werden, durch Erzeugen einer Liste der Dateien, die benötigt werden, um einen gewünschten Zustand des Computerprogramms zu erreichen. In einer Ausführungsform der Erfindung erzeugt die Optimierungseinrichtung 401 diese Liste unter Verwendung eines Optimierungscodes 402. Der Optimierungscode 402 ist ein Programmcode, der dafür eingerichtet ist, die Dateien, die von dem Programm ausgeführt werden, zu laden und zu verfolgen. Der „Klassenlader" in der JRE kann zum Beispiel modifiziert werden, um einen Optimierungscode 402 zu erzeugen. Der Standardklassenlader kann dann durch den Optimierungscode 402 ersetzt werden. Wenn das Programm unter Verwendung eines standardisierten „Klassenladers" geladen wird, werden die Inhalte der Dateien, die geladen werden, um die Anwendung ablaufen zu lassen, in einer Hash-Tabelle gespeichert. Der standardisierte „Klassenlader" prüft die Hash-Tabelle, bevor er eine neue Datei lädt. Wenn der Dateiname bereits in der Hash-Tabelle ent halten ist, werden diese nicht geladen. Dadurch wird vermieden, daß doppelte Versionen der gleichen Datei geladen werden.
  • In einer Ausführungsform der Erfindung wird eine öffentliche Methode zu dem standardisierten Klassenlader hinzugefügt, um den Optimierungscode 402 zu erzeugen. Wenn das Programm einen gewünschten Zustand erreicht hat (zum Beispiel wenn das Programm für eine Benutzereingabe bereit ist), gibt der Optimierungscode 402 den Inhalt der Hash-Tabelle in eine Datei aus. Dadurch wird eine Datei erzeugt, die eine Liste der Dateien enthält, die das Programm benötigt, um den gewünschten Zustand zu erreichen. Die Datei kann zum Beispiel die Liste der Dateien enthalten, die das Programm benötigt, um einen Zustand zu erreichen, an dem das Programm bereit ist, eine Benutzereingabe anzunehmen. In einer Ausführungsform der Erfindung werden die Inhalte der Hash-Tabelle in einer Zwischendatei 403 ausgegeben. Dadurch kann die Zwischendatei 403 die Klassendateien, Bilddateien, Sounddateien, Datendateien usw. enthalten, die benötigt werden, um das Programm zu starten. Die Zwischendatei 403 kann eine Liste der Dateien oder die Inhalte der Dateien enthalten.
  • Die Optimierungseinrichtung 401 kann andere alternative Verfahren benutzen, um eine Liste der Dateien zu erlangen, die von dem Programm bis zu einem gewünschten Zustand verwendet werden. Wenn die Zwischendatei 403 erzeugt ist, kann sie zu dem Optimierer 450 zur Bearbeitung weitergeleitet werden. Der Optimierer 450 benutzt dann die Zwischendatei 403, um eine optimierte Datei 430 zu erzeugen.
  • In einer Ausführungsform der Erfindung befindet sich die Optimierungseinrichtung 401 innerhalb der JVM des Clientcomputers 440. Um den Optimierungscode 402 zu finden, untersucht der Clientcomputer 440 eine Umgebungsvariable 460. In einer Ausführungsform der Erfindung ist die Umgebungsvariable 460 eine CLASSPATH-Variable. Die CLASSPATH-Variable zeigt den Pfad zu dem Optimierungscode 402 an. Wenn zum Beispiel der Optimierungscode 402 sich auf dem Client 440 auf C:/jdk1.1.6/lib/classes.zip befindet, enthält die CLASSPATH-Variable die Information, um den Clientcomputer 440 zu ermöglichen, den Optimierungscode 402 zu finden. (Alternativ kann die -classpath command-live-Option benutzt werden). Wenn der Optimierungscode 402 gefunden ist, wird das Programm unter Verwendung des Optimierungscodes 402 bearbeitet. Der Optimierungscode 402 erzeugt dann eine Zwischendatei 403, die zu dem Optimierer 450 zur Bearbeitung weitergeleitet wird.
  • Das Verfahren, das in einer Ausführungsform der Erfindung benutzt wird, um die Ausführung eines Computerprogramms zu optimieren, ist in 5 dargestellt. In diesem Verfahren werden die Dateien, die benutzt werden, um einen gewünschten Zustand des Computerprogramms zu erreichen, ausgewählt und in einer optimierten Datei 430 abgelegt. Das Verfahren beginnt mit dem Schritt 500, wenn der Benutzer einen Aufruf zur Optimierung eines Programms ausgibt. Wenn dies stattfindet, wird im Schritt 501 verfolgt, welche Dateien das Programm bei der Ausführung lädt. In einer Ausführungsform der Erfindung wird das Programm durch eine Optimierungseinrichtung 401 betrieben, die sich auf dem Client 440 befindet. Im Schritt 502 wird eine Liste der Dateien, die das Programm lädt, in einer Zwischendatei abgelegt. In einer Ausführungsform der Erfindung legt die Optimierungseinrichtung 401 die Dateien, die von dem Programm zum anfänglichen Laden benutzt werden, in eine Zwischendatei 403 ab.
  • Im Schritt 503 wird ermittelt, ob der Programmablauf einen gewünschten Zustand erreicht hat oder nicht. Diese Ermittlung kann von dem Benutzer vorgenommen werden (oder in einer anderen Ausführungsform wird eine API aufgerufen, um der Einrichtung zu sagen, wann der gewünschte Zustand erreicht wurde). Ein Beispiel eines gewünschten Zustands ist der Punkt, an dem das Computerprogramm bereit ist, eine Benutzereingabe aufzunehmen. Typischerweise erreicht ein Programm diesen Zustand nachdem ein Benutzer einen Befehl ausgegeben hat, um das Programm zu öffnen, und bevor der Benutzer das Programm mit einer beliebigen Eingabe versieht. Wenn ermittelt ist, daß sich das Programm in dem gewünschten Zustand befindet, wird der Schritt 504 ausgeführt und die Einträge, die in der Zwischendatei zu finden sind, werden in einer optimierten Datei abgelegt. Die Einträge, die von der Optimierungseinrichtung 401 erzeugt werden und in die Zwischendatei abgelegt werden, können auch direkt in die optimierte Datei ohne die Verwendung der Zwischendatei abgelegt werden.
  • In einer Ausführungsform der Erfindung fuhrt ein Optimierer 450 den Schritt 504 aus. Die Optimierungseinrichtung 401 und der Optimierer 450 können sich auf separaten Computern befinden, die in der Lage sind, miteinander zu kommunizieren. In einer anderen Ausführungsform der Erfindung befinden sich die Optimierungseinrichtung 401 und der Optimierer 450 auf dem gleichen Computer.
  • 6A stellt eine Ausführungsform der Erfindung dar, bei der eine optimierte Datei und eine Restdatei erlangt werden. Es wird eine Liste 601 der Dateien gezeigt, die ein Computerpro gramm 600 umfaßt. Die Liste 601 enthält eine Sounddatei 621, eine Datendatei 622, Klassendateien 602616 und Bilddateien 617620. Die Klassendateien 602, 603, 604, 605 und die Bilddatei 617 werden benötigt, um den gewünschten Programmzustand zu erreichen, und werden in die optimierte Datei 430 abgelegt. Die Restdatei(en) 635 umfaßt die Dateien aus der Liste 601 ohne diejenigen in der optimierten Datei 430.
  • In einer Ausführungsform der Erfindung wird mehr als eine Restdatei(en) 635 erzeugt. Es können Kategorien für verschiedene Dateiarten erzeugt werden. Jede Restdatei 635 kann verschiedene Komprimierungstechniken verwenden und verschiedene Dateiarten enthalten. Sowohl die optimierte Datei 430 als auch die Restdatei 635 werden auf dem Server 640 abgelegt, wo sie verbleiben, bis sie von dem Client 650 abgerufen werden.
  • Die 6B stellt die Übertragung der optimierten Datei 430 zu einem Clientcomputer über ein Netz gemäß einer Ausführungsform der Erfindung dar. In dieser Ausführungsform ist der Client 650 der Computer, mit dem das Programm 600 ausgeführt wird. Um das Ausführungsprogramm 600 zu starten, gibt der Client 650 einen Aufruf 651 aus. Der Aufruf 651 wird zu dem Netz 660 geliefert und zu dem Server 640 zur Bearbeitung gesendet. Das Netzt 660 ist ein Netz, das dazu eingerichtet ist, um mehreren Computern zu ermöglichen, miteinander zu kommunizieren. In einer Ausführungsform der Erfindung ist das Netz 600 das Internet und benutzt das Transmission Control Protocol/Internet Protocol (TCP/IP), um zu kommunizieren. Das Netz 660 kann auch andere Protokolle verwenden, wie IPX oder Apple Talk.
  • In einer Ausführungsform der Erfindung liefert der Server 640 die optimierte Datei 430 zu dem Client 650 über das Netzt 660 unter Verwendung einer einzelnen HTTP-Antwort 661. Die optimierte Datei 430 wird zu dem Client 650 vor anderen Teilen des Programms 600 (zum Beispiel Restdatei(en) 635) gesendet. Die Restdatei(en) 635 werden zum Beispiel zu dem Client 650 nach der optimierten Datei 430 gesendet. In einer Ausführungsform der Erfindung werden alle Dateien, die nicht in der optimierten Datei 430 enthalten sind, in einer einzelnen Restdatei 635 abgelegt und über das Netz 660 in einem einzelnen HTTP-Abruf/Antwort-Paar 671 gesendet. In einer anderen Ausführungsform werden mehrere Restdateien 635 über das Netz 660 zu dem Client 650 unter Verwendung mehrerer HTTP-Abruf/Antwort-Paare gesendet.
  • Die 7 zeigt eine Ausführungsform der vorliegenden Erfindung, um die in die optimierte Datei 730 abzulegenden Dateien zu identifizieren. Wenn das Programm 700 sich anfänglich auf dem Server 751 befindet, wird zum Beispiel eine optimierte Datei 730 durch Weiterleiten des Programms 700 zu dem Client 755 durch das Netz 760 erzeugt. Der Client 755 analysiert das Programm 700 unter Verwendung einer Optimierungseinrichtung 701. Die Optimierungseinrichtung 701 bestimmt, welche Dateien von dem Programm 700 geladen werden, bis ein gewünschter Zustand erreicht ist (zum Beispiel wenn das Programm bereit ist, eine Benutzereingabe anzunehmen). Wenn die Optimierungseinrichtung 701 ermittelt hat, welche Dateien vor dem Erreichen des gewünschten Zustands ausgeführt werden, erzeugt sie eine Zwischendatei 723. Die Zwischendatei 723 enthält zum Beispiel eine Liste der Dateien, die benötigt werden, um den gewünschten Zustand des Programms 700 zu erreichen. Wenn das Programm 700 zum Beispiel die folgende Liste enthält: Klassendateien 702716, Bilddateien 717720, Sounddatei 721 und Datendatei 722; und wenn nur die Klassendateien 702705 und die Bilddatei 720 benötigt werden, um das Programm 700 zu dem gewünschten Zustand zu bringen, enthält die Zwischendatei 723 die Klassendateien 702705 und die Bilddatei 720.
  • In einer Ausführungsform der Erfindung enthält die Zwischendatei 723 keine der anderen Dateien (zum Beispiel die Klassendateien 706716, die Bilddateien 717719, die Sounddatei 721 und die Datendatei 722), die von dem Programm 700 ausgeführt werden. Wenn die Zwischendatei 723 erzeugt ist, wird diese zu einem Optimierer 750 weitergeleitet, der sich auf dem Server 751 befindet. Der Optimierer 750 erzeugt eine einzelne Datei, die alle Dateien aus der Zwischendatei 723 enthält. Die Datei, die von dem Optimierer 750 erzeugt wird, wird als optimierte Datei 730 bezeichnet. Die optimierte Datei 730 kann zum Beispiel die Form einer Java-Archiv(JAR)-Datei oder einer ZIP-Datei besitzen. Wenn die optimierte Datei 730 erzeugt ist, wird eine optimierte Version des Programms 700, die als optimiertes Programm 725 bezeichnet wird, auf dem Server 751 in einem Datenspeicher 775 gespeichert. Das optimierte Programm 725 umfaßt eine optimierte Datei 730 und eine oder mehrere zusätzliche Dateien 770 (zum Beispiel Restdateien 635). Wenn ein Clientcomputer einen Aufruf an den Server 751 für das optimierte Programm 725 ausgibt, wird die optimierte Datei 730 zuerst über das Netzwerk 760 gesendet. Zusätzliche Dateien 770 können nachfolgend zu dem Clientcomputer während oder nach der Ausführung der optimierten Datei 730 gesendet werden.
  • In einer Ausführungsform der Erfindung befinden sich die Optimierungseinrichtung 701 und der Optimierer 750 auf einem Clientcomputer 800, wie in der 8 dargestellt. In dieser Aus führungsform erzeugt die Optimierungseinrichtung 701 eine Zwischendatei 723 und liefert diese zu dem Optimierer 750. Der Optimierer 750 erzeugt anschließend eine optimierte Datei 730.
  • In einer Ausführungsform der Erfindung nimmt der Optimierungscode 402 eine Liste von Dateien (die zum Beispiel in einer Hash-Tabelle gespeichert sind) auf, die von dem Computerprogramm geladen werden, wenn es bis zu einem gewünschten Zustand ausgeführt wird. In einer alternativen Ausführungsform der Erfindung nimmt die Optimierungseinrichtung 701 eine Liste von Dateien, die in einer Zwischendatei 723 enthalten sind, aus der Ausgabe „hprof" auf, die von der Option -xhprof erzeugt wird. Eine andere mögliche Art ist die Verwendung der Debugging API (JVMDI).
  • Die 9 stellt ein Beispiel des Verfahrens dar, das von dem Optimierer 750 benutzt wird, um eine optimierte Datei 730 zu erzeugen, gemäß einer oder mehreren Ausführungsformen der Erfindung. Beim Schritt 900 erwartet der Optimierer 750 als Eingabe die Liste der Dateien, welche die optimierte Datei 730 umfaßt. In einer Ausführungsform der Erfindung erlangt der Optimierer 750 eine Zwischendatei 723 von der Optimierungseinrichtung 701. Wenn die Zwischendatei 723 von dem Optimierer 750 empfangen ist, führt der Optimierer 750 den Schritt 901 aus und beginnt damit, jede Datei, die in der Zwischendatei 723 aufgelistet ist, zu analysieren. Im Schritt 901.5 werden Dateien analysiert, um zu ermitteln, ob die Klassendatei aufgrund des Klassenpfads, von dem sie ist, einbezogen werden sollte. Beispielsweise sind die Klassen JDK nicht notwendig in der optimierten Datei und können ausgeschlossen werden. Im Schritt 902 ermittelt der Optimierer 750, ob es gewünscht ist, jede Datei, die in der Zwischendatei 723 aufgelistet ist, zu komprimieren oder nicht.
  • Wenn eine Komprimierung nicht gewünscht ist, führt der Optimierer 750 mit dem Schritt 904 fort und die Datei bleibt unkomprimiert. Wenn eine Komprimierung gewünscht ist, führt der Optimierer 750 mit dem Schritt 903 fort und die Datei wird komprimiert. Wenn zum Beispiel der Optimierer 750 auf eine Bilddatei trifft, die das Format Joint Photographic Experts Group (JPEG) verwendet, kann er bestimmen, die Bilddatei nicht weiterzukomprimieren. Dadurch wird keine komprimierte JPEG-Datei größer als eine unkomprimierte JPEG-Datei. Wenn der Optimierer 750 auf eine Textdatei trifft, kann er entscheiden, daß eine weitere Komprimierung vorteilhaft ist.
  • Im Schritt 906 erlangt der Optimierer 750 eine Manifest-Datei. In einer Ausführungsform der Erfindung wird die Manifest-Datei in einem Verzeichnis mit dem Namen META-INF abgelegt. Die Manifest-Datei kann auch andere arbiträre Informationen enthalten. Im Schritt 907 bestimmt der Optimierer 750, ob es erstrebenswert ist, die Dateien, die in der Zwischendatei 723 aufgelistet sind, digital zu signieren. Wenn der Optimierer bestimmt, eine Datei digital zu signieren, wird der Schritt 908 ausgeführt, und Informationen über die digitale Signatur werden in das Verzeichnis mit dem Namen META-INF abgelegt.
  • In einer Ausführungsform der Erfindung wird auch der Schritt 909 ausgeführt, und die Informationen über die digitale Signatur werden in die Manifest-Datei abgelegt. Andernfalls führt der Optimierer 750 mit dem Schritt 910 fort, bei dem alle Dateien, die in der Zwischendatei 723 aufgelistet sind, in einer einzelnen Datei kombiniert werden, die sich optimierte Datei 730 nennt. Wenn diese Schritte beendet sind, gibt der Optimierer 750 die optimierte Datei 730 an ein Speichermedium aus.
  • Ausführungsform einer Computerausführungsumgebung
  • Eine Ausführungsform der Erfindung kann als Computersoftware in Form eines computerlesbaren Programmcodes implementiert werden, der auf einem Computer für allgemeine Zwecke ausgeführt wird, wie einem Computer 1000, der in 10 dargestellt ist. Eine Tastatur 1010 und eine Maus 1011 sind mit einem bidirektionalen Systembus 1018 verbunden. Die Tastatur und die Maus dienen zum Aufnehmen von Benutzereingabe in das Computersystem und übertragen diese Benutzereingabe zu einem Prozessor 1013. Andere geeignete Eingabeeinrichtungen können zusätzlich zu der Maus 1011 und der Tastatur 1010 oder statt dessen benutzt werden. Eine I/O (Eingabe/Ausgabe)-Einheit 1019, die mit dem bidirektionalen Systembus 1018 gekoppelt ist, stellt solche I/O-Elemente dar, wie ein Drucker, AN (Audio/Video)-I/O, usw..
  • Der Computer 1000 umfaßt ein Videospeicher 1011, einen Hauptspeicher 1015 und einen Massenspeicher 1012, die alle mit dem bidirektionalen Systembus 1018 zusammen mit der Tastatur 1010, der Maus 1011 und dem Prozessor 1013 gekoppelt sind. Der Massenspeicher 1012 kann sowohl feste als auch entfernbare Medien umfassen, wie magnetische, optische oder magnetooptische Speichersysteme oder eine beliebige andere verfügbare Massenspeichertechnologie. Der Bus 1018 kann zum Beispiel 32 Adressleitungen zum Adressieren des Videospeichers 1014 oder des Hauptspeichers 1015 aufweisen. Der Systembus 1018 umfaßt außerdem beispielsweise einen 32-Bit-Datenbus zum Übertragen von Daten zwischen und unter den Komponenten, wie dem Prozessor 1013, dem Hauptspeicher 1015, dem Videospeicher 1014 und dem Massenspeicher 1012. Alternativ können Multiplexdaten/Adressleitungen anstelle von separaten Daten- und Adreßleitungen benutzt werden.
  • In einer Ausführungsform der Erfindung ist der Prozessor 1013 ein von Motorola hergestellter Mikroprozessor, wie der 680X0-Prozessor, oder ein von Intel hergestellter Mikroprozessor, wie der 80X86, oder Pentium-Prozessor, oder ein von Sun MicrosystemsTM hergestellter Mikroprozessor SPARCTM. Es können jedoch auch beliebig andere Mikroprozessoren oder Mikrocomputer benutzt werden. Der Hauptspeicher umfaßt ein Dynamic Random Access Memory (DRAM). Der Videospeicher 1014 ist ein Dual-Port Video Random Access Memory. Ein Anschluß des Videospeichers 1014 ist mit einem Videoverstärker 1016 verbunden. Der Videoverstärker 1016 wird benutzt, um einen Rastermonitor 1017 mit Kathodenstrahlröhre (CRT) anzutreiben. Der Videoverstärker 1016 ist im Stand der Technik gut bekannt und kann durch beliebige geeignete Vorrichtungen implementiert werden. Diese Schaltung konvertiert Pixeldaten, die in dem Videospeicher 1014 gespeichert sind, zu einem Rastersignal, das für die Benutzung mit dem Monitor 1017 geeignet ist. Der Monitor 1017 ist eine Monitorart, die zum Anzeigen von grafischen Bildern geeignet ist.
  • Der Computer 1000 kann auch eine Kommunikationsschnittstelle 1020 aufweisen, die mit dem Bus 1018 verbunden ist. Die Kommunikationsschnittstelle 1020 stellt eine Zweiwege-Datenkommunikation zur Verfügung, die über eine Netzverknüpfung 1001 mit einem lokalen Netzt 1022 verknüpft ist. Wenn zum Beispiel die Kommunikationsschnittstelle 1020 eine Integrated Service Digital Network (ISDN)-Karte oder ein Modem ist, sorgt die Kommunikationsschnittstelle 1020 für eine Datenkommunikationsverbindung zu einem entsprechenden Typ von Telefonleitung, die einen Teil der Netzverknüpfung 1021 umfaßt. Wenn die Kommunikationsschnittstelle 1020 eine Local Area Network (LAN)-Karte ist, sorgt die Kommunikationsschnittstelle 1020 für eine Datenkommunikationsverbindung über eine Netzverknüpfung 1021 zu einem kompatiblen LAN. Kabellose Verknüpfungen sind auch möglich. In allen solchen Implementierungen sendet und empfängt die Kommunikationsschnittstelle 1020 elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme tragen, die verschiedene Arten von Informationen darstellen.
  • Die Netzverknüpfung 1021 sorgt typischerweise für eine Datenkommunikation über ein oder mehrere Netze zu anderen Dateneinrichtungen. Zum Beispiel kann die Netzverknüpfung 1021 für eine Verbindung über ein lokales Netz 1022 zu einem Hostcomputer 1023 oder zu einer Dateneinrichtung zur Verfügung stellen, die von einem Internet Service Provider (ISP) 1024 betrieben wird. Der ISP 1024 stellt umgekehrt eine Datenkommunikationsdienst über das World Wide Packet Datenkommunikationsnetz zur Verfügung, das nun üblicherweise als das "Internet" 1025 bezeichnet wird. Sowohl das lokale Netz 122 als auch das Internet 1025 benutzen beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale in den verschiedenen Netzen und die Signale auf der Netzverknüpfung 1021 und in der Kommunikationsschnittstelle 1020, welche die digitalen Daten von und zu dem Computer 1000 transportieren, sind beispielhafte Formen von Trägerwellen, die Informationen transportieren.
  • Der Computer 1000 kann über das (die) Netz(e), die Netzverknüpfung 1021 und das Kommunikationsinterface 1020 Nachrichten senden und Daten, einschließlich von Programmcode, empfangen. In dem Beispiel des Internets kann der Server 1026 einen abgerufenen Code für ein Anwendungsprogramm über das Internet 1025, ISP 1024, das lokale Netz 1022 und die Kommunikationsschnittstelle 1020 übertragen. Erfindungsgemäß ist eine solche heruntergeladene Anwendung das Verfahren und die Vorrichtung zur Optimierung einer Ausführung eines Computerprogramms, wie hierin beschrieben.
  • Der empfangene Code kann von dem Prozessor 1013, wenn er empfangen ist, ausgeführt werden und/oder in dem Massenspeicher 1012 oder anderen nichtflüchtigen Speichern zur späteren Ausführung gespeichert werden. Auf diese Weise kann der Computer 1000 Anwendungscode mittels einer Trägerwelle erhalten.
  • Der Anwendungscode kann in einer beliebigen Form eines Computerprogrammprodukts ausgeführt werden. Ein Computerprogrammprodukt umfaßt ein Medium, das dafür eingerichtet ist, einen computerlesbaren Code zu speichern oder zu transportieren, oder in welchem ein computerlesbarer Code verkörpert werden kann. Einige Beispiele von Computerprogrammprodukten sind CD-ROM-Disketten, ROM-Karten, Floppy Discs, Magnetbänder, Computerfestplatten, Server auf einem Netzwerk und Trägerwellen.
  • Das Computersystem, das vorhergehend beschrieben wurden, dient nur als Beispiel. Eine Ausführungsform der Erfindung kann in einer beliebigen Art eines Computersystems oder einer Programmier- oder Bearbeitungsumgebung, einschließlich, jedoch nicht darauf beschränkt, eingebettet in Systemen, implementiert werden.
  • Damit wurde ein Verfahren und eine Vorrichtung für ein Verfahren und eine Vorrichtung zur Optimierung der Ausführung eines Computerprogramms im Zusammenhang mit einer oder mehreren speziellen Ausführungsformen angegeben. Die Erfindung ist durch die Ansprüche und ihrem vollen Äquivalenzumfang definiert.

Claims (21)

  1. Verfahren zur automatischen Optimierung der Ausführung eines Computerprogramms, welches folgende Schritte umfaßt: – Identifizieren eines Computerprogramms mit mehreren Dateien, – Identifizieren eines ersten Teils der mehreren Dateien, der benutzt wird, um einen gewünschten Zustand zu erlangen, und – Ablegen des ersten Teils in einer optimierten Datei, wobei der gewünschte Zustand der Punkt der Ausführung ist, an dem das Computerprogramm eine Benutzereingabe annehmen kann.
  2. Verfahren nach Anspruch 1, das weiterhin folgende Schritte umfaßt: – Speichern der optimierten Datei auf einem ersten Computer, – Senden der optimierten Datei von dem ersten Computer zu einem zweiten Computer, und – Verwenden der optimierten Datei, um das Computerprogramm auf dem zweiten Computer zu starten.
  3. Verfahren nach Anspruch 1, das weiterhin folgende Schritte umfaßt: – Erlangen eines zweiten Teils der Dateien und – Ablegen des zweiten Teils in einer Restdatei.
  4. Verfahren nach Anspruch 3, bei dem die Restdatei Dateien umfaßt, die von dem Computerprogramm nach dem gewünschten Zustand verwendet werden.
  5. Verfahren nach Anspruch 3, bei dem die Restdatei mehr als eine Datei umfaßt, wobei die Dateien, die von dem Computerprogramm nach dem gewünschten Zustand verwendet werden, in keiner, einer oder mehr als einer Restdatei abgelegt werden.
  6. Verfahren nach Anspruch 3, das weiterhin folgende Schritte umfaßt: – Speichern der Restdatei auf einem ersten Computer und – Senden der Restdatei von dem ersten Computer zu einem zweiten Computer, nachdem die optimierte Datei von dem ersten Computer zu dem zweiten Computer gesendet wurde.
  7. Verfahren nach Anspruch 3, das weiterhin folgende Schritte umfaßt: – Senden der Restdatei, wenn eine der Dateien von dem Computerprogramm benötigt wird.
  8. Verfahren nach Anspruch 1, bei dem wenigstens eine der Dateien in der optimierten Datei komprimiert ist.
  9. Verfahren nach Anspruch 3, bei dem wenigstens eine der Dateien in der Restdatei komprimiert ist.
  10. Computerprogrammprodukt, welches ein von einem Computer verwendbares Medium umfaßt, mit einem darin eingebetteten Code zur automatischen Optimierung der Ausführung eines Computerprogramms, wobei das Computerprogrammprodukt folgendes umfaßt: – computerlesbaren Programmcode, der dazu eingerichtet ist, um einen Computer zu veranlassen, ein Computerprogramm mit mehreren Dateien zu identifizieren, – computerlesbaren Programmcode, der dazu eingerichtet ist, einen Computer zu veranlassen, einen ersten Teil der Dateien zu identifizieren, der zum Erlangen eines gewünschten Zustands verwendet wird, und – computerlesbaren Programmcode, der dazu eingerichtet ist, den ersten Teil in einer optimierten Datei abzulegen, wobei der gewünschte Zustand der Punkt der Ausführung ist, an dem das Computerprogramm bereit ist, eine Benutzereingabe anzunehmen.
  11. Computerprogrammprodukt nach Anspruch 10, das weiterhin computerlesbaren Code umfaßt, der dazu eingerichtet ist, einen Computer zu veranlassen: – die optimierte Datei auf einem ersten Computer zu speichern, – die optimierte Datei von dem ersten Computer zu einem zweiten Computer zu senden und – die optimierte Datei zu benutzen, um das Computerprogramm auf dem zweiten Computer zu starten.
  12. Computerprogrammprodukt nach Anspruch 10, das weiterhin einen computerlesbaren Code umfaßt, der dazu eingerichtet ist, einen Computer zu veranlassen: – einen zweiten Teil der mehreren Dateien zu erlangen und – den zweiten Teil in einer Restdatei abzulegen.
  13. Computerprogrammprodukt nach Anspruch 10, bei dem die Restdatei Dateien umfaßt, die von dem Computerprogramm nach dem besagten gewünschten Zustand benutzt werden.
  14. Computerprogrammprodukt nach Anspruch 10, das weiterhin einen computerlesbaren Code umfaßt, der dazu eingerichtet ist, – die Restdatei auf einem ersten Computer zu speichern und – die Restdatei von einem ersten Computer zu einem zweiten Computer zu senden, nachdem die optimierte Datei von dem ersten Computer zu dem zweiten Computer gesendet wurde.
  15. Computerprogrammprodukt nach Anspruch 10, das weiterhin einen computerlesbaren Code umfaßt, der dazu eingerichtet ist, die Restdatei nach Bedarf des Computerprogramms zu verwenden.
  16. Vorrichtung zur automatischen Optimierung der Ausführung eines Computerprogramms, welche Folgendes umfaßt: – einen Prozessor, – einen Speicher, der mit dem Prozessor verbunden ist, – ein Computerprogramm mit mehreren Dateien, die in dem Speicher gespeichert sind, und – einen auf dem Prozessor ausgeführten Prozeß, wobei der Prozeß dazu eingerichtet ist, einen ersten Teil der Dateien zu identifizieren, der zur Erlangung eines gewünschten Zustands verwendet wird, den ersten Teil in einer optimierten Datei abzulegen und die optimierte Datei auf einem ersten Computer zu spei chern und die optimierte Datei von dem ersten Computer zu einem zweiten Computer zu senden, wobei der gewünschte Zustand der Punkt der Ausführung ist, an dem das Computerprogramm bereit ist, eine Benutzereingabe anzunehmen.
  17. Vorrichtung nach Anspruch 16, die weiterhin Folgendes umfaßt: – eine virtuelle Maschine mit einem Klassenlader und einem Laufzeitdatenbereich, wobei der Klassenlader dazu eingerichtet ist, den ersten Teil zu erhalten.
  18. Vorrichtung nach Anspruch 16, bei der die optimierte Datei auf dem zweiten Computer ausgeführt wird.
  19. Vorrichtung nach Anspruch 16, bei welcher der Prozeß weiterhin dazu eingerichtet ist, einen zweiten Teil der Dateien zu erlangen und den zweiten Teil in einer Restdatei abzulegen.
  20. Vorrichtung nach Anspruch 19, bei der die Restdatei Dateien umfaßt, die von dem Computerprogramm nach dem besagten gewünschten Zustand verwendet werden.
  21. Vorrichtung nach Anspruch 19, bei dem die Restdatei auf dem ersten Computer gespeichert wird und von dem ersten Computer zu einem zweiten Computer gesendet wird, nachdem die optimierte Datei von dem ersten Computer zu dem zweiten Computer gesendet wurde.
DE69919384T 1998-10-19 1999-09-30 Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms Expired - Lifetime DE69919384T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/175,211 US6230184B1 (en) 1998-10-19 1998-10-19 Method and apparatus for automatically optimizing execution of a computer program
US175211 1998-10-19
PCT/US1999/022780 WO2000023887A2 (en) 1998-10-19 1999-09-30 Method and apparatus for automatically optimizing execution of a computer program

Publications (2)

Publication Number Publication Date
DE69919384D1 DE69919384D1 (de) 2004-09-16
DE69919384T2 true DE69919384T2 (de) 2005-08-04

Family

ID=22639399

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69919384T Expired - Lifetime DE69919384T2 (de) 1998-10-19 1999-09-30 Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms

Country Status (8)

Country Link
US (2) US6230184B1 (de)
EP (1) EP1131709B1 (de)
JP (1) JP2002528791A (de)
KR (1) KR20010080251A (de)
AU (1) AU769976B2 (de)
CA (1) CA2347523A1 (de)
DE (1) DE69919384T2 (de)
WO (1) WO2000023887A2 (de)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324685B1 (en) * 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
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
US6339829B1 (en) * 1998-07-30 2002-01-15 International Business Machines Corporation Method and apparatus to store extended security information in a data structure which shadows a java class object
US7283991B1 (en) * 1999-03-11 2007-10-16 Microsoft Corporation Caching system for path search optimization
CA2267477C (en) * 1999-03-30 2003-10-14 Object Technology International Inc. Packaging memory image files
US6662206B1 (en) * 1999-05-28 2003-12-09 International Business Machines Corporation Method and apparatus for summarizing missing events using event stream interpretation
US7013394B1 (en) * 2000-04-18 2006-03-14 International Business Machines Corporation Data flow pattern recognition and manipulation
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE60115072T3 (de) 2000-09-21 2010-04-01 Research In Motion Ltd., Waterloo System und verfahren zum unterschreiben eines software-kodes
US20020087717A1 (en) * 2000-09-26 2002-07-04 Itzik Artzi Network streaming of multi-application program code
JP2005515520A (ja) * 2001-05-30 2005-05-26 リサーチ イン モーション リミテッド モバイル通信デバイスアプリケーション処理システム
US20030066046A1 (en) * 2001-09-07 2003-04-03 Dawson Thomas Patrick Java virtual machine with non-volatile memory
FR2835329A1 (fr) * 2002-01-30 2003-08-01 Koninkl Philips Electronics Nv Procede de traitement de fichiers binaires de programmes
US7178140B2 (en) * 2002-02-28 2007-02-13 Sun Microsystems, Inc. Speeding up application downloading from a remote server
US20040025009A1 (en) 2002-07-31 2004-02-05 Camber August A. Method and apparatus for acceleration of multimedia content
US20050044523A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Method and system for compiling Java code with referenced classes in a workspace environment
US7840646B2 (en) * 2003-10-08 2010-11-23 Yahoo! Inc. Learned upload time estimate module
US20050102638A1 (en) * 2003-11-10 2005-05-12 Jiang Zhaowei C. Navigate, click and drag images in mobile applications
US7797529B2 (en) * 2003-11-10 2010-09-14 Yahoo! Inc. Upload security scheme
US7584225B2 (en) * 2003-11-10 2009-09-01 Yahoo! Inc. Backup and restore mirror database memory items in the historical record backup associated with the client application in a mobile device connected to a communion network
US7480895B2 (en) * 2003-11-24 2009-01-20 International Business Machines Corporation Web application development tool
KR100654428B1 (ko) * 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
US20050155024A1 (en) * 2004-01-14 2005-07-14 Jeffrey Wannamaker Method of transforming java bytecode into a directly interpretable compressed format
US8627283B2 (en) * 2004-04-29 2014-01-07 Sap Ag Graphical user interface with a background class loading event system
US20050278278A1 (en) * 2004-05-28 2005-12-15 Petev Petio G Class loading jar operation optimizations
US7617501B2 (en) 2004-07-09 2009-11-10 Quest Software, Inc. Apparatus, system, and method for managing policies on a computer having a foreign operating system
US7174174B2 (en) * 2004-08-20 2007-02-06 Dbs Communications, Inc. Service detail record application and system
EP1789958A4 (de) * 2004-09-13 2009-12-09 Lg Electronics Inc Verfahren und vorrichtung zum wiedergeben von in einem aufzeichnungsmedium aufgezeichneten daten unter verwendung einer lokalen speicherung
US20060077817A1 (en) * 2004-09-13 2006-04-13 Seo Kang S Method and apparatus for reproducing data from recording medium using local storage
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
KR20060047549A (ko) * 2004-10-12 2006-05-18 엘지전자 주식회사 로컬 스토리지를 이용한 기록매체 재생방법 및 재생장치
WO2006049185A1 (ja) * 2004-11-02 2006-05-11 Matsushita Electric Industrial Co., Ltd. アプリケーションプログラム実行装置
CN101057286B (zh) * 2004-11-08 2010-04-07 Lg电子株式会社 利用本地存储器从记录介质中再现出数据的方法和装置
KR20060063601A (ko) * 2004-12-03 2006-06-12 엘지전자 주식회사 로컬 스토리지에 데이터를 다운로드/업데이트 하는 방법 및장치
KR20060081323A (ko) * 2005-01-07 2006-07-12 엘지전자 주식회사 로컬 스토리지를 이용한 기록매체 재생방법 및 재생장치
US7703089B2 (en) * 2005-04-29 2010-04-20 Sap Ag Compatibility framework using versioning class loaders
US7307423B2 (en) * 2005-05-05 2007-12-11 Wisconsin A.Umni Research Foundation Magnetic resonance elastography using multiple drivers
US7970015B2 (en) * 2005-09-12 2011-06-28 Hob Gmbh & Co. Kg Method for transmitting a message by compressed data transmission between a sender and a receiver via a data network
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US8087075B2 (en) 2006-02-13 2011-12-27 Quest Software, Inc. Disconnected credential validation using pre-fetched service tickets
US7855548B2 (en) * 2006-03-29 2010-12-21 Levinton Manufacturing Co., Inc. Low labor enclosure assembly
US20070233693A1 (en) * 2006-03-31 2007-10-04 Baxter Robert A Configuring a communication protocol of an interactive media system
US20070233694A1 (en) * 2006-03-31 2007-10-04 Baxter Robert A Configuring interactive media systems based on performance metrics
US20070245028A1 (en) * 2006-03-31 2007-10-18 Baxter Robert A Configuring content in an interactive media system
JP2007310596A (ja) * 2006-05-17 2007-11-29 Sharp Corp サービス提供装置、コンピュータプログラム及び記録媒体
US8429712B2 (en) 2006-06-08 2013-04-23 Quest Software, Inc. Centralized user authentication system apparatus and method
US8086710B2 (en) 2006-10-30 2011-12-27 Quest Software, Inc. Identity migration apparatus and method
AU2008283625B2 (en) * 2007-07-31 2011-05-26 Daikin Industries, Ltd. Air conditioner and extension nozzle of cleaner used for the same
US8418144B2 (en) * 2007-09-06 2013-04-09 International Business Machines Corporation Fast rendering of unsigned applet jars in a web browser environment
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
CN101661425B (zh) 2008-08-26 2012-03-21 国际商业机器公司 测试覆盖分析方法和装置
JP2009076099A (ja) * 2008-12-19 2009-04-09 Sharp Corp サービス提供装置
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8463944B2 (en) * 2010-01-05 2013-06-11 International Business Machines Corporation Optimal compression process selection methods
CN102810065B (zh) * 2011-05-31 2016-04-27 国际商业机器公司 用于加载程序模块的方法和系统
US9292358B2 (en) * 2011-06-13 2016-03-22 Microsoft Technology Licensing, Llc Remotely retrieving information from consumer devices
GB2519516B (en) * 2013-10-21 2017-05-10 Openwave Mobility Inc A method, apparatus and computer program for modifying messages in a communications network
US11755539B2 (en) * 2021-03-22 2023-09-12 Renmin University Of China Big data processing method based on direct computation of compressed data

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131159A (en) * 1992-05-08 2000-10-10 Paradyne Corporation System for downloading programs
US5857101A (en) 1997-04-15 1999-01-05 Acceleration Software International Corporation Program lunch acceleration

Also Published As

Publication number Publication date
JP2002528791A (ja) 2002-09-03
CA2347523A1 (en) 2000-04-27
AU769976B2 (en) 2004-02-12
WO2000023887A2 (en) 2000-04-27
US6230184B1 (en) 2001-05-08
EP1131709B1 (de) 2004-08-11
US20010037356A1 (en) 2001-11-01
AU6407199A (en) 2000-05-08
WO2000023887A3 (en) 2000-11-23
US6480880B2 (en) 2002-11-12
DE69919384D1 (de) 2004-09-16
EP1131709A2 (de) 2001-09-12
KR20010080251A (ko) 2001-08-22

Similar Documents

Publication Publication Date Title
DE69919384T2 (de) Verfahren und vorrichtung zur automatischen optimierung der ausführung eines rechnerprogramms
DE60035745T2 (de) Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung
DE60030181T2 (de) System, Verfahren und hergestellter Gegenstand zum Zugriff auf und Verarbeitung von Chipkartendaten
DE69922015T2 (de) Verfahren und vorrichtung zum übersetzen und ausführen von arteigenem code in einer umgebung mit virtuellen maschinen
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE60009489T2 (de) Vorrichtung und verfahren zum verwalten der verteilung von inhalten zu einem gerät
DE602004009902T2 (de) System und verfahren für kompakte nachrichtenübermittlung in der netzwerkkommunikation
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE69709959T2 (de) Verwendung von polymorphischen dateipaketen zur aktualisierung von softwarekomponenten
EP0972386B1 (de) Vorrichtung und verfahren zur aktualisierung und zur synchronisierung von informationen zwischen einem klient und einem server
DE69635337T2 (de) Erweiterbares und austauschbares system von netzwerkkomponenten
DE69926459T2 (de) Verfahren und vorrichtung zur umlenkung von serverexternen hyperlink-referenzen
DE10236188B4 (de) Verfahren, System und Programmprodukt zum Bereitstellen eines Inhalts einer Quellwebsite an eine Verbraucherwebsite durch einen Bildumwandlungsdienst
DE69838257T2 (de) Verfahren zum erweitern der hypertext markup sprache (html) zur unterstützung von unternehmungsanwendungsdatenbindung
DE10236189B4 (de) Verfahren, System und Programmprodukt zum Drucker eines Dokuments, das eine Mehrzahl von Seiten aufweist
DE69837550T2 (de) System und Verfahren zur Datenübermittlung von einer Serverapplikation an Klientknoten
DE10309620A1 (de) Dynamisches Expertenschnittstellensystem und Verfahren
WO1998052125A1 (en) Data structure and methods for defining and using attribute data blocks to instantiate objects and describe changes to objects
DE69930695T2 (de) Verfahren und Vorrichtung für ein Applikationsverteiler für eine Serverapplikation
DE60002839T2 (de) Verfahren und vorrichtung zur datenverarbeitung durch einen proxy
US6621506B2 (en) Applying operations to selected data of different types
DE60100932T2 (de) Ein Speicherverwaltungsgerät, -methode,-programm und rechnerlesbares Speichermedium zum Speichern des Speicherverwaltungsprogrammes
DE60031088T2 (de) Verfahren und Gerät zur Bereitstellung von Daten für einen Benutzer
US6252587B1 (en) Method and apparatus in a data processing system for accessing data
DE69633430T2 (de) Netzwerkkomponentensystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition