[go: up one dir, main page]

HK1068981A1 - Dynamically downloading and executing system services on a wireless device - Google Patents

Dynamically downloading and executing system services on a wireless device Download PDF

Info

Publication number
HK1068981A1
HK1068981A1 HK05101278A HK05101278A HK1068981A1 HK 1068981 A1 HK1068981 A1 HK 1068981A1 HK 05101278 A HK05101278 A HK 05101278A HK 05101278 A HK05101278 A HK 05101278A HK 1068981 A1 HK1068981 A1 HK 1068981A1
Authority
HK
Hong Kong
Prior art keywords
virtual machine
application
wireless device
system service
downloaded
Prior art date
Application number
HK05101278A
Other languages
Chinese (zh)
Other versions
HK1068981B (en
Inventor
S.A.斯普里格
B.迈尼尔
M.穆尔蒂
P.雅各布斯
Original Assignee
高通股份有限公司
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 高通股份有限公司 filed Critical 高通股份有限公司
Publication of HK1068981A1 publication Critical patent/HK1068981A1/en
Publication of HK1068981B publication Critical patent/HK1068981B/en

Links

Classifications

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

Landscapes

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

Abstract

An applet requiring a virtual machine is downloaded to a wireless device. A software platform on the device determines that a virtual machine is used by the applet during execution. Without additional user interaction, the virtual machine is downloaded to the wireless device. This allows those applets requiring a virtual machine to be used with devices that don't have the virtual machine already installed. Further embodiments include the dynamic loading of a system service when an application is being loaded that used the system service. A unique identifier associated with the system service may be used to determine if determine if the system sercice is loaded.

Description

Dynamic download and execution of system services on a wireless device
Background
In general, system services, including virtual machines, viewfinders, and plug-ins, need to be installed on devices for use by other objects or applications that need them. For example, a Java applet runs on a device that has a Java virtual machine loaded. Thus, a device attempting to execute a Java applet will install a Java virtual machine on the device. Generally, since a virtual machine or other system service needs to be incorporated into the device it is executing, it is installed prior to attempting to download or execute an applet or other application that wishes to utilize the system service.
However, some devices, especially wireless devices, have a constrained environment. Memory and processing are scarce more than on other larger computer systems, including both secondary and primary storage for active programs and data. Thus, it is advantageous to download or install only certain system services, such as downloading virtual machines, as needed. Unfortunately, on these constrained devices, system services are required to be installed or loaded into memory and take up valuable resources even when not in use. Further, since the system service has not been installed on the device, a user who wishes to use an application on a device supporting the system service, which does not have the application, cannot do so.
Summary of The Invention
The present invention overcomes the deficiencies in the art by providing a system and method for dynamically downloading and installing system services in a device based on the need for applications running on the device, wherein the system services are virtual machines, viewfinders, plug-ins, flash players, other executable content or data.
In one embodiment, the present invention relates to downloading system services onto a wireless device for use with an application to be downloaded. The system services may be downloaded automatically without user intervention when the application is downloaded.
In yet another embodiment, the present invention also detects the presence of a virtual machine when an application is loaded into memory of the device for execution, and loads and executes the virtual machine as needed, so that the application may run in the context of the virtual machine.
In accordance with the present invention, a method of receiving a virtual machine at a wireless device is provided. The method comprises the following steps:
sending a request to download an application on the wireless device;
a server sending the application and an associated reference to the wireless device in response to a request for the application, wherein the reference indicates that the application uses the virtual machine;
determining, with the reference, whether the virtual machine is loaded onto the wireless device; and
in the event that the virtual machine is not loaded onto the wireless device, a request is sent to the server and the virtual machine is downloaded to the wireless device.
Brief Description of Drawings
Exemplary and preferred embodiments of the present invention will now be described in detail with reference to the figures, wherein like reference numerals designate identical or corresponding parts throughout the several views. The nature, objectives, and advantages of the invention will become more apparent to those skilled in the art upon consideration of the following detailed description taken in conjunction with the accompanying drawings.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate preferred embodiments of the invention and, together with a general description of the invention given above, and the detailed description of the preferred embodiments given below, serve to explain the principles of the invention. In the drawings:
FIG. 1 illustrates an exemplary embodiment of an environment in which the present invention may be practiced;
FIG. 2 illustrates a process involving downloading an application using a system service consistent with an exemplary embodiment of the present invention; and
fig. 3 illustrates a process for loading and executing a virtual machine installed on a wireless device in response to the loading of an application, wherein the virtual machine is used by the loading application.
Description of the exemplary embodiments
FIG. 1 illustrates an exemplary embodiment of an environment in which the present invention may be practiced. In this embodiment, the device 100 communicates with the server 105 using a wireless network 125. Device 100 may be a wireless device that may transmit and/or receive data and/or voice. The wireless device 100 may request various pieces of information from the server, including applications 110 and system services 115, such as a virtual machine 120 used by the wireless device.
The wireless device 110 may contain a processor and primary and secondary memory (not shown) for storing, loading and executing applications 110 and system services 115 downloaded from a server. These applications 110 and system services 115 may also interact with a software platform located on the wireless device to facilitate interfacing with the wireless device, such as by providing generic calls for resources specified by the device. This software platform was developed by the high-pass (QUALCOMM) corporation (San Diego, Calif.) by WirelessTM(BREWTM) Binary Runtime Environment (Binary Runtime Environment) of software.
Those skilled in the art will recognize that the architecture of wireless device 100 may also include other component categories (either not shown or specifically identified). Such components include, but are not limited to: a display, a speaker, a microphone, and buttons that allow character and symbol entry. The wireless device may also include a battery, various storage mechanisms such as ROM, and flash memory, an operating system, and a compiler component to help execute applications, system services, other executable code, and manage data on the device.
While the system services and applications are described as being located on the server 105, those skilled in the art will appreciate that the applications and software may not be physically located on the server. In this case, the server may request the applications and system services of the wireless device from the other system and then download the requested file, or may transmit the request to another system for direct transmission of the requested file to the wireless device.
As will be appreciated by those skilled in the art, FIG. 1 is an exemplary environment for the present invention. Devices may include other types of systems, including wireless and non-wireless devices. Further, the devices may communicate with servers and other systems using a variety of network types and communication architectures, including wireless and non-wireless, private and public, switched and non-switched, direct links, or any combination thereof.
Fig. 2 illustrates a process involving downloading an application using a system service consistent with an exemplary embodiment of the present invention. A device, such as wireless device 100, requests an application from server 105 (step 200). The request may have been initiated because the user requested a particular application, such as a game, from the wireless device. The wireless device may be configured so that the applications available to the user are not all resident on the device itself, but rather a representation of those applications accessible to the user is stored.
However, the request may be non-user initiated and may include tasks for system maintenance as well as tasks that do not involve direct user interaction. Further, the request may be for file types other than applications, including data, system services, or other types of information.
The device then receives the application from the server and stores it (step 205). In one embodiment, the server sends the requested application to the device. However, as noted above, the application may not be physically located on the server; however, the server may receive the application and begin downloading the application to the device.
The device then checks the application to determine if the application uses system services (step 210). The application may include a reference, or some identifier, indicating that the system service is used with the application. The reference may be included within the application or related to the application in some other way.
In one embodiment, the application is a Java applet and requires execution with a Java virtual machine (system service). The device may include a software platform, such as Brew (r) described aboveTM. The device checks whether there is any reference to the object class indicating the Java virtual machine by the applet, fromAnd the software platform determines that the Java virtual machine is used by the applet. In one embodiment, each object class is represented by a unique 32-bit identifier, and this identifier can be used to determine which object class is referenced.
The device then determines whether the system service has been installed on the device (step 215). In one embodiment, this is done by examining internal tables listed in the object class installed on the device. With the 32-bit identifier referenced by the downloaded application, the internal table is checked to determine if the referenced object class is installed, or with the above example, if the Java virtual machine is installed on the device.
If the system service is not installed, the system proceeds to download the system service down the "no" branch (step 220). According to the above example, if the Java virtual machine used by the downloaded application is not installed in the device, the device makes a request to the server to download the Java virtual machine. In addition, other system services may also be downloaded to the device if they are needed.
Those skilled in the art will appreciate that downloading system services used by downloaded applications may be performed without user action. The user may be completely unaware that these downloads are occurring, except for some possible transmission delays or indications. However, it may be desirable to notify the user that additional downloads are occurring. This is an implementation option left to practice the invention.
Those skilled in the art will also appreciate that the downloading of the system service may be independent of whether the application has been downloaded (i.e., the downloading of the system service may begin as a result of the application being installed at the factory or being transferred to the device).
The system service is available when the application is executed if it has been installed in step 210 or after it has been downloaded in step 220. Those skilled in the art will appreciate that system services may be downloaded to the device but not loaded into the device for execution.
Although the above description incorporates making a decision with a device whether a system service is needed and downloading the system service in response to a request from the device, the present invention encompasses a process wherein a server or other system makes a decision as to whether a system service is needed and downloads the system service based on whether the device has installed the system service.
Fig. 3 illustrates a process for loading and executing a virtual machine installed on a wireless device in response to loading an application that uses the virtual machine. The process begins by selecting an application from those available to the wireless device (step 300). The selection may be performed by a user who wishes to execute the application. However, the selection may be performed by the device or in some other automatic manner without user intervention.
After the application is selected, the device loads the application into memory for execution (step 305). (depending on the environment in which the application is executed, the loading of the application may be considered part of the application execution). In the load phase, the loader (the component that loads the application for execution) requests virtual machine services (step 310). In one embodiment, the loader may perform this using an Application Programming Interface (API) mechanism built into the software platform described above, with a unique class identifier identifying the virtual machine.
For example, the application may be a Java applet that requires execution on the wireless device using a Java virtual machine. A loader that loads Java applets on a device for execution may be possible through the use of BrewTMThe API mechanism requests Java virtual machine services, which identifies the Java virtual machine with a unique identifier. In one embodiment, the identifier is a 32-bit class identifier.
The device then determines whether virtual machine system services are loaded into memory (step 315). The device may do this by checking the object class loaded into memory. To track those system services, applications, executables, data, other loaded data types or object classes, an identifier associated with each object class is preferably used.
The device, and in particular the Brew software platform in one embodiment, makes a determination as to whether the virtual machine requested by the loader is already in memory.
If the virtual machine has not been loaded to memory as determined in step 315, the "No" branch is taken down and the appliance loads the virtual machine (step 320). If the virtual machine is not already installed on the wireless service, the virtual machine may be downloaded onto the wireless device from an external source, such as a server or other computer system that has access to the virtual machine software.
Depending on the device and operating platform on which the present invention is implemented, and the system service, the system service may require additional execution or start steps after it is loaded. The system service, or virtual machine in this embodiment, should be in a state within the device that is accessible to downloaded applications or possibly other processes when executed.
Following step 320 or if a determination is made in step 315 that the virtual machine has been loaded, the application is run in a virtual machine environment (step 325). If the system service is not a virtual machine, the application can now use the system service downloaded for the application. In the Java virtual machine example, a Java applet executes in a Java virtual machine environment.
If the device includes a software platform, such as BrewTMSoftware to simplify the interface from the application to the wireless device, the virtual machine passes system service requests made by the application or the virtual machine to the software platform (step 330).
It will be appreciated that while FIG. 3 discusses an application that uses a virtual machine during execution, this is for exemplary purposes and that the scope of the present invention contemplates dynamic loading of other system services, other executable content and data used with the application, in addition to the virtual machine.
Conclusion
The present invention allows for dynamic download and execution of system services on a device. In one embodiment, an applet requiring a virtual machine is downloaded to the wireless device. A software platform on the device determines that the virtual machine is used by the applet during execution. The virtual machine is downloaded to the wireless device without additional user interaction. This allows applets that require a virtual machine to be used with devices that have not yet installed a virtual machine.
Another embodiment of the invention allows system services, such as virtual machines, to be loaded dynamically when an application that uses the system service is loaded. In this embodiment, this is accomplished using a unique identifier associated with a system service that allows the device to determine whether a system service has been loaded.
The foregoing description of the implementation of the present invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. For example, the implementation includes software, but an embodiment of the invention may be implemented in a combination of hardware and software or in hardware alone. The present invention may be implemented with object-oriented and non-object-oriented programming systems. Moreover, although aspects of the present invention have been described as being stored in memory, those skilled in the art will appreciate that these aspects can also be stored on other types of computer-readable media, such as secondary storage devices, like hard disks, floppy disks, or CD-ROMs; a carrier wave from the internet or other propagation medium; or other forms of RAM or ROM. The scope of the invention is defined by the appended claims and equivalents thereof.

Claims (4)

1. A method of receiving a virtual machine at a wireless device, comprising the steps of:
sending a request to download an application on the wireless device;
a server sending the application and an associated reference to the wireless device in response to a request for the application, wherein the reference indicates that the application uses the virtual machine;
determining, with the reference, whether the virtual machine is loaded onto the wireless device; and
in the event that the virtual machine is not loaded onto the wireless device, a request is sent to the server and the virtual machine is downloaded to the wireless device.
2. The method of claim 1, further comprising receiving, at the server, a request for the application.
3. A method as defined in claim 1, wherein the application is java code and the virtual machine is a java virtual machine.
4. The method of claim 1, wherein the application uses the virtual machine when executed.
HK05101278.6A 2001-03-19 2002-03-18 Dynamically downloading and executing system services on a wireless device HK1068981B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US27760701P 2001-03-19 2001-03-19
US60/277,607 2001-03-19
PCT/US2002/008394 WO2002075527A2 (en) 2001-03-19 2002-03-18 Dynamically downloading and executing system services on a wireless device

Publications (2)

Publication Number Publication Date
HK1068981A1 true HK1068981A1 (en) 2005-05-06
HK1068981B HK1068981B (en) 2006-12-29

Family

ID=

Also Published As

Publication number Publication date
AR035784A1 (en) 2004-07-14
PE20030003A1 (en) 2003-01-21
JP2004537086A (en) 2004-12-09
IL157959A0 (en) 2004-03-28
WO2002075527A9 (en) 2004-06-17
EP1421484A2 (en) 2004-05-26
TWI246833B (en) 2006-01-01
CA2441870C (en) 2010-02-23
NZ528277A (en) 2007-06-29
CN1256666C (en) 2006-05-17
KR100587749B1 (en) 2006-06-09
BR0208206A (en) 2006-02-21
MXPA03008532A (en) 2004-06-30
IL157959A (en) 2008-07-08
CA2441870A1 (en) 2002-09-26
WO2002075527A2 (en) 2002-09-26
WO2002075527A3 (en) 2004-04-01
CN1526096A (en) 2004-09-01
AU2002254289B2 (en) 2006-12-07
KR20030084886A (en) 2003-11-01

Similar Documents

Publication Publication Date Title
CN1256666C (en) Dynamic download and execution of system services on wireless devices
US7165099B2 (en) Dynamically downloading and executing system services on a wireless device
AU2002254289A1 (en) Dynamically downloading and executing system services on a wireless device
CN1197004C (en) Management program of JAVA application program for embedded system
KR100915564B1 (en) Method, software and apparatus for application upgrade during execution
EP1584007B1 (en) System to automatically process components on a device
RU2302089C2 (en) System for updating software in wireless devices
CN105373396B (en) Update of plug-in loading method and device in plug-platform
CN1249877A (en) Method and loading function provided by first computer (server) onto second computer (client)
KR20060008901A (en) Update system and update method for updating the scanning subsystem in the mobile communication framework
WO2003060702A2 (en) Modified class loaders
CN106886437B (en) Application program update method and device
CN1726463A (en) System and method for installation and integration of component data models
EP1569093A2 (en) Versioning support in object-oriented programming languages and tools
CN112256351B (en) Method for realizing Feign component, method and device for calling micro-service
HK1068981B (en) Dynamically downloading and executing system services on a wireless device
Escoffier et al. Developing an OSGi-like service platform for. NET.
US7444624B2 (en) Method for the secure interpretation of programs in electronic devices
CA2511056A1 (en) System for registry-based automatic installation and component handling on a device
US7178140B2 (en) Speeding up application downloading from a remote server
CN117170723A (en) Java code heat treatment method and device, medium and equipment
CN109144605A (en) A kind of applied program processing method and device
JP2004118753A (en) Object sharing program, object sharing method, and information processor
JP4638505B2 (en) Safe program interpretation method in electronic devices
HK1108296A (en) Method, software and apparatus for application upgrade during execution

Legal Events

Date Code Title Description
CHRG Changes in the register

Free format text: CORRECTION OF THE CHINESE NAME OF THE APPLICANT

PC Patent ceased (i.e. patent has lapsed due to the failure to pay the renewal fee)

Effective date: 20110318