WO2001061486A2 - Incremental bootstrap class loader - Google Patents

Incremental bootstrap class loader Download PDF

Info

Publication number
WO2001061486A2
WO2001061486A2 PCT/US2001/005409 US0105409W WO0161486A2 WO 2001061486 A2 WO2001061486 A2 WO 2001061486A2 US 0105409 W US0105409 W US 0105409W WO 0161486 A2 WO0161486 A2 WO 0161486A2
Authority
WO
WIPO (PCT)
Prior art keywords
components
downloading
downloaded
java class
component
Prior art date
Application number
PCT/US2001/005409
Other languages
French (fr)
Other versions
WO2001061486A3 (en
Inventor
Andrew Wason
Original Assignee
Interactive Video Technologies, 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 Interactive Video Technologies, Inc. filed Critical Interactive Video Technologies, Inc.
Priority to AU2001238541A priority Critical patent/AU2001238541A1/en
Publication of WO2001061486A2 publication Critical patent/WO2001061486A2/en
Publication of WO2001061486A3 publication Critical patent/WO2001061486A3/en

Links

Classifications

    • 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

Definitions

  • Software is often downloaded through a network into a machine that performs
  • the network can be a local area network ("LAN”) or a wide area
  • the object of this invention is to provide a faster method for incremental
  • this invention initially loads an incremental
  • bootstrap class loader a small module that controls further loading of a software application.
  • the incremental loader proceeds to load all software modules that are
  • required components can be, and usually are, much smaller than the total size of the
  • the user can begin using the application much sooner than if the user loaded the entire application before launching
  • the incremental loader automatically senses the need
  • JVM' JavaTM Virtual Machine
  • JVM is a byte-code interpreter for executing code written in JavaTM, an architecture-neutral, object-oriented, multithreaded language intended for use in distributed environments.
  • JCK JavaTM Compatibility Kit
  • the JVM thus includes the core virtual machine, a large set of core JavaTM class files, and a set of native libraries — dynamic link libraries (“DLLs”) on Win32
  • Extensions may be installed with a particular JVM. Extensions are not
  • bootstrap class loader loads only those classes and native libraries that are actually
  • This mechanism downloads the JVM piece-by-piece. Only what is used is
  • JavaTM class file includes a Constant Pool, i.e., a list of all constants referenced by the Constant Pool.
  • the incremental class loader keeps track of the downloaded files by modifying "jar" files that contain JavaTM classes. A minimal version of these jar files is included in the initially downloaded stub JVM. Each file has an empty JarEntry structure for each class file belonging to the jar file. (Description of the JarEntry class can be found in httpJ/wwwjavasoft.conVproducts/jdk/1.2/docs/api/javas/util/jar/JarEntry.htrnl.)
  • the collection of JarEntries acts as a manifest specifying the set of core JavaTM class files that can be remotely downloaded.
  • the incremental class loader receives a request to load a specified class, it loads that class from the jar file. If the class length is zero, then the class loader must download the class from the remote class file server, uncompress it, and rebuild its Constant Pool by replacing the indices into the Global
  • the Global Constant Pool is also empty.
  • each index it contains into the Global Constant Pool will cause the index's associated entry to be downloaded and placed in the Global Constant Pool.
  • All downloaded components must be verified to prevent installation of malicious code or data on the user's system. This can be done by computing a hash of the data, e.g., a checksum or a CRC, and encrypting the hash using a private key. This encrypted hash is sent over the network along with the data. The corresponding public key is included in the stub JVM download.
  • the incremental class loader computes its hash, decrypts the downloaded hash using its public key, and compares the decrypted hash to the computed hash. If the two hashes match, the data is safe to use. Otherwise, it has been corrupted and an appropriate exception is processed.
  • the incremental class loader when the incremental class loader receives a request for a class, it performs the following steps: 1. Load the JarEntry for the class from the local core jar file;
  • One way to synchronize access is to have a single class store manager process for managing the class file store.
  • a variation on the incremental loading method described can be used to upgrade a JVM from one release to another. This requires "tagging" each jar file entry with a version LD.
  • a class is requested and the class is available locally, its JD is checked.
  • a class with a current LD is loaded into memory. If a class's LD is not current, the class file is conditionally downloaded from the class file server. If the version on the class file server has changed, the new file is downloaded, stored, and tagged with the new ID. Otherwise, the file is locally re-tagged with the new version and not downloaded.

Abstract

This is a method for incremental downloading of a software application with several components. First, a small stub module is downloaded. The stub module then downloads some subset of the application's components sufficient to launch the application. While the application runs, the need for additional components is detected. If the required components are unavailable locally, there are downloaded from a file server, and the locally maintained listing of available components is updated accordingly. The method described can also be used to update a software release in a similar, incremental manner.

Description

INCREMENTAL BOOTSTRAP CLASS LOADER
TECHNICAL FIELD This invention relates to methods for remote software downloading and
updating.
BACKGROUND OF THE INVENTION Software applications usually are built in discrete modules. Many reasons for
the modular construction exist; because the reasons are well known for the most part,
we mention only one, and a very general one at that: structured programming.
Software is often downloaded through a network into a machine that performs
actual execution. The network can be a local area network ("LAN") or a wide area
network ("WAN"). Although download speeds have improved considerably over the
past several years, an average application's size has grown even faster than the
download speeds. As an example, downloading over the Internet — the most widely
used network — through a conventional analog telephone line is performed at speeds
of only several megabytes per hour.
At the same time, the number of software downloads is growing because of
several factors, including the following:
1. Downloading is quickly becoming the preferred means for software
distribution; 2. Proliferation of personal computer use;
3. Growth of telecommuting;
4. Expansion in the number of software publishers;
5. Shorter period between software releases. License administration considerations and local storage limitations also favor
downloading, although these aspects are less likely to affect a typical non LAN-based individual user.
In sum, software downloads are becoming more common and more time
consuming. It is therefore desirable to reduce the download size. It is particularly
desirable to reduce the size of the initial download, i.e., the size of the code that must
be downloaded before a user can launch an application for the first time.
One known attempt to reduce download size is by defining "profiles" - a specification of the minimum set of Application Programming Interfaces ("APIs")
useful for a particular kind of application. Because of their generality, these profiles,
will often include functionality a given application does not need, and will not include
functionality that another application may require. One size indeed does not fit all.
OBJECT OF THE INVENTION
The object of this invention is to provide a faster method for incremental
software downloading by decreasing initial download size. SUMMARY OF THE INVENTION
To achieve this and other objects, this invention initially loads an incremental
bootstrap class loader - a small module that controls further loading of a software application. The incremental loader proceeds to load all software modules that are
required to launch the application. As a matter of practical experience, the initially
required components can be, and usually are, much smaller than the total size of the
application. Thus, in accordance with this invention, the user can begin using the application much sooner than if the user loaded the entire application before launching
it.
After the initial transfer, the incremental loader automatically senses the need
for additional modules, connects to the application's file server, obtains the additional
modules, and stores them locally.
Other features and advantages of the present invention will become apparent
from the following description taken in conjunction with the code listed in the
accompanying appendix.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT OF
INVENTION
In developing the preferred embodiment, our goal was to reduce the initial
download size of a JavaTM Virtual Machine ("JVM') without losing JVM
functionality. JVM is a byte-code interpreter for executing code written in Java™, an architecture-neutral, object-oriented, multithreaded language intended for use in distributed environments.
Simply removing pieces of the JVM, e.g., the GUI libraries, does reduce the
download size; it also causes loss of JVM functionality. But every JVM is required to
contain a specified set of functional capabilities to be "Java" compatible. The set of
functional capabilities is specified in the JavaTM Compatibility Kit ("JCK"), a set of test cases.
The JVM thus includes the core virtual machine, a large set of core Java™ class files, and a set of native libraries — dynamic link libraries ("DLLs") on Win32
platforms — that embody the functionality of the core Java™ classes, with the native
libraries containing the "native method"- specific implementations. The "core" JVM
components are required for Java™ compatibility. Additional functions and classes
with their associated native code may be used by application developers to extend the
functionality of the platform. We shall refer to these functions and classes as
"Extensions." Extensions may be installed with a particular JVM. Extensions are not
required for Java™ compatibility.
In the course of running a specific Java™ application, the JVM loads Java™
classes and native libraries from the local disk into program memory. Core classes and
their associated native libraries are loaded using a bootstrap class loader. The
bootstrap class loader loads only those classes and native libraries that are actually
required for the functioning of the specific application. As the application runs, additional classes and libraries may be dynamically loaded as they are needed. For example, if the user pulls down a menu in the graphical user interface, the class loader
will dynamically load and cache the Menu andMenultem classes.
To reduce the initial download size, we download a small stub JVM with our incremental class loader. The incremental class loader recognizes requests for core
classes and native libraries that have not been cached locally, downloads them from a specified location on the network, and permanently stores them on the local disk, so
that future requests for these components can be resolved locally.
This mechanism downloads the JVM piece-by-piece. Only what is used is
downloaded. Typically, this results in a substantial download size saving for the first application, and subsequent application downloads are even smaller because the first
application uses many common components.
Our incremental class loader uses standard compression techniques.
Additionally, it eliminates superfluous Constant Pool entries in Java™ classes. Each
Java™ class file includes a Constant Pool, i.e., a list of all constants referenced by the
class. Many Constant Pool entries are replicated across the thousands of core Java™
classes. All of the core Java™ class Constant Pools can be extracted into a single
Global Constant Pool with no duplicate entries. The individual class Constant Pool
entries can be replaced with indices into the Global Constant Pool. This results in a
highly compressed Java™ class file even before invocation of standard compression techniques. The incremental class loader keeps track of the downloaded files by modifying "jar" files that contain Java™ classes. A minimal version of these jar files is included in the initially downloaded stub JVM. Each file has an empty JarEntry structure for each class file belonging to the jar file. (Description of the JarEntry class can be found in httpJ/wwwjavasoft.conVproducts/jdk/1.2/docs/api/javas/util/jar/JarEntry.htrnl.)
The collection of JarEntries acts as a manifest specifying the set of core Java™ class files that can be remotely downloaded. When the incremental class loader receives a request to load a specified class, it loads that class from the jar file. If the class length is zero, then the class loader must download the class from the remote class file server, uncompress it, and rebuild its Constant Pool by replacing the indices into the Global
Constant Pool with the actual entry values from the Global Constant Pool.
Initially, the Global Constant Pool is also empty. When a class is downloaded, each index it contains into the Global Constant Pool will cause the index's associated entry to be downloaded and placed in the Global Constant Pool. All downloaded components must be verified to prevent installation of malicious code or data on the user's system. This can be done by computing a hash of the data, e.g., a checksum or a CRC, and encrypting the hash using a private key. This encrypted hash is sent over the network along with the data. The corresponding public key is included in the stub JVM download. Before using the downloaded data, the incremental class loader computes its hash, decrypts the downloaded hash using its public key, and compares the decrypted hash to the computed hash. If the two hashes match, the data is safe to use. Otherwise, it has been corrupted and an appropriate exception is processed.
To summarize, when the incremental class loader receives a request for a class, it performs the following steps: 1. Load the JarEntry for the class from the local core jar file;
2. If the JarEntry has zero length,
(i) Download the class file from the class file server, (ii) Uncompress the class file using standard compression techniques, (iii) Verify the class file as described above,
(iv) Examine the class file's Constant Pool and, for each index that is not populated in the Global Constant Pool, download and verify the entry for that index, populating the Global Constant
Pool, (v) Reconstitute the class's Constant Pool with entries from the
Global Constant Pool, (vi) Store the class file in the corresponding JarEntry of a local jar file; and
3. Load the class entry into memory. The procedure for native libraries is slightly different. A table of native library entries is maintained. When missing libraries are downloaded, they are marked in the table as locally available. Native libraries are compressed using standard techniques and they are verified.
Because multiple processes may be using the JVM simultaneously, access to the local class file store must be properly synchronized. One way to synchronize access is to have a single class store manager process for managing the class file store.
To download classes, all other processes using the JVM communicate with the class store manager via local sockets. The single class store manager process internally synchronizes its access to the class file store.
A variation on the incremental loading method described can be used to upgrade a JVM from one release to another. This requires "tagging" each jar file entry with a version LD. When a class is requested and the class is available locally, its JD is checked. A class with a current LD is loaded into memory. If a class's LD is not current, the class file is conditionally downloaded from the class file server. If the version on the class file server has changed, the new file is downloaded, stored, and tagged with the new ID. Otherwise, the file is locally re-tagged with the new version and not downloaded.
The methods described in this specification obviously can be applied to Installed Extensions and applications other than JVM. Moreover, those skilled in the art will be able to devise various modifications that although not explicitly described or shown herein, embody the principles of the invention and are thus within its spirit and scope.

Claims

I CLAIM:
1. A method for incrementally downloading a software application
having a plurality of components, said method comprising the steps of:
downloading a subset of said plurality of components, the components of the subset being sufficient to launch said application;
launching said application;
sensing the application's requirement for components; downloading a first additional component that has not been
previously downloaded after the application requires said first additional
component.
2. A method for downloading according to claim 1, further
comprising the step of storing the downloaded components locally.
3. A method for downloading according to claim 1, further
comprising the step of verifying integrity of the downloaded components.
4. A method for downloading according to claim 1, further
comprising the steps of compressing one of the components before
downloading said one of the components and uncompressing the downloaded one of the components.
5. A method for downloading according to claim 1, further
comprising the steps of:
compressing the components before downloading; uncompressing the downloaded components; verifying integrity of the downloaded components; and
storing the downloaded components locally.
6. A method for downloading according to claim 5, wherein said
step of downloading a subset of said plurality of components is a step for
downloading a subset of said plurality of components, said step of downloading a first additional component is a step for downloading a first additional
component, said step of sensing the application's requirement for components
is a step for sensing the application's requirement for components, said step of compressing the components is a step for compressing the components, said
step of uncompressing the downloaded components is a step for
uncompressing the downloaded components, and said step of verifying integrity
of the downloaded components is a step for verifying integrity of the
downloaded components.
7. A method for downloading a JVM having a plurality of
components, said plurality of components including a group of Java class files, each Java class file of said group of Java class files being associated with a Java
class, said each Java class file having a Constant Pool, said Constant Pool of said each Java class file including a list of constants referenced by the Java class
associated with said each Java class file, said method comprising the steps of:
downloading a subset of said plurality of components, the
components of the subset being sufficient to launch said JVM;
launching the JVM; sensing the launched JVM's requirement for components; and
downloading additional components that have not been
previously downloaded after the JVM requires the additional components;
wherein the subset and the additional components include a plurality of
Java class files from the group of Java class files.
8. A method for downloading according to claim 7, further
comprising the step of compressing the Java class files of said plurality of Java
class files before downloading, and uncompressing the downloaded Java class files.
9. A method for downloading according to claim 8, wherein said step of compressing Java class files includes compressing Java class
files belonging to a first set;
said method further comprising the steps of:
extracting constants of Constant Pools of the Java class files
belonging to the first set into a Global Constant Pool, said step of extracting performed before compressing the Java class files belonging to the first set;
replacing the constants of the Constant Pools of the Java class
files belonging to the first set with corresponding indices into the Global
Constant Pool;
downloading constants of the Global Constant Pool;
building a downloaded version of the Global Constant Pool; and
replacing the indices into the Global Constant Pool in the
downloaded Java class files belonging to the first set with
corresponding constants of the Global Constant Pool.
10. A method for downloading according to claim 9, further
comprising the step of verifying integrity of the downloaded components.
11. A method for downloading according to claim 9, further
comprising a step for verifying integrity of the downloaded components.
12. A method for downloading according to claim 9, wherein said step of downloading constants of the Global Constant Pool is a step for
downloading constants of the Global Constant Pool.
13. A method for downloading according to claim 9, wherein a first
Java class file having a first Constant Pool is downloaded, said first Constant
Pool having a first constant that is not present in the downloaded version of the
Global Constant Pool, further comprising the steps of:
downloading the first constant; and
populating the downloaded version of the Global Constant Pool with the first constant.
14. A method for downloading according to claim 9, further
comprising the step of verifying the downloaded constants before said building step.
15. A method for running the JVM downloaded in accordance with claim 9, further comprising the steps of:
storing each downloaded component of the JVM locally; and synchronizing access to said each downloaded component of the
JVM.
16. A method for upgrading a software application having a plurality of components to a first version, said components being stored locally,
said method comprising the steps of:
storing locally a plurality of tags, one tag per component, each
tag indicating a current version of said each tag's associated
component;
sensing the application's requirement for loading the components;
checking a first tag associated with a first component after the
application requires said first component; conditionally downloading from a file server the first version of
the first component if the first tag indicates that the locally stored first
component is older than the first version of the first component;
downloading the first version of the first component if the first
version of the first component differs from the locally stored first
component;
storing locally the downloaded first version of the first
component; and
updating the first tag to indicate the first version.
PCT/US2001/005409 2000-02-17 2001-02-20 Incremental bootstrap class loader WO2001061486A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001238541A AU2001238541A1 (en) 2000-02-17 2001-02-20 Incremental bootstrap class loader

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US50591900A 2000-02-17 2000-02-17
US09/505,919 2000-02-17

Publications (2)

Publication Number Publication Date
WO2001061486A2 true WO2001061486A2 (en) 2001-08-23
WO2001061486A3 WO2001061486A3 (en) 2002-10-17

Family

ID=24012426

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/005409 WO2001061486A2 (en) 2000-02-17 2001-02-20 Incremental bootstrap class loader

Country Status (2)

Country Link
AU (1) AU2001238541A1 (en)
WO (1) WO2001061486A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1318451A1 (en) * 2001-12-10 2003-06-11 Aladdin Knowledge Systems GmbH& Co. KG Method to execute a program on a computer
EP1461693A1 (en) * 2001-12-12 2004-09-29 Valve Corporation Method and system for upgrading and rolling back versions
US7065755B2 (en) * 2001-03-15 2006-06-20 Sun Microsystems, Inc. Method and apparatus for removing class initialization barriers from shared compiled methods
WO2007113550A1 (en) 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Exception handler for the upgrade of java objects in a distributed system
US8788569B2 (en) 2006-03-31 2014-07-22 British Telecommunications Public Limited Company Server computer system running versions of an application simultaneously
US8984534B2 (en) 2006-03-31 2015-03-17 British Telecommunications Public Limited Company Interfacing between a receiving component of a server application and a remote application

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998019237A1 (en) * 1996-10-25 1998-05-07 Schlumberger Systemes Using a high level programming language with a microcontroller
EP0939365A2 (en) * 1998-02-26 1999-09-01 Sun Microsystems, Inc. Method, apparatus, system & computer program product for initializing a data structure at its first active use
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998019237A1 (en) * 1996-10-25 1998-05-07 Schlumberger Systemes Using a high level programming language with a microcontroller
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
EP0939365A2 (en) * 1998-02-26 1999-09-01 Sun Microsystems, Inc. Method, apparatus, system & computer program product for initializing a data structure at its first active use

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BRADLEY Q, HORSPOOL R N, VITEK J: "JAZZ: An Efficient Compressed Format for Java Archive Files" PROCEEDINGS OF CASCON'98, [Online] 29 November 1998 (1998-11-29) - 3 December 1998 (1998-12-03), pages 294-302, XP002193328 Toronto, Ontario, Canada Retrieved from the Internet: <URL:http://www.csr.uvic.ca/~nigelh/Public ations/jazz.pdf> [retrieved on 2002-03-14] *
CROFT D W: "Intersession Caching of Downloaded Java Classes" INTERNET DOCUMENT, [Online] 1 April 1998 (1998-04-01), pages 1-5, XP002193327 Retrieved from the Internet: <URL:http://www.alumni.caltech.edu/~croft/ research/java/cache/> [retrieved on 2002-03-14] *
TJASINK S: "A Highly Portable Java Virtual Machine" TECHNICAL REPORT - DATABASE LABORATORY - DEPARTMENT OF COMPUTER SCIENCE - UNIVERSITY OF CAPE TOWN, [Online] no. CS-97-03-00, July 1997 (1997-07), pages i-ii,1-21, XP002193326 Rondebosch, South Africa Retrieved from the Internet: <URL:http://people.cs.uct.ac.za/~stjasink/ papers/sjt_java_TR.ps.gz> [retrieved on 2002-03-14] *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065755B2 (en) * 2001-03-15 2006-06-20 Sun Microsystems, Inc. Method and apparatus for removing class initialization barriers from shared compiled methods
EP1318451A1 (en) * 2001-12-10 2003-06-11 Aladdin Knowledge Systems GmbH&amp; Co. KG Method to execute a program on a computer
US7757230B2 (en) 2001-12-10 2010-07-13 Aladdin Europe Gmbh Method of executing a program on a computer, and computer program product
EP1461693A1 (en) * 2001-12-12 2004-09-29 Valve Corporation Method and system for upgrading and rolling back versions
EP1461693A4 (en) * 2001-12-12 2007-12-19 Valve Corp Method and system for upgrading and rolling back versions
WO2007113550A1 (en) 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Exception handler for the upgrade of java objects in a distributed system
US8095823B2 (en) 2006-03-31 2012-01-10 British Telecommunications Public Limited Company Server computer component
US8788569B2 (en) 2006-03-31 2014-07-22 British Telecommunications Public Limited Company Server computer system running versions of an application simultaneously
US8984534B2 (en) 2006-03-31 2015-03-17 British Telecommunications Public Limited Company Interfacing between a receiving component of a server application and a remote application

Also Published As

Publication number Publication date
WO2001061486A3 (en) 2002-10-17
AU2001238541A1 (en) 2001-08-27

Similar Documents

Publication Publication Date Title
US7984435B2 (en) Update system employing reference software to reduce number of update packages
US5764992A (en) Method and apparatus for automatic software replacement
US7055146B1 (en) Method and system for dynamically inserting modifications for identified programs
US7185071B2 (en) Self-healing version and configuration model for an application server
US6732267B1 (en) System and method for performing remote BIOS updates
US6381742B2 (en) Software package management
US7814474B2 (en) Updatable mobile handset based on Linux with compression and decompression techniques
US7934210B1 (en) System and method for updating one or more programs and their environment
US5752042A (en) Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer
US8392906B2 (en) Enabling parallel websphere runtime versions
US7735057B2 (en) Method and apparatus for packaging and streaming installation software
US7191436B1 (en) Computer system utility facilitating dynamically providing program modifications for identified programs
US7805409B2 (en) Dynamic composition of an execution environment from multiple immutable file system images
US6493871B1 (en) Method and system for downloading updates for software installation
US8296758B2 (en) Deployment and versioning of applications
US8140486B2 (en) Restoring a source file referenced by multiple file names to a restore file
US20050055686A1 (en) Method and system for servicing software
US20070143379A1 (en) Metadata driven deployment of applications
US20070271561A1 (en) Updating virtual machine with patch or the like
US20060225072A1 (en) Packaging multiple groups of read-only files of an application&#39;s components into multiple shared libraries
US20080133922A1 (en) File Update Availability Checking In a Hierarchal File Store
US20120304163A1 (en) Management of Software and Operating System Updates Required for the Process of Creating a Virtual Machine Facsimile of an Existing Physical or Virtual Machine
EP1577766A2 (en) Side-by-side drivers
US7440971B2 (en) Context based access of files by file system to a client based on detection of related files opened by the client
AU4105899A (en) Factory software mangement system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP