Language selection

Search

Patent 2441870 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2441870
(54) English Title: DYNAMICALLY DOWNLOADING AND EXECUTING SYSTEM SERVICES ON A WIRELESS DEVICE
(54) French Title: TELECHARGEMENT DYNAMIQUE ET EXECUTION DE SERVICES DE SYSTEME SUR UN DISPOSITIF SANS FIL
Status: Deemed expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 9/40 (2006.01)
  • G06F 9/445 (2006.01)
(72) Inventors :
  • SPRIGG, STEPHEN A. (United States of America)
  • MINEAR, BRIAN (United States of America)
  • MOORTHY, MAHESH (United States of America)
  • JACOBS, PAUL (United States of America)
(73) Owners :
  • QUALCOMM INCORPORATED (United States of America)
(71) Applicants :
  • QUALCOMM INCORPORATED (United States of America)
(74) Agent: SMART & BIGGAR
(74) Associate agent:
(45) Issued: 2010-02-23
(86) PCT Filing Date: 2002-03-18
(87) Open to Public Inspection: 2002-09-26
Examination requested: 2007-03-19
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US2002/008394
(87) International Publication Number: WO2002/075527
(85) National Entry: 2003-09-18

(30) Application Priority Data:
Application No. Country/Territory Date
60/277,607 United States of America 2001-03-19

Abstracts

English 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.


French Abstract

Une mini-application nécessitant une machine virtuelle est téléchargée sur un dispositif sans fil. Une plate-forme logicielle sur le dispositif détermine qu'une machine virtuelle est utilisée par la mini-application pendant l'exécution. Sans interaction supplémentaire de l'utilisateur, la machine virtuelle est téléchargée sur le dispositif sans fil, ce qui permet l'utilisation des mini-applications nécessitant une machine virtuelle, avec des dispositifs sur lesquels la machine virtuelle n'est pas encore installée. Dans d'autres modes de réalisation, le chargement dynamique d'un service de système est inclus lorsqu'une application utilisant le service de système est en cours de chargement. Un identifiant unique associé au service de système peut être utilisé pour la détermination du chargement du service de système.

Claims

Note: Claims are shown in the official language in which they were submitted.



8
CLAIMS:

1. A method for supporting a download of an application
from a server to a wireless device, comprising:

downloading from the server the application and an
associated reference;

first determining, prior to execution of the
application, based upon the associated reference, whether
execution of the application requires a virtual machine to be
loaded on the wireless device;

if said first determining step determines that the
virtual machine is required for the execution of the
application, performing the step of second determining whether
the virtual machine is loaded on the wireless device;

if said second determining step determines that the
virtual machine is not loaded on the wireless device, sending a
second download request to the server for the virtual machine,
and making the virtual machine available to the application
after the virtual machine has been received from the server in
response to the second download request;

wherein said steps of first determining, second
determining, sending a second download request, and making the
virtual machine available are performed automatically on the
wireless device without interaction with a user of the wireless
device.

2. The method of claim 1, wherein the application is Java
code and the virtual machine is a Java virtual machine.

3. A wireless device readable medium having wireless
device readable code stored thereon that when executed by a


9
processor of a wireless device, causes the wireless device to
perform a method comprising:

downloading from a server an application and an
associated reference;

first determining, prior to execution of the
application, based upon the associated reference, whether an
execution of the application requires a virtual machine to be
loaded on the wireless device;

if said first determining step determines that the
virtual machine is required for execution of the application,
performing the step of second determining whether the virtual
machine is loaded on the wireless device;

automatically downloading from the server the virtual
machine, and making the virtual machine available to the
application when it is determined the application requires the
virtual machine.

4. A wireless device, comprising:

means for downloading an application and an associated
reference;

first means for automatically determining, prior to
execution of the application and without interaction with a user
of the wireless device, based upon the associated reference,
whether execution of the application requires a virtual machine
to be loaded on the wireless device;

second means for automatically determining without
interaction with the user of the wireless device whether the
virtual machine is loaded on the wireless device when said first



10

means for determining has determined that the application
requires a virtual machine; and

means for automatically sending without interaction
with the user of the wireless device, a second download request
for the virtual machine when said second means for determining
has determined that the virtual machine is not loaded on the
wireless device.


Description

Note: Descriptions are shown in the official language in which they were submitted.



CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
1
DYNAMICALLY DOWNLOADING AND EXECUTING
SYSTEM SERVICES ON A WIRELESS DEVICE
BACKGROUND
[0001] Typically, system services, including virtual machines, viewers and
plug-ins, need to be
installed on a device in order to be used by other objects or applications
that require them. For
example, Java applets run on a device that has a Java virtual machine loaded.
Consequently, a
device that intends to execute the Java applet will install the Java virtual
machine on the device.
Typically, because the virtual machine, or other system service, needs to be
integrated into the
device it is executing on, the installation is performed in advance of trying
to download or
execute applet or other application wanting to take advantage of the system
service.
[0002] Some devices, particularly wireless devices, however, have a
constrained environment.
Memory, including secondary storage and primary for active programs and data,
and processing
is more scarce than on other larger computer systems. Consequently, it is
advantageous to only
download or install some system services, such as virtual machines, on an as
needed basis.
Unfortunately, on these constrained devices, system services are required to
be installed or
loaded into memory and take up valuable resources even wllen not used.
Furthermore, users who
want to use applications on devices that do not already have the application's
supporting system
services are hampered or prevented from doing so because the system services
were not already
installed on the device.

SUMMARY OF THE INVENTION
[0003] The present invention satisfies the shortcomings in the art by
providing a system and
method for dynamically downloading and installing system services, such as
virtual machines,
viewers, plug-ins, flash-players, other executable content or data, in a
device based on the needs
of the application running on the device.
[0004] In one embodiment, the present invention involves downloading a system
service onto a
wireless device to be used with an application also being downloaded. The
system service may
be downloaded automatically when the application is downloaded without user
intervention.
[0005] In yet another embodiment, the present invention also detects whether a
virtual machine
is present when an application is loaded into the device's memory for
execution and loads and
executes the virtual machine, if necessary, so the application may run in the
virtual machine's
environment.


CA 02441870 2008-04-25
74769-737

la
According to one broad aspect, the invention provides
a method for supporting a download of an application from a
server to a wireless device, comprising: downloading from the
server the application and an associated reference; first
determining, prior to execution of the application, based upon
the associated reference, whether execution of the application
requires a virtual machine to be loaded on the wireless device;
if said first determining step determines that the virtual
machine is required for the execution of the application,
performing the step of second determining whether the virtual
machine is loaded on the wireless device; if said second
determining step determines that the virtual machine is not
loaded on the wireless device, sending a second download request
to the server for the virtual machine, and making the virtual
machine available to the application after the virtual machine
has been received from the server in response to the second
download request; wherein said steps of first determining,
second determining, sending a second download request, and
making the virtual machine available are performed automatically
on the wireless device without interaction with a user of the
wireless device.

According to another broad aspect, the invention
provides a wireless device readable medium having wireless
device readable code stored thereon that when executed by a
processor of a wireless device, causes the wireless device to
perform a method comprising: downloading from a server an
application and an associated reference; first determining,
prior to execution of the application, based upon the associated
reference, whether an execution of the application requires a
virtual machine to be loaded on the wireless device; if said
first determining step determines that the virtual machine is
required for execution of the application, performing the step


CA 02441870 2008-04-25
74769-737

lb
of second determining whether the virtual machine is loaded on
the wireless device; automatically downloading from the server
the virtual machine, and making the virtual machine available to
the application when it is determined the application requires
the virtual machine.

According to another broad aspect, the invention
provides a wireless device, comprising: means for downloading an
application and an associated reference; first means for
automatically determining, prior to execution of the application
and without interaction with a user of the wireless device,
based upon the associated reference, whether execution of the
application requires a virtual machine to be loaded on the
wireless device; second means for automatically determining
without interaction with the user of the wireless device whether
the virtual machine is loaded on the wireless device when said
first means for determining has determined that the application
requires a virtual machine; and means for automatically sending
without interaction with the user of the wireless device, a
second download request for the virtual machine when said second
means for determining has determined that the virtual machine is
not loaded on the wireless device.


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
2
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Reference will now be made in detail to the presently exemplary and
preferred
embodiments of the invention as illustrated in the accompanying drawings, in
which like
reference characters designate like or corresponding parts throughout the
several drawings. The
nature, objectives and advantages of the present invention will become more
apparent to those
skilled in the art after considering the following detailed description in
connection with the
accompanying drawings.
[0007] The accompanying drawings, which are incorporated in and constitute a
part of the
specification, illustrate presently preferred embodiments of the invention
and, together with the
general description given above and the detailed description of the preferred
embodiments given
below, serve to explain the principles of the invention. In the drawings:
[0008] Figure 1 depicts one exemplary embodiment of the environment in which
the present
invention may be practiced;

[0009] Figure 2 depicts the process, involved with downloading an application
which uses a
system service consistent with an exemplary embodiment of the present
invention; and
[0010] Figure 3 depicts the process of loading and executing a virtual machine
installed on the
wireless device in response to loading an application, which uses the virtual
machine.
DESCRIPTION OF AN EXEMPLARY EMBODIMENT
[0011] Figure 1 depicts one exemplary embodiment of the 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. The 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.

[0012] The wireless device 110 may contain a processor and memory, primary and
secondary,
(not shown) used to store, load and execute the applications 110 and system
services 115
downloaded from the server. These applications 110 and system services 115 may
also interact
with a software platform located on the wireless device used to simplify
interfacing with the
wireless device, such as by providing generalized calls for device specific
resources. Such a
software platform is the Binary Runtime Environment for WirelessTM (BREWTM)
software
developed by QUALCOMM, Inc., San Diego, California.


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
3
[0013] It will be recognized by those skilled in the art that the wireless
device's 100 architecture
may also contain an assortment of other components (either not shown or
specifically indicated).
Such components include, but are not limited to: a display, speaker,
microphone, and buttons
allowing alphanumeric and symbol inputs. The wireless device may also contain
a battery,
multiple storage mechanisms, such as ROMs, RAMs, and flash memory, an
operating system and
a compilation component to aid in the execution of applications, system
services, other
executable code and manipulation of data, on the device.
[0014] While the system services and applications are depicted as being
located on the server
105, it will be recognized by those skilled in the art that the applications
and software may not be
physically located at the server. In this case, the server may make a request
for the applications
and system services for the wireless device from other systems and then
download the requested
files or may transfer the request to another system for direct transfer of
requested files to the
wireless device.
[0015] As is recognized by those skilled in the.art, Fig. 1 is one exemplary
environment for the
present invention. r The device may include other types of systems, including
wireless and ,non>
wireless devices. In addition, the device may communicate with the server and
other systems by
a multiple of network types and communication architectures, including
wireless and non-
wireless, private and public, switched and non-switched, direct links, and any
combination
thereof.

[0016] Figure 2 depicts the process involved with downloading an application
which uses a
system service consistent with an exemplary embodiment of the present
invention. A device,
such as the wireless device 100, requests an application from the server 105
(Step 200). This
request may have been initiated because a user requests a specific
application, such as a game,
from the wireless device. The device may be configured such that the
applications available to
the user are not all resident on the device itself, but a representation of
those applications that the
user may access.

[0017] This request, however, may be non-user initiated and may include those
tasks for system
maintenance and for tasks not involving direct user interaction. In addition,
the request may be
for types of files other than applications, including data, system services,
or other types of
information.

[0018] 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. As
stated above, however,


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
4
the application may not be physically stored at the server; yet, the server
may receive the request
and initiate the application download to the device.
[0019] The device then checks the application to determine whether the
application uses a
system service (Step 210). The application may include a reference, or some
identifier,
indicating that a systems service is used with the application. This reference
may be included
with the application or associated with the application in some other manner.
[0001] In one embodiment, the application is a Java applet and requires the
use of a Java virtual
machine (a system service) to execute. The device may contain a software
platform, such as
BrewTM, described above. The device, using the software platform, determines
that a Java virtual
machine is used by the applet by checking whether there are any references by
the applet to an
object class indicating a Java virtual machine. In one embodiment, each object
class is
represented by a unique 32-bit identifier and this identifier can be used to
determine which object
classes are referenced.
[0021] The device then determines if the system service is already installed
on the device (Step
215). In one embodiment, this is performed by checking the -internal tables
listing the obj ect .
classes installed on the device. Using the 32-bit identifier referenced by the
downloaded
application, the internal tables are checked to determine if the referenced
object class is installed,
or using the above example, whether the Java virtual machine is already
installed on the device.
[0022] If the system service is not installed, then the "no" branch is
followed and the system
proceeds to download the system service (Step 220). Following the above
example, if the Java
virtual machine used by the downloaded application is not installed in the
device, then the device
makes a request to the server to download the Java virtual machine.
Additionally, if other system
services are needed, they may also be downloaded to the device.
[0023] It will be recognized by those skilled in the art that the downloading
of system service(s)
used by the downloaded application can be performed without any action by the
user. Other than
some possible transmission delays or indications, the user may be completely
unaware that these
downloads are occurring. It may, however, be desirable to inform the user that
additional
downloads are taking place. This is an implementation preference left to those
practicing the
present invention.
[0024] It will be further recognized by those skilled in the art that the
downloading of a system
service may be independent of whether the application was downloaded or not
(i.e., the
downloading of the system service may be initiated because of applications
installed at the
factory or otherwise transferred onto the device).


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
[0025] If the system service is already installed in Step 210 or after it is
downloaded in Step 220,
then the system service is available for when the application is executed. It
will be recognized by
those skilled in the art that the system service may be downloaded onto the
device but not loaded
in the device for execution.
[0026] While the above description incorporates the use of the device making
the determination
of whether the system services are needed and downloading the system service
in response to a
request from the device, the invention also embodies the process where the
server, or other
system, performs the determination as to whether system services are needed
and downloads the
system service based on whether the device already has the system service
installed or not.
[0027] Figure 3 depicts the process of loading and executing a virtual machine
installed on the
wireless device in response to loading an application which uses the virtual
machine. The
process begins by having an application selected from those applications
available to the wireless
device (Step 300). This selection may be performed by a user wishing to
execute the application.
The selection, however, may be performed without user intervention by the
device or in some
other automated manner.
[0028] After the application is selected, the device loads the application
into memory (Step 305)
for execution. (Depending on the environment in which the application is
executing, the loading
of the application may be considered part of the application's execution).
During this loading
phase, the loader (the component loading the application for execution)
requests the virtual
machine services (Step 310). In one embodiment, the loader may perform this
using an
Applications Programming Interface (API) mechanism built in the software
platform, described
above, identifying the virtual machine using a unique class identifier.
[0001] For example, the application may be a Java applet requiring the use of
a Java virtual
machine to execute on the wireless device. A loader loading the Java applet on
the device for
execution may request Java virtual machine services by using a BrewTM API
mechanism
identifying the Java virtual machine by a unique identifier. In one
embodiment, this identifier is
a 32 bit class identifier.
[0030] The device then determines whether the virtual machine system service
is loaded into
memory (Step 315). The device may do this by checking the object classes
loaded into memory.
It is preferable that an identifier associated with each object class be used
in order to track those
system services, applications, executable files, data, other data types or
object classes that are
loaded.


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
6
[0031] The device, or specifically in one embodiment the Brew software
platform, makes the
determination as to whether the virtual machine requested by the loader is in
memory already.
[0032] If the virtual machine is not already loaded into memory as determined
in Step 315, the
"no" branch is followed and the device loads the virtual machine (Step 320).
If the virtual
machine is not already installed on the wireless device, the virtual machine
may be downloaded
onto the wireless device from an external source, such as a server or other
computer system
which has access to the virtual machine software.
[0033] Depending on the device and operating platform the present invention is
implemented on
as well as the system service, the system service may require an additional
execution or start step
following its loading. The system service, or virtual machine in this
embodiment, should be in a
state in the device that is accessible to the downloaded application when
executed or possibly
other processes.
[0034] Following step 320 or if the determination is made after Step 315 that
the virtual machine
is already loaded, the application then runs in the 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, the Java
applet executes in
the Java virtual machine environment.
[0035] If the device contains a software platform, such as the BrewTM
software, to simplify the
interface from the application to the wireless device, the virtual machine
passes system services'
requests made by the application or the virtual machine to the software
platform (Step 330).
[0036] It will be recognized that while figure 3 discusses an application
using a virtual machine
during execution, that this is for exemplary purposes and the dynamic loading
of other system
services, other than the virtual machine, other executable content, and data
used with
applications, are considered within the scope of the present invention.

CONCLUSION
[0037] The present invention allows for the dynamic download and execution of
system services
on a device. In one embodiment, 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.


CA 02441870 2003-09-18
WO 02/075527 PCT/US02/08394
7
[0038] Another embodiment of the present invention allows the dynamic loading
of a system
service, such as a virtual machine, when an application is being loaded that
uses the system
service. In this embodiment, it is performed using a unique identifier
associated with the system
service that allows the device to determine if the system service is loaded.
[0039] The foregoing description of an implementation of the invention has
been presented for
purposes of illustration and description. It is not exhaustive and does not
limit the invention to
the precise form disclosed. Modifications and variations are possible in light
of the above
teachings or may be acquired from practicing of the invention. For example,
the described
implementation includes software but one embodiment of the present invention
may be
implemented as a combination of hardware and software or in hardware alone.
The invention
may be implemented with both object-oriented and non-object-oriented
programming systems.
Additionally, although aspects of the present invention are 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-ROM;.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 claims and their
equivalents.

We claim:

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2010-02-23
(86) PCT Filing Date 2002-03-18
(87) PCT Publication Date 2002-09-26
(85) National Entry 2003-09-18
Examination Requested 2007-03-19
(45) Issued 2010-02-23
Deemed Expired 2012-03-19

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $300.00 2003-09-18
Maintenance Fee - Application - New Act 2 2004-03-18 $100.00 2003-12-22
Registration of a document - section 124 $100.00 2004-09-15
Maintenance Fee - Application - New Act 3 2005-03-18 $100.00 2004-12-10
Maintenance Fee - Application - New Act 4 2006-03-20 $100.00 2005-12-12
Maintenance Fee - Application - New Act 5 2007-03-19 $200.00 2006-12-14
Request for Examination $800.00 2007-03-19
Maintenance Fee - Application - New Act 6 2008-03-18 $200.00 2007-12-13
Maintenance Fee - Application - New Act 7 2009-03-18 $200.00 2008-12-12
Final Fee $300.00 2009-12-11
Maintenance Fee - Application - New Act 8 2010-03-18 $200.00 2009-12-16
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
QUALCOMM INCORPORATED
Past Owners on Record
JACOBS, PAUL
MINEAR, BRIAN
MOORTHY, MAHESH
SPRIGG, STEPHEN A.
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Abstract 2003-09-18 2 67
Claims 2003-09-18 3 138
Drawings 2003-09-18 3 48
Description 2003-09-18 7 438
Representative Drawing 2003-09-18 1 15
Cover Page 2003-11-25 1 42
Description 2007-03-19 9 518
Claims 2007-03-19 3 83
Drawings 2008-04-25 3 44
Claims 2008-04-25 3 85
Description 2008-04-25 9 522
Representative Drawing 2010-01-27 1 8
Cover Page 2010-01-27 2 45
PCT 2003-09-18 1 34
Assignment 2003-09-18 3 94
Correspondence 2003-11-21 1 27
Assignment 2004-09-15 6 245
Assignment 2004-09-30 1 32
Prosecution-Amendment 2007-03-19 7 218
PCT 2007-04-26 5 191
Prosecution-Amendment 2007-10-30 3 84
Prosecution-Amendment 2008-04-25 10 270
Correspondence 2009-12-11 1 39