Predictive cache techniques

Predictive cache techniques
US 20100162126A1
(19) United States
(12) Patent Application Publication (10) Pub. No.: US 2010/0162126 A1
(43) Pub. Date:
Donaldson et al.
Jun. 24, 2010
(54) PREDICTIVE CACHE TECHNIQUES
(51)
Int. Cl.
G06F 3/00
(75) Inventors:
(52)
us. c1. ...................................................... .. 715/738
Jesse Donaldson, Santa Clara, CA
(US); Robert Tsuk, Cupertino, CA
(57)
(Us)
ABSTRACT
Predictive caching techniques are described. An apparatus
Correspondence Address:
may include a document manager component having a docu
ment rendering module and a list manager module. The docu
ment rendering module may present a document for the active
Web application Within a display area of an electronic display,
the document having a set of list items stored by a list data
object. The list manager module may select a set of present
KACVINSKY LLC
4500 BROOKTREE ROAD
SUITE 102
WEXFORD, PA 15090 (US)
(73) Assignee:
(2006.01)
Palm, Inc., Sunnyvale, CA (US)
able list items from the list data object for current presentation
Within the display area for the electronic display, select a set
(21) Appl. No.:
12/343,297
of predictive list items from the list data object for future
presentation Within the display area for the electronic display,
(22) Filed:
Dec. 23, 2008
and send a control directive to load the set of predicted list
items from the list data object to a predictive cache. Other
embodiments are described and claimed.
Publication Classi?cation
200 .y
l
k
Mobile Device or
205
f Desktop Computer
220
210..,
‘
/215e We]? Bmww
‘l
A
K‘
-
\
> f Rule Based Ne! war/t
\, ‘
T‘ .
I,“
PM?‘ mg”
>
HTTP and TCP/IP
23f \\
225..“
(\g ‘V
23’
Sync Eng
).
" 253
7 (
App
‘
-4}
Bundles
I
770
'
/ 275
M
785
if’
203 '
7
Snpporl
Web Service.)v ‘Manager
(SO-1P ,1’ REST, etc)
217‘
.713 I,
'
223
24716
‘»\
‘ ~ )90
..\ [r227
‘/\ Native .4 PlBridge
Regisimrion and I
M
243 ~ I
\
,3» 233
K
De vice
(‘Sewer Side Language =)
H
v'
\\
238 I
network Tm?ic
j
253 ‘V
De vice
Device
Memo/"y
F[Ie
Threads
Specialized Dé‘vlce
AP[
AP]
AP]
Functions and APIs
_
_
_
V
Patent Application Publication
Jun. 24, 2010 Sheet 1 0f 9
US 2010/0162126 A1
Web Browser
1 05
Application Management Framework
1 00
Web Application
1 1 0-1
<<
[JO-N
110-2
Document Manager Component
1 12
FIG. 1
Patent Application Publication
Jun. 24, 2010 Sheet 2 0f 9
US 2010/0162126 Al
N65*
\ri?5
sow
‘mow
Patent Application Publication
Jun. 24, 2010 Sheet 3 0f 9
US 2010/0162126 A1
00
(/ Web Browser Starts )
\
\
302
7
Application Management Framework Starts
304
7
Application Management Framework Scans
Document Root
306
7
Load Web Application Assets
3 08
l
//
/\
f 312
\\
/ All Applications \
\
Loaded?
\\ 310 //
\/
V
/
H
314
Activate First Web Application
3] 6
él?
(
/
\
Begin- User Input \>
318
FIG. 3
Patent Application Publication
Jun. 24, 2010 Sheet 4 0f 9
US 2010/0162126 A1
00
Start
402
Y
Capture User Input
406
7
Highlight 1confor
Selected Web Application
408
4*
l
Activate Selected
Web Application
Event Handled by Application
Management Framework
420
410
k
f 418
User Event
412
414
Event Passed to Selected
Web Application
416
FIG. 4
Patent Application Publication
Jun. 24, 2010 Sheet 5 0f 9
US 2010/0162126 A1
\
» 504
J
San Francisco
01 .'
// F 505
:40 pm
_ ml
Sunday, July 29, 2007
Beijing
New York
London
1 520-1
520-2
04:08a
04:08])
I 0:08p
520-3
520-4
‘J
+15
+3
+9
520-5
520-6
/ K
/- 515
] Mi 1
,
502
Patent Application Publication
Jun. 24, 2010 Sheet 8 0f 9
US 2010/0162126 A1
802
Widget Gallery
805
505
f- 510-5
500
Web Application
505
Developer
[J
81 5
Server
825
FIG. 8
Patent Application Publication
Jun. 24, 2010 Sheet 9 0f 9
US 2010/0162126 A1
M
RENDER A DOCUMENT FOR ANACTIVE WEB
APPLICATION TO PRESENT WITHIN A DISPLA Y AREA
OF AN ELECTRONIC DISPLAY, THE DOCUMENT
HA VING A SET OFLISTITEMS STORED BYA LIST
DA TA OBJECT
902
SELECTA SET OF PRESENTABLE LISTITEMS FROM
THE LISTDATA OBJECTFOR PRESENTATION
WITHIN THE DISPLAY AREA FOR THE ELECTRONIC
DISPLAY
904
LOADA SET OF PREDICTED LISTITEMS FROM THE
LISTDATA OBJECT TOA PREDICTIVE CACHE, THE
PREDICTED LISTITEMS CONTIGUOUS TO ONE OR
MORE OF THE PRESENTABLE LIST ITEMS
906
FIG. 9
US 2010/0162126 A1
PREDICTIVE CACHE TECHNIQUES
trolling, and presenting multiple Web-based applications in a
shared Web broWser application management frameWork.
RELATED APPLICATIONS
Such techniques are particularly Well-suited to mobile
devices, such as cellular phones, that have limited processing
[0001] This application is related to the copending applica
tion by Chatterjee et al., entitled “Application Management
Framework for Web Applications,” Ser. No. 12/181,776 ?led
on Jul. 29, 2008 Which application is hereby incorporated by
reference in its entirety.
BACKGROUND
[0002]
Web broWsers have become highly capable softWare
packages in recent years. In addition to rendering Web pages,
a Web broWser may run small applications, sometimes
referred to as “Widgets.” Many Web broWsers also support the
ability to run more complex Web applications in the Web
broWser. Such Web applications may be implemented using
various Web technologies such as HTML, XHTML, XML,
and Asynchronous JavaScript and XML (Ajax).
[0003] Although a Web application has many advantages, it
suffers in a number of areas. For instance, Web applications
may generate documents With dimensions that exceed a typi
cal display implemented for an electronic device executing
the Web broWser and Web application. This problem is exac
erbated for electronic devices having smaller form factors and
thereby smaller displays, such as a mobile telephone, smart
phone, handheld computer, or the like. As such, the smaller
electronic devices may force a Web application to render and
display only a limited portion of a document at any given
moment in time. When a neW portion of the document is
needed for display, the Web application may incur signi?cant
delay in rendering and displaying the neW portion. The
latency may degrade the user experience When attempting to
vieW the document. It is With respect to these and other
considerations that the present improvements have been
needed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004]
Jun. 24, 2010
FIG. 1 illustrates an embodiment of an application
management framework.
capabilities, intermittent access to a netWork, small display
screens, and limited user input capabilities.
[0014]
Sharing a Web broWser application management
frameWork provides the capability for rapidly sWitching
betWeen applications, alloWs for multitasking, facilitates
using a common set of input controls for applications, and
makes it possible for applications to be available With little
perceived startup (“boot”) time.
[0015] Furthermore, applications Within the shared Web
broWser application management frameWork may have
access to the additional capabilities provided by the frame
Work, such as caching of content or data for o?line access,
providing for updates to the contained applications, and
accessing native services of the mobile device such as calen
dar or contact data. The described embodiments also provide
incentives for Web application users, Web application devel
opers, and Web application portal providers to share in trans
actions betWeen one another.
[0016]
In various embodiments, one class of additional
capabilities provided by the shared Web broWser application
management frameWork may include providing access to
various predictive caching techniques. For instance, Web
applications may generate documents With dimensions that
exceed a typical display implemented for a mobile computing
device. As such, the mobile computing device may force a
Web application to render and display only a limited portion
of a document at any given moment in time. When a neW
portion of the document is needed for display, the Web appli
cation may need to access and retrieve data for the document
from a memory unit. Memory access times, hoWever, may
vary considerably in accordance With a number of factors,
such as the type of memory used to store the data (e.g.,
volatile or non-volatile memory), Whether the data is stored in
internal or external memory for the mobile computing device
(e.g., system memory or removable storage cards), Whether
the data is stored by an external device such as a server, and
[0005] FIG. 2 illustrates an embodiment of a computing
device including a Web broWser and a Web Virtual Machine.
[0006] FIG. 3 illustrates an embodiment of a logic ?oW for
ment needed for display may experience sloWer memory
initialiZing an application frameWork.
access times, Which may be potentially undesirable to a user.
[0007]
[0017] To solve these and other problems, various embodi
ments may implement techniques for rendering portions of a
document (e.g., Web page) used by a Web application based
FIG. 4 illustrates an embodiment of a logic ?oW for
handling events by an application frameWork.
[0008]
FIG. 5 illustrates an embodiment of a mobile device
including Web application and application management
frameWork user interfaces.
[0009]
FIG. 6 illustrates an embodiment of a document
manager component.
[0010]
FIGS. 7A-7B illustrate embodiments of a Web
application interface.
[0011]
FIG. 8 illustrates an embodiment of a communica
tions netWork.
[0012] FIG. 9 illustrates an embodiment of a logic ?oW.
DETAILED DESCRIPTION
[0013]
Various embodiments are generally directed to an
application management frameWork for Web applications that
may provide speed improvements, capability improvements,
user experience improvements, and simpli?ed application
development to Wide range of netWork devices. The described
embodiments may employ techniques for containing, con
other memory access factors. Consequently, a Web applica
tion attempting to retrieve data for a neW portion of the docu
on an amount of available display area for an electronic
device. In particular, various embodiments may implement
predictive cache techniques to improve memory access times
When rendering and displaying a document for a Web appli
cation. Some embodiments may decrease memory access
times by implementing various caching techniques. For
instance, some embodiments may move data for a document
used by a Web application from storage media With sloWer
access times to storage media With faster access times, such as
an L1 or L2 memory cache stored on the same die as the
processor, or accessible via a high-speed memory bus. Fur
thermore, some embodiments may use a predictive cache
algorithm to selectively cache predicted data from a docu
ment used by a Web application that has a higher probability
of presentation by an electronic display, such as a touch
screen display for a mobile computing device. Consequently,
a Web application attempting to render and display informa
US 2010/0162126A1
Jun. 24, 2010
tion for a document stored by slower memory units may
red channel, radio-frequency (RF) channel, Wireless Fidelity
realize increased memory access performance by retrieving
(WiFi) channel, a portion of the RF spectrum, and/or one or
more licensed or license-free frequency bands. In wireless
the information from a cache using faster memory units,
rather than from the slower memory units. Accordingly, a user
implementations, the computing device may comprise one
may experience reduced latency when attempting to scroll
more interfaces and/ or components for wireless communica
tion such as one or more transmitters, receivers, transceivers,
through a document for a web application.
[0018] Numerous speci?c details are set forth to provide a
thorough understanding of the embodiments. It will be under
stood by those skilled in the art, however, that the embodi
ments may be practiced without these speci?c details. In other
instances, well-known operations, components and circuits
ampli?ers, ?lters, control logic, wireless network interface
cards (WNICs), antennas, and so forth. Although certain
embodiments may be illustrated using a particular communi
cations media by way of example, it may be appreciated that
the principles and techniques discussed herein may be imple
have not been described in detail so as not to obscure the
mented using various communication media and accompa
embodiments. It can be appreciated that the speci?c structural
and functional details disclosed herein may be representative
and do not necessarily limit the scope of the embodiments.
nying technology.
[0019]
Reference throughout the speci?cation to “various
embodiments,” “some embodiments,” “one embodiment,” or
[0023]
As shown in FIG. 1, the application management
framework 100 may be implemented by and run within a web
browser 105. The web browser 105 may be implemented by a
desktop and/or mobile version of a web browser such as
“an embodiment” means that a particular feature, structure, or
Internet Explorer®, MoZilla®, Firefox®, Safari®, Opera®,
characteristic described in connection with the embodiment
is included in at least one embodiment. Thus, appearances of
the phrases “in various embodiments, in some embodi
Netscape Navigator®, and/or any other suitable web browser
ments,” “in one embodiment,” or “in an embodiment” in
puter programming languages, standards, web protocols,
and/or technologies required by the application management
places throughout the speci?cation are not necessarily all
referring to the same embodiment. Furthermore, the particu
in accordance with the described embodiments. In various
embodiments, the web browser 105 may support the com
lar features, structures or characteristics may be combined in
framework 100. Such computer programming languages,
standards, web protocols, and/or technologies may include,
any suitable manner in one or more embodiments.
but are not limited to, HTML, XHTML, XML, Flash®/Ac
[0020]
tionScript, Macromedia® Flash®, JavaScript, ECMAScript,
FIG. 1 illustrates an architectural view of an appli
J Script, Basic, Visual Basic®, Visual Basic® Scripting Edi
cation management framework 100 suitable for implement
ing various embodiments. Although FIG. 1 may show a lim
ited number of components by way of example, it can be
tion(VBScript), CSS, Asynchronous JavaScript and XML
(Ajax), Flex®, Java®, Python, Perl®, C#/.net, Flash®, and/
appreciated that a greater or a fewer number of components
or other suitable programming, scripting, or VM-based
may be employed for a given implementation.
[0021] In various embodiments, the application manage
ment framework 100 may be implemented by a computing
device. Elements of the computing device may comprise
various physical and/or logical components for communicat
ing information which may be implemented as hardware
components (e.g., computing devices, processors, logic
languages. In addition, the web browser 105 may support
“local” sur?ng, where “localhost” resources may be accessed
with no requirement for connectivity to a network. It can be
appreciated that some present day web browsers may attempt
to connect to a network even when only localhost resources
are needed, which may interfere with the operation of some
embodiments.
devices), executable computer program instructions (e.g.,
[0024]
?rmware, software) to be executed by various hardware com
may provide the basis of the user interface and may include a
In various implementations, the web browser 105
ponents, or any combination thereof, as desired for a given set
language interpreter such as a script interpreter for computer
of design parameters or performance constraints. Exemplary
computing devices may include a personal computer (PC),
programming languages such as JavaScript®, Flash®,
VBScript, and/ or other scripted programming languages
desktop PC, notebook PC, laptop computer, mobile comput
ing device, smart phone, personal digital assistant (PDA),
where browser-based scripts, bytecode sets, or languages are
device, gaming device, messaging device, or any other suit
interpreted in real time by runtime interpreter. The web
browser 105 may provide a platform for running web appli
cations in the web browser 105 using various web technolo
gies such as HTML, XHTML, XML, Asynchronous JavaS
cript and XML (Ajax), and so forth.
able communications device in accordance with the
described embodiments.
100 may be written in any computer programming language
mobile telephone, combination mobile telephone/PDA,
video device, television (TV) device, digital TV (DTV)
device, high-de?nition TV (HDTV) device, media player
[0025] In general, the application management framework
[0022] The computing device comprising the application
supported by the web browser 105 such as in one or more
management framework 100 may form part of a wired com
munications system, a wireless communications system, or a
programming, scripting, or Virtual Machine (VM) based lan
guages. For example, various standard web technologies such
as HTML, CSS, JavaScript, ECMAScript may be applied to
combination of both. For example, the computing device may
be arranged to communicate information over one or more
create the application management framework 100. Since
types of wired communication links such as a wire, cable, bus,
many web page authors are familiar with these technologies,
printed circuit board (PCB), Ethernet connection, peer-to
peer (P2P) connection, backplane, switch fabric, semicon
ductor material, twisted-pair wire, co-axial cable, ?ber optic
the bene?ts of using the application management framework
will be readily apparent. It can be appreciated that develop
ment using web technologies is generally much faster and
connection, and so forth. The computing device may be
arranged to communicate information over one or more types
easier than is the case for specialiZed native programming
languages such as C, C++, and so forth. Further, such native
of wireless communication links such as a radio channel,
programming languages often require expensive develop
satellite channel, television channel, broadcast channel infra
ment tools for mobile devices. For web applications, how
US 2010/0162126A1
ever, a wide array of freely available or inexpensive software
development tools makes web application development pos
sible for a much larger community of developers.
[0026] As shown, the application management framework
100 may comprise and encapsulate one or more web appli
cations such as web applications 110-1 through 110-N, where
N is any suitable positive integer value in accordance with the
described embodiments. The web applications 110-1 through
110-N each may be written in any language supported by the
Jun. 24, 2010
applications 110-1 through 110-N. For example, by program
matically “hiding” a web application using a hidden frame,
the application management framework 100 may allow a web
application to run in the background while the user sees the
user interface of a different web application.
[0031] The application management framework 100 also
may provide a mechanism by which the web applications
110-1 to 110-N may accelerate document rendering and dis
play operations for a mobile computing device. The applica
web browser 105. The source code for the web applications
tion management framework 100 may include a document
110-1 through 110-N and for the application management
manager component 112. The document manager component
framework 100 may be highly portable across a wide array of
112 may implement various predictive cache techniques to
improve memory access times when rendering and display
hardware and software platforms such as desktop computers,
mobile phones, and so forth. Additionally, a central server can
ing a document for one or more of the web applications 110-1
pre-load the set of web applications 110-1 through 110-N into
to 110-N. Although the document manager component 112
may be described as implemented by the application manage
the application management framework 100 and serve the
entire application management framework 100 to many com
puting devices. In some embodiments, the web applications
110-1 through 110-N may comprise or be implemented
within the application management framework 100 as one or
more mini applications or widgets.
[0027]
The application management framework 100 may
allow a user to switch between and among the web applica
ment framework 100 in some embodiments, it may be appre
ciated that the document manager component 112 may be
implemented by other parts of a mobile computing device,
such as an integrated part of web browser 105, or one of the
web applications 110-1 to 110-N. The embodiments are not
limited in this context.
[0032] The document manager component 112 may imple
ment various predictive cache techniques to decrease
tions 110-1 through 110-N quickly without having to re
launch the web browser 105 or HTML application environ
ment. In various implementations, for example, a plurality of
the web applications 110-1 through 110-N may run simulta
memory access times for rendering and displaying a docu
ment for a web application 110-1 to 110-N. The document
manager component 112 may utiliZe a predictive cache algo
neously within the application management framework 100.
In one embodiment, the web applications 110-1 through
rithm to identify data that has a higher probability of being
displayed on an electronic display. The document manager
110-N may run in an HTML “iframe” within the application
component 112 may then move, transfer or otherwise cache
management framework 100. When multiple web applica
tions are already running and resident in memory, switching
between and among the web applications generally requires
very little time, thereby improving the user experience.
[0028] The application management framework 100 may
the predicted data for a document used by a web application
capture user interaction events, such as mouse clicks, stylus
is stored in the special purpose cache, future use can be made
by accessing the cached copy rather than refetching or recom
clicks, keyboard input, jog wheel input, touchscreen input,
voice input, button input, and so forth. The application man
agement framework 100 may selectively pass one or more
captured events to one or more of the web applications 110-1
110-1 to 110-N from storage media with slower access times
to storage media with faster access times. For instance, the
document manager component 112 may move data for some
or all of a document to a special purpose cache. Once the data
puting the original data, thereby lowering memory access
times. The special purpose cache may comprise, for example,
an L1 or L2 memory cache stored on the same die as a
through 110-N contained in the application management
processor, or accessible via a high-speed memory bus. The
framework 100. This facilitates creation of a group of web
applications that together have a common set of user input
special purpose cache may be managed by a cache manager
under the direction of the document manager component 112.
controls. Additionally, it simpli?es web application develop
ment for devices with limited input controls. For example, on
a mobile telephone it is advantageous to permit control of a
web application with one ?nger. In various embodiments, the
[0033]
The document manager component 112 may use a
predictive cache algorithm to selectively cache data for a
document used by a web application 110-1 to 110-N that has
a higher probability or likelihood of presentation by an elec
application management framework 100 may support the
tronic display, such as a touch-screen display for a mobile
ability of a user to switch between and among the web appli
computing device. Consequently, a web application 110-1 to
110-N attempting to render and display information for a
document stored by slower memory units may realiZe
increased memory access performance by retrieving the
cations 110-1 through 110-N quickly using a single ?nger or
“mouseover” action providing for a pleasant user experience.
[0029] The application management framework 100 may
control aspects of the one or more of the contained web
information from a cache rather than the slower memory
applications 110-1 through 110-N. For example, the applica
units. For instance, the document manager component 112
may use the predictive cache algorithm to identify and select
all data surrounding a portion of di splayed data, and cache the
tion management framework 100 may control which web
applications is visible to the user at a given time, whether a
web application is actively processing data, and/or when to
direct a web application to be “refreshed” or reloaded into the
web browser 105. The application management framework
surrounding data in a predictive cache. When a user operates
an input device to scroll from the displayed data towards a set
applications 110-1 through 110-N to reload or update its data.
[0030] In various implementations, the application man
agement framework 100 may provide a mechanism for devel
of surrounding data in a given spatial direction (e.g., up,
down, left, right), the document manager component 112 may
load the surrounding data from the predictive cache rather
than external memory (e.g., non-volatile memory). Accord
ingly, a user may experience reduced latency when attempt
opers to incorporate multitasking into one or more of the web
ing to scroll through a document for a web application, par
100 also may prompt one or more of the contained web
US 2010/0162126 A1
ticularly when the boundary of the document exceeds the
display area available for a given display device. The appli
cation management framework 100 in general, and the docu
ment manager component 112 in particular, may be described
in more detail with reference to FIGS. 2-8.
[0034] FIG. 2 illustrates a computing device 200 suitable
for implementing various embodiments. In the illustrated
embodiment shown in FIG. 2, the computing device 200 may
Jun. 24, 2010
different website than the website from which the initiating
web application originated. Generally, the “origin policy”
used for web applications prevents this behavior such that a
script running in a web browser is only able to access or
modify data at the website from which the script originated.
The application management framework 100, when com
bined with the WebVM 210, provides a mechanism to work
(WebVM) 210. In various implementations, the application
around this limitation. A suitable security policy may then be
implemented within the WebVM 210.
[0039] Furthermore, the WebVM 210 can cache frequently
management framework 100 may interact with the web
browser 205, as described herein. In such implementations,
needed data so that it is immediately available to a web
application, without requiring the user to wait to access the
comprise a web browser 205 and a Web Virtual Machine
the capabilities of the application management framework
data using the network. This vastly improves the overall user
100 may be combined with the capabilities of the WebWM
experience, so that it feels to the user that data is always
available, even if the connection to the network is low or
unavailable.
210.
[0035] In general, the WebVM 210 may implement a local
web host to provide server functionality on the computing
device 200 and to serve local applications to the web browser
205. When implemented as a server on the computing device
200, the WebVM 210 may support and provide access to
multiple applications. The WebVM 210 may run server side
code such as PHP, Python, PERL or CGI programming envi
ronments locally on the computing device 200. The WebVM
210 also may implement web methods programming inter
faces and web services extensions via SOAP, XML RPC,
[0040]
FIG. 2 depicts one possible implementation of a
WebVM 210 con?gured to run on a computing device 200
such as mobile device (e.g., mobile device 100) or desktop
computer. In various embodiments, the Web Virtual Machine
(WebVM) 210 may be implemented as described in US.
patent application Ser. No. 11/612,282 titled “System for
Running Web Applications O?lline and Providing Access to
Native Services,” which was ?led on Dec. 18, 2006 and is
entirely incorporated by reference.
REST, and the like for enabling access to local resources of
[0041]
the computing device 200. Accordingly, the computing
the web browser 205 via a connection 215, which may be
device 200 may provide server side interfaces to access local
implemented as an http network connection which runs on the
As shown, the WebVM 210 interacts directly with
resources such as a ?le system, a phonebook, a media store, a
computing device 200. Typically this can be invoked by the
database, a hardware component (e.g., camera, microphone,
etc.), a software component, and/ or other controlled resource
web browser 205 connecting to a local host IP address (e.g.,
127.001) or other suitable addresses or address and port
of the computing device 200. Such interfaces also may imple
combinations. Accordingly, different applications may be
ment server side code for allowing the user to write to a local
resource such as a phonebook, media store, and so forth.
served by the WebVM 210 simultaneously on the different
address port combinations and at different security levels
[0036]
with each application having different permissions levels and
The WebVM 210 may implement security measures
such as secure HTTP (https) and/or other login methods to
obtain user authentication for preventing unauthoriZed access
and use of the applications and/or other resources. The
WebVM 210 may be con?gured to intermediate between the
applications on the computing device 200 and the web
access rights to local resources.
[0042]
The WebVM 210 connects to device services
through application programming interfaces (APIs) includ
ing Device Memory API 238, Device File API 243, Device
Threads API 247, and SpecialiZed Device Functions andAPIs
browser 205 to broker local services and ensure that only a
253. It is noted that WebVM 210 uses APIs 238,243, and 247
trusted entity is given access to speci?c functionality. The
WebVM 210 also may implement various web based security
to connect resources that facilitate internal operation such as
models and access restrictions for evaluating function calls
memory access, ?le system, and task/threading and are also
used for porting of the WebVM 210 among different classes
from a web browser which request access to local resources of
of devices and operating systems.
the computing device 200.
[0037] When combined with the WebVM 210, the applica
tion management framework 100 may provide several addi
more meta-interfaces which represent the expandable nature
of the WebVM 210. Using SOAP, REST, or other web ser
tional advantages. For example, one or more of the web
vices bindings, web programs running either in the WebVM
applications 110-1 through 110-N within the application
management framework 100 may interact with local web
210 or via the web browser 205, such as through Ajax, can
access special services to the computing device 200. For
[0043]
The interface 253 may be implemented as one or
applications or native applications running on a local server
example, the computing device 200 may include a phonebook
within the WebVM 210, all within the computing device 200
or a digital media store for an on-device camera available as
itself. This is advantageous during times when the computing
a C++ or Java service. By using the interfacing capabilities of
the WebVM 210 through the interface 253, it is possible to let
web applications run locally on the computing device 200
(e.g., mobile device or desktop computer) without outside
device 200 is not connected to a network, or when there is a
need to store data from a web application locally on the
computing device 200. In various embodiments, resident or
nonresident web applications such as widgets may include
the ability to publish a notify to a home screen of the com
puting device via an of?ine proxy implemented by the
WebVM 210.
[0038]
Additionally, a web application within the applica
server dependencies to be able to access local services and
maintain a client-server programming model based on web
programming techniques and with web security models
intact. For example web-based phone book application could
tion management framework 100 may utiliZe the proxy ser
access the local phonebook on the computing device 200 via
the interface 253 and then store associations locally in an a
vices of the WebVM 210 to access data or services from a
local SQL database 213 to create hybrid functionality. Later
US 2010/0162126 Al
the same Web application can send or store the phonebook
information retrieved via interface 255 to an online Web por
tal on the internet.
[0044]
In operation, the WebVM 210 operates several por
tions of an http server stack as depicted by the interaction of
the Web broWser 205 and a netWork proxy 260 through a path
215. The netWork proxy 260 may comprise a rule based
netWork proxy engine implementing a softWare stack Which
redirects incoming netWork traf?c either to the outside World
Jun. 24, 2010
applications to have direct non-socket based services ful?lled
to access local hardWare or storage in an e?icient manner.
Examples of interface 250 may comprise intra-message pass
ing frameWorks such as the Linux DBus or other suitable
message passing frameWork. For example, the Web services
manager 223 may communicate With the application manage
ment frameWork 100 over a direct message passing interface.
via an interface 255 or toWards an http server 265 via a path
In this model the application environment is dedicatedinot
just the broWser, but broWser-like. In other Words, a broWser
rendering engine, such as a Webkit renders HTML along With
245. For example, a broWser-based application authored in
helper libraries for executing JavaScript/ECMAscript but it is
XHTML and running a local scripting language (in the Web
not the broWser application per se. That is, the user does not
realiZe they are in a broWser environment.
broWser 205) such as JavaScript or VBScript may request a
data call. This request Will be brokered from the Web broWser
205 through the netWork proxy 260 to the http server 265 for
handling. If the request is for a Web page or similar address
able asset, the http server 265 can then pull the resource and
[0048] The application bundle manager 235 manages entire
Web application assets. An application may be served from a
Web archive comprising a collection of the necessary appli
cation ?les for a Web application. The Web archive ?le may
comprise a bundle or package of the Web assets of the Web
serve it back to the Web broWser 205. The http server 265 can
application including index ?les, HTML ?les, script ?les
neW resource such as a neW page or an XMLHttpRequest type
fetch the resource from one of several local objects including
(e.g., JavaScript or server script such as PHP, Python or Perl),
a locally mounted ?le system implemented by the http server
graphics (e.g., JPEGs, GIFs), animations, directories, and
265 and a local application bundle manager 235 Which is
connected to the http server 265 via a path 240.
[0045] If the request is a data call or a callback function to
packaged, stored, and compressed using ?le archiving librar
other Web application components. The Web archive can be
ies such as Zip, gZip or Zlib, or other suitable packing schemes.
[0049] When a request is made to a particular ?le Which
a server side scripting language (e.g., PHP, Python, Java
Enterprise Edition, servlets or Common GateWay Interface
may be stored as a part of an atomic bundle comprising the
Scripts), the http server 265 Will hand the request off to a
processing engine. In the case of a server side scripting lan
guage, the request is handed via a path 270 to a server side
and the application bundle manager 235 Work in succession to
resolve the ?le just as if it had been hosted on an Internet
language support processing engine 275 Which handles the
request, provides language speci?c features, and maintains
server. These components also Work to resolve same origin
policy security enforcement in much the same Way that a
session management information or server side variables. If
broWser cache does. In other Words, xyZ.foo.com/mypage.
the request is via Web description language interface (e.g.,
SOAP, WSDL, REST, XML remote procedure call, or similar
Way rather than as the broWser cache Which acts in an auto
function), then the request can be handed off via a path 285 to
a specialiZed Web services manager 223 Which functions as
previously mentioned to complete the request functionality. It
is also possible to use the server side language support pro
cessing engine 275 to complete the call via a path 290 to the
application assets, the netWork proxy 260, the http server 265,
xhtml can be stored locally but accessed in a programmatic
matic (non-programmatically controlled) method. Universal
Resource Locators (URLs) Which explicitly resolve to local
addresses (such as ports running on l27.0.0.l, the http loop
specialiZed Web services manager 223 thereby enabling
back address) resolve and are served to the local Web broWser
205 via the http interface 210. In some cases, the Web broWser
205 may not be explicitly aWare of the location Which actually
either Ajax only applications (eg applications Which only
serves the ?le.
have broWser-based code and logic) or server-based code and
[0050]
logic to share SOAP/REST/Web services plug-ins.
vided by using the synchroniZation engine 225 to update the
[0046]
locally stored applications, such as those stored in the data
base of the application bundle manager 235 and in the local
The WebVM 210 also can provide access to a local
SQL database 213 Which is connected to the Web services
manager 223 via a path 217. The local SQL database 213
provides the ability to store end user data such as preferences,
location, or pro?le information. Applications running in the
Web broWser 205 can access the local SQL database 213 via
Additional functionality of the WebVM 210 is pro
SQL database 213 via paths 230 and 213, respectively. This
alloWs applications stored as bundles to be atomically stored
on the computing device 200 as a single ?le. The synchroni
Zation engine 225 can then manage the storage, updating,
server side scripts running in the server side language support
upgrading, and subscription status of several such applica
processing engine 275 or via a direct Web services softWare
tions. For example a server could store information about a
call (e. g., SOAP call) Which is issued directly through the Web
subscription application Which the local synchronization
services manager 223. The local SQL database 213 also con
nects to a data synchroniZation engine 225 via a path 203.
engine 225 Would enforce. When the subscription expires, the
Application resources are stored as application bundles in a
database implemented by the application bundle manager
235 Which is directly connected via a path 240 to the http
server 265. The database implemented by the application
bundle manager 235 is also connected to the data synchroni
Zation engine 225 via a path 230.
[0047] In various implementations, an application bundle
225 can also be fully serviced With or Without the HTTP
server component by using a message passing interface 250 to
interact With the Web services manager 223. This alloWs
application bundle Would be disabled or deleted. This func
tionality extends the type of application storage once associ
ated With dedicated runtimes (e.g., Java Micro Edition) to
Web-based applications.
[0051] In addition, the synchronization engine 225 can
store, synchroniZe and manage application data stored in the
local SQL database 213. In a typical (server-based) applica
tion, user data (e. g., shopping cart information on an e-com
merce based Web store or photographs on a photo sharing
Website) Would be stored on that database of that site. Via the
WebVM 210, hoWever, the ability to utiliZe Web-based pro
US 2010/0162126 A1
tocols to store application data locally is noW available though
Web services calls. Moreover, the synchronization engine 225
Jun. 24, 2010
[0055] Repeating/auto-scheduled requests may be termi
nated by overWrite (e.g., if the publishing application sends
can then move user data stored in the local SQL database 213
back to a classically running server at an Internet URL. The
an identical request With no scheduling parameters, then
synchronization engine 225 therefore alloWs both applica
the publishing application sends a parameter to delete the
published request via serial number then the auto scheduled
tions and user data to be stored locally on the computing
device 200. Should the computing device 200 be lost or the
user acquire a neWer, perhaps upgraded device, the applica
tions and the application data for the user can be seamlessly
re-provisioned to the neW device.
[0052] The synchronization engine 225 also can access the
external Internet through the netWork proxy 260 by using a
path 220. This alloWs the synchronization engine 225 to move
code assets and user and application data stored in the either
the database of the application bundle manager 235 or local
SQL database 213 and maintain them in accordance With
business rules for subscription or provisioning of the user
applications. Since it uses databases to store application
bundles and user data, the WebVM 210 can also support
scheduling is removed), by explicit request deletion (e.g., if
request is removed), by application deletion (e.g., if the pub
lishing application is deleted by the user or the operating
system, then all autopublish, and proxy requests associated
With the application are removed from the system), by pro
grammatic ?ush (e. g., an API exists on the proxy publisher to
suspend a given or all proxy-publish requests), and/or by
timeout (e.g., if a given publishing application does not reneW
the proxy publish request in a given time such as tWo Weeks,
then the proxy publisher may alloW the repeated proxy
request to age out, stop repeating, and be deleted from the
queue along With any stored data and rules).
[0056] In various embodiments, some or all the above pub
lishing parameters may be Wrapped in a namespace deter
some to have access to more or different data than others.
mined by the application using the WebVM 210. This
namespace Wrapping may be performed automatically. For
example, if a publishing application such as MySuperWidget.
[0053] The WebVM 210 also may implement various tech
niques as described in US. patent application Ser. No.
11/3 82,058 titled “Method for Synchronizing SoftWare
Application and User Data for Asynchronous Client-Server
Wgt calls the WebVM 210, the stored query and request data
Will be put in a namespace or table Which is pre?xed by
MySuperWidget. In this Way different applications can store
requests With the proxy, and the results Will be kept separate
different application permissions for different users alloWing
and Peer to Peer Computer Networks,” Which Was ?led on
to avoid naming con?icts (e.g., tWo different vendors using
May 8, 2006 and is entirely incorporated by reference.
the same variable name). Reverse URL naming (e.g., com.
Accordingly, the WebVM 210 may support the creation of
o?line Web applications and managing associated user data
Which is created of?ine that must later be reconciled With one
or more central servers Without a data collision. This provides
lampdesk.MySuperWidget) is explicitly encouraged for
some implementations. In addition, a public namespace also
may be provided for intercommunication messaging.
[0057] The WebVM 210 also may implement an applica
are neW and Which needs to be added to centralized servers.
tion runtime environment as described in US. patent appli
cation Ser. No. 12/019,362 titled “System and Methods for
This applies to the actual Web application program ?les so
that softWare applications can be synchronized in addition to
Environments and Web Applications,” Which Was ?led on
user data enabling a transparent online and of?ine user expe
rience. Data sets can be distributed in manner Which alloWs
Jan. 4, 2008 and is entirely incorporated by reference. The
application runtime environment may provide ?ner granular
peer to peer synchronization and ?ledata distribution. The
amount of transactional data required to synchronize data sets
ity and control at the function level rather then forcing an all
or nothing approach to control over an application Where the
knowledge of Which version of different pieces of user data
across a netWork can be minimized to increase ef?ciency of
available bandWidth on a computer netWork.
[0054] The WebVM 210 also may implement an of?ine
automated proxy cache as described in US. patent applica
tion Ser. No. 11/873,305 titled “Of?ine Automated Proxy
Cache for Web Applications,” Which Was ?led on Oct. 16,
2007 and is entirely incorporated by reference. The of?ine
automated proxy cache may support scheduling and auto
matic repeating of requests for updated data. In various
embodiments, scheduling parameters may be used to auto
matically retrieve updated versions of requested content
behalf of a publishing application While the publishing appli
cation is of?ine (e.g., closed, runtime not running, VM not
running, etc.). In such embodiments, the WebVM 210 may
make repeated Ajax requests on behalf of the publishing
application Which are repeatedly scheduled to run, even When
the publishing application is not running. The publishing
parameters may comprise scheduling parameters including,
for example, a time interval parameter that de?nes a time
interval for requesting data updates, a history parameter
de?ning a maximum number of versions of the data that may
be cached simultaneously, a data expiry parameter specifying
When data in the cache expires, a retry parameter de?ning a
number of times to retry a connection, and others.
Providing Granular Security for Locally Running Scripted
application either runs completely unfettered or is completely
blocked from running. In particular, the application runtime
environment may alloW scripted runtime based applications
to call local functions in a signed manner With function call
level control.
[0058] With respect to Web archives, the collection of Web
assets for a Web application may be treated as a single ?le
Which can be signed and distributed in a secure fashion. A
signing ?le (e.g., manifest ?le) may be automatically gener
ated When bundling the Web archive to provide details as to
the APIs (e.g. SOAP calls) an application uses at signing
When the application is registered With the certifying author
ity. When provided With a list of native functions to be used by
an application, both the signing authority and the system
Where the application is eventually installed can compare
functions that the application attempts to use against the list of
functions Which Were signed and authorized. This provides an
extra layer of security for the target operating system and
implementation of system Wide security policies to determine
Whether to alloW an application to be installed and Whether
the functions that an application uses violate such policies.
[0059] The decision to execute a function call may be del
egated in real-time to the operating system so that overall
security is consistent With the blanket security policies of the
US 2010/0162126A1
operating system. By giving responsibility for allowing func
tion calls to the operating system, platform level security
control at the API level may be implemented across multiple
runtime environments and requiring the runtime environ
ments to only track Which application is requesting What
Jun. 24, 2010
data server and process the data result by locally storing the
data result With the cached publishing parameters for the
publishing application.
[0064] The publishing parameters may comprise decode
parameters associated With the publishing application for
alloWing a display application other than the publishing appli
service. Accordingly, the operating system may maintain
control of security and access for scripted applications and
minimize the amount of security authority that must be
deferred to the various application runtime environments.
[0060] The application runtime environment also may
couple the signing process and installation of virtual machine
may name the variables Which can be extracted to publish a
or scripted runtime layer based applications back to core
perature or a minimiZed representation of an e-mail applica
operating system in a uni?ed Way. In particular, the operating
system may be involved in the accepting of signed scripted or
bytecode based applications When granting permission to
install an application. In addition, by using IP address and
port address combinations, multiple separate Web application
running on the same local computing device may be tracked
and kept separate. Accordingly, different security levels may
be enforced among multiple applications running on the same
device and application integrity may be persevered even if
one of the applications is a “rogue” application.
[0061] The WebVM 210 also may implement a proxy pub
lisher as described in US. patent application Ser. No. 12/116,
697 titled “Automatic Conversion Schema for Cached Web
Requests,” Which Was ?led on May 7, 2008, Which is entirely
incorporated by reference. The proxy publisher may imple
ment an automatic conversion schema Which alloWs data
results from a publishing application to be extracted and
displayed by a display application other than the publishing
application. For example, the proxy publisher may receive a
request from a publishing application to retrieve a data result
from a data server. The request may include a path to the data
server and appended publishing parameters. In accordance
With the automatic conversion schema, the publishing param
eters may comprise decode parameters associated With the
publishing application for alloWing a display application
other than the publishing application to decode variables of
the data result and to transform the decoded variables for
display. The proxy publisher may cache the request including
the appended publishing parameters and retrieve the data
result from the data server. The proxy publisher may locally
store the data result along With the cached publishing param
eters and may respond to a query from a display application
for data associated With the publishing application by provid
ing the cached data result and the publishing parameters to the
display application.
[0062] In one exemplary embodiment, the publishing
application may comprise an XHTML Widget Written in Java
Script and XHTML. The proxy publisher may receive a
request (e.g., Ajax request) from the publishing application to
cation to decode variables of the data result and to transform
the decoded variables for display. The decode parameters
minimiZed representation of the publishing application. For
example, a Widget may publish a minimiZed representation of
a Weather application by releasing only the day’s high tem
tion by releasing only the number of unread messages.
[0065] The decode parameters also may comprise data
extraction rules and data formatting rules for instructing the
display application hoW to extract Web-request data (eg
Weather) from data result (e. g., response text), hoW to format
the data (eg put this string+With the extracted Web-request
data), and hoW to display the data (e.g., display supplemen
tary information such as a URL or text along With the
response text).
[0066] Subsequently, the proxy publisher may receive a
query from the display application. In some cases, the display
application may request data from a speci?c named request.
For example, the display application may request data asso
ciated With the publishing application. In other cases, the
display application may ask the proxy publisher for a listing
of all names for currently stored non-private (published)
request data. By default, the proxy publisher may return all
the named rules if the display application does not ask for a
particular name.
[0067] Upon receiving an available name selected by the
display application, the proxy publisher may provide a
matching result including the locally stored data results and
the publishing parameters to the display application. The
display application may process the matching result by using
the extraction rules to extract and decode the variables and
using the formatting rules to display the extracted values in an
appropriate manner. In some embodiments, the proxy pub
lisher may reduce the processing required by the display
application by extracting the variables from the data result
using the data extraction rules and providing the extracted
variables to the display application along With the data for
matting rules.
[0068] In general, When the publishing application is a
Web-based application, the display application may be imple
mented as a vieWer application or mobile device home screen
outside of the Web broWser Which cannot render standard Web
based content. For example, the display application may com
prise a C/C++ active home screen, neWs aggregator, bill
board, or mobile device ticker Where only a small amount of
retrieve a data result over the Internet from a remote data
information is displayed but that requires transformation of
the cached data results to be usable. By using the decode
server. The request from the publishing application may
parameters provided by the publishing application, the dis
include a path to the remote data server such a Uniform
play application can transform the cached data into a format
that it can use. Once the display application has obtained the
Resource Locator (URL) and appended publishing param
eters.
[0063]
The proxy publisher may process the request from
the publishing application by caching the request including
the appended publishing parameters and passing through the
variables in a usable format, the display application may
republish the data in another format.
[0069] In accordance With the automatic conversion
path to the remote data server. The remote data server may
schema, the publishing parameters may comprise decode
parameters for alloWing the display application to decode
respond in normal fashion by returning a data result. The
proxy publisher may receive the data result from the remote
variables for display. The decode parameters may comprise a
variables of the data result and to transform the decoded
US 2010/0162126 A1
Jun. 24, 2010
name parameter (e.g., var_name) and a variable name for
[0074]
allowing the publishing application to name the variables
extracted. The variable name may be used by outside appli
cations to address a parameter left by the Web application. The
parameter (e.g., set_request_private) Which may be imple
mented by a ?ag set so that the o?line proxy request Will not
variable name may not be the name encoded in the of?ine
tion may deliberately not expose its data by directing the
proxy request, but it is the name (e. g., “Temp_Hi”) referred to
by an outside application.
[0070] The decode parameters may comprise a data extrac
tion rules parameter (e.g., extraction_rules, var_extract_
regex) and instructions for extracting information from the
response or data result. The publishing application may cause
The decode parameters may comprise a private
be readable by outside applications. The publishing applica
proxy to never honor a request from certain applications to
provide security. As such, certain application may be pre
vented from receiving cached data results and publishing
parameters for a given publishing application. Accordingly,
the publishing application may make o?line requests that are
private (not shared) With other applications.
[0075]
The publishing parameters may comprise event
the proxy publisher to store, With the information request,
instructions for extracting information from the response.
The extracting instructions may be used by an outside appli
cation (e.g., display application) or the proxy publisher to
extract (?nd) the information referred to by the name param
eter (e.g., var_name) from the stored o?line proxy request.
[0071] The extracting instructions may be implemented as
may comprise a Wake_upon (condition) parameter or com
a regular expression (regex) (e.g., J SON call): get_bytes[23
mand for requesting the proxy publisher to Wake up (launch)
28] or a “capturing regular expression” in a server side script
ing languages such as PERL regex. The extracting instruc
tions also may be implemented via XPath or XQuery. The
extracting instructions also may comprise an XSLT transfor
mation. The extracting instructions also may comprise a cus
tom program Which is, in itself, the instructions for process
an application When a certain o?line proxy condition is met
ing the request. For example, the stored instructions for
extracting information from the data result may be imple
mented as an XHTML page containing JavaScript.
[0072] The decode parameters may comprise a data format
ting rules parameter (e. g., formatting_rules) and instructions
for displaying variables from the data result in a format used
by an outside application (e.g., the display application). The
publishing application may cause the proxy publisher to
store, With the information request, a set of optional separate
instructions for hoW to display and format the extracted data.
The formatting instructions may comprise a string Which is
What an extracting application can display in an alert dialog.
This parameter can be duplicated With different language
parameters or commands for asking the proxy publisher to
perform actions on behalf of the application outside of
request handling to alloW Web applications to behave as nor
mal applications but With a background Wakeup task.
Whether the optional parameters can be executed is security
level and operating system dependent. The event parameters
(e.g., e-mail received). Whether the application Will actually
be launched is left to security permissions or the operating
system. The proxy publisher may implement an operating
system service for sleeping applications to publish services
Which can be read and passed to other applications. For
example, a C/C++ application can use the proxy publisher to
post a request Which self updates and presents a shared pub
lishable result. In general, any compiled (statically linked)
application can use the proxy publisher to Wake up When a
certain Wake up condition is met.
[0076] The event parameters may comprise an alert_upon
(condition) parameter or command for requesting the proxy
publisher to post an alert to the operating system When a
condition is met (e.g., publishing application needs atten
tion). This alloWs a Web application to post information via
the proxy publisher. The response may be a posted message in
a dialog box or a textual or iconic noti?cation on the home
parameters. The formatting instructions can be a transform
screen/idle screen of the device. For example, a scripted Wid
get application running on a cell phone device may provide an
ing rule-set Which takes the extracted value and displays it in
a certain format (eg if 2007.04.11 is the date, then it is
transformed via a regex to Apr. 11, 2007) such as via XSLT.
e-mail vieWing service and may set an event such that When
the proxy publisher discovers a neW e-mail, an event request
is posted to the device idle screen so that the user knoWs to
The extraction instructions are used to extract the data
look at their e-mail. The alert parameters also may comprise
an optional alert_msg, parameter and an optional alert_ur
gency parameter.
returned by a server located at the URL formed by the calling
application (e. g., publishing application), and the formatting
instructions detail hoW the extracted data should appear in a
[0077]
certain application (e.g., display application) outside of the
may be restricted in accordance With operating system secu
calling application.
rity policies. For example, the proxy publisher may interact
With the operating system security policies and permissions
[0073] The formatting instructions may be implemented by
a regular expression (regex) separate from the regex used to
extract the data. The formatting instructions also may com
prise an XSLT transformation. The formatting instructions
also may be implemented as a stored program in its oWn right.
For example, the stored program is itself passed as a param
eter Which takes the extracted data and displays or formats the
extracted data in a Way Which an outside application other
than the calling application can use and process. For example,
the stored program may comprise a scripted application such
as XHTML+JavaScript. The display and formatting instruc
tions also may be implemented by a custom language created
for the purpose of formatting the extracted data. The display
and formatting instructions also may be implemented by A
C/C++ sprintf( ) capable string function parameter.
The o?line capabilities of a publishing application
to restrict use of publishing application of?ine capabilities. In
some embodiments, the proxy publisher Will, for security
purposes, include the application signature ID or referring
page for the operating system to determine Whether to execute
a request in response to a Wake up or alter condition.
[0078]
The WebVM 210 also may be implemented as
described in Us. patent application Ser. No. 12/061,179
titled “System and Methods for Providing Access to a Desk
top and Applications of a Mobile Device,” Which Was ?led on
Apr. 2, 2008 and is entirely incorporated by reference.
Accordingly, one or more Web applications hosted on the
computing device 200 may be con?gured to be accessed by a
Web broWser running on a terminal separate from the com
puting device 200. In various implementations, the UI dis
US 2010/0162126A1
Jun. 24, 2010
played by the terminal may comprise an enhanced interface as
compared to the UI of the computing device 200. For
example, an application on a mobile device may be con?g
management frameWork 100. For example, in some cases,
Web applications may be inserted directly in the source code
ured to serve up a UI comprising a phone-centric interface to
the browser of the mobile device and con?gured to serve up a
or alternatively, the WebVM 210 may store one or more Web
publications to be loaded by the application management
UI comprising an enhanced (e. g., larger/better/ different)
frameWork 100 at startup or upon request by the user.
interface When connected to the broWser of the terminal. In
general, an application may serve a simpli?ed interface to
display on the mobile device and an enhanced interface to
may be stored in “cookies” on the computing device of the
take advantage of the larger and/or more useful assets (e.g.,
for the application management frameWork 100.Additionally
[0084]
In various embodiments, a list of Web applications
user so that the Web applications can be reloaded or con?g
ured. In some cases, the list of Web applications may be
larger screen, a full-siZe keyboard, a mouse, memory, broWser
served via server-side logic (e.g., SOAP, REST, JSON, etc.).
plugins, hardWare, etc.) of the terminal. For instance, an
Some embodiments may use server-side languages (e.g.,
PHP) to permit building of a Web application launcher that
may be customiZed by the user and/or by the Web application
developer. Certain embodiments also may alloW saving of
user preferences, con?gurations, or Web application data into
a database implemented locally on the device of the user (e. g.,
application on a mobile device Which uses 4-Way navigation
and 2 soft keys When in a phone mode may serve an enhanced
UI to the terminal that can use navigation hardWare such as
the full keyboard and mouse and that displays more content in
the larger screen of the terminal.
[0079] The use of Web-based technologies may alloW a
mobile device to deliver rich data applications such as small
Widgets or even conventional larger applications. In some
cases, for example, a mobile device may be con?gured to host
and run PC applications. In such cases, an enhanced version
of the application may be run When accessed by the terminal
While a simpler version of the application runs When accessed
by the hosting mobile device. The application may be con
?gured to support both environments Without requiring modi
?cation of the application in the process. As such the appli
cation may detect its environment and run differently When
used by the mobile device and When used by the terminal.
[0080]
FIG. 3 illustrates one embodiment of a logic How
via the WebVM 210) or on a netWork server. In addition, the
application management frameWork 100 may be compatible
With “plug-in” technologies such as Adobe PDF, Flash®,
VMRL, and others.
[0085]
FIG. 4 illustrates one embodiment of a logic How
400 for handling events by the application management
frameWork 100. The logic How 400 may be performed by
various systems and/or devices and may be implemented as
hardWare, softWare, ?rmWare, and/ or any combination
thereof, as desired for a given set of design parameters or
performance constraints. For example, one or more opera
tions of the logic How 400 may be implemented by executable
programming instructions to be executed by a logic device
300 for initializing the application management frameWork
100. The logic How 300 may be performed by various systems
(e.g., computer, processor).
and/or devices and may be implemented as hardWare, soft
Ware, ?rmWare, and/or any combination thereof, as desired
for a given set of design parameters or performance con
straints. For example, one or more operations of the logic How
frameWork 100 handles one or more events such as user
[0086]
In this embodiment, the application management
300 may be implemented by executable programming
interaction events. After the application management frame
Work 100 and Web applications are loaded, the application
management frameWork 100 is ready to handle events (step
402). In this exemplary embodiment, a user may trigger an
instructions to be executed by a logic device (e.g., computer,
event by clicking a mouse button on a Web application icon
processor).
(step 404). The application management frameWork 100 cap
tures the user input (step 406). Then, the application manage
[0081]
In this embodiment, the user directs a Web broWser
105 to start the operation for initialiZing the application man
ment frameWork 100 highlights the icon for the selected Web
agement frameWork 100 (step 302). For example, by starting
the Web broWser 105 With command line arguments or by
application (step 408) and activates the selected Web applica
tion (step 410). Once a Web application is activated, the appli
supplying a uniform resource identi?er (URI), the user may
cation management frameWork 100 responds to the user event
specify the protocol, location, and name of the script for the
application management frameWork 100. The Web broWser
(step 412).
105 uses this information to start the application management
cation (step 414), the application management frameWork
frameWork 100 (step 304).
agement frameWork 100 scans its document root to ?nd avail
100 may pass this event to the selected Web application (step
416). If an event takes place Within the user interface of the
application management frameWork 100 such as the user
able Web application assets (step 306). The application man
agement frameWork 100 then loads the Web application assets
clicking on a different Web application icon (step 418), the
application management frameWork 100 may handle the
[0082]
In this exemplary embodiment, the application man
[0087]
If an event takes place Within the selected Web appli
for a ?rst Web application (step 308). If there are additional
event (step 420). In this exemplary instance, the application
Web applications available (step 310), the application man
agement frameWork 100 repeats the process (step 312) for
management frameWork 100 highlights the icon for the
selected Web application (step 408) and continues the subse
quent process of the logic How 400.
each Web application. When all the Web assets for all of the
Web applications have been loaded (step 314), the application
[0088]
management frameWork 100 activates the ?rst Web applica
tion (step 316) and prepares to receive user input events (step
implementing various embodiments. As shoWn, the mobile
318).
[0083] It can be appreciated that the logic How 300 depicts
an exemplary sequence for initialiZing the application man
agement frameWork 100 and that alternative steps may be
used to install one or more Web applications in the application
FIG. 5 illustrates a mobile device 500 suitable for
device 500 may be implemented as a combination handheld
computer and mobile telephone, sometimes referred to as a
smart phone. It can be appreciated that the mobile device 500
may comprise a computing device having a handheld form
factor. While certain embodiments may be described With the
mobile device 500 implemented as a smart phone by Way of
US 2010/0162126A1
example, the mobile device 500 may be implemented as other
types of user equipment (UE) or Wireless computing devices
such as a computer, laptop computer, ultra-laptop computer,
portable computer, handheld computer, palmtop computer,
personal digital assistant (PDA), cellular telephone, combi
nation cellular telephone/PDA, smart phone, pager, one-Way
pager, tWo-Way pager, messaging device, data communica
tion device, gaming device, and so forth. Examples of a
mobile computing device may also include computers that are
Jun. 24, 2010
[0093]
The mobile device 500 also may be arranged to
perform data communications functionality in accordance
With shorter range Wireless netWorks, such as a Wireless per
sonal area netWork (PAN) offering Bluetooth® data commu
nications services in accordance With the Bluetooth® Special
Interest Group (SIG) series of protocols, speci?cations, pro
?les, and so forth. Other examples of shorter range Wireless
netWorks may employ infrared (IR) techniques or near-?eld
communication techniques and protocols, such as electro
?nger computer, ring computer, eyeglass computer, belt-clip
magnetic induction (EMI) techniques including passive or
active radio-frequency identi?cation (RFID) protocols and
computer, arm-band computer, shoe computers, clothing
devices.
computers, and other Wearable computers. In one embodi
[0094] The mobile device 500 may comprise various input/
output (I/O) interfaces for establishing connections to other
devices. The U0 interfaces may comprise, for example, a
arranged to be Worn by a person, such as a Wrist computer,
ment, for example, the mobile device 500 may be imple
mented as a smart phone having both Wireless voice and/or
data communications capabilities, as Well as processing capa
bilities. Although some embodiments may be described With
the mobile device 500 implemented as a smart phone by Way
of example, it may be appreciated that other embodiments
may be implemented using other mobile computing devices
serial connection port, an IR port, a Bluetooth® interface, a
netWork interface, a WiFi interface, a WiMax interface, a
cellular netWork interface, a Wireless netWork interface card
(WNIC), a transceiver, and so forth. Such connections may be
implemented using various Wired and/or Wireless communi
as Well. The embodiments are not limited in this context.
cation media in accordance With the described embodiments.
[0089]
Although certain exemplary embodiments may be described
The mobile device 500 generally may be con?gured
to support or provide cellular voice communication, Wireless
data communication, and computing capabilities in accor
dance With the described embodiments. The mobile device
500 may comprise various components for providing such
capabilities including, for example, a printed circuit board
(PCB), one or more processors (e.g., host processor, radio
processor), one or more transceivers (e.g., voice communica
as using a particular communication media by Way of
example, it may be appreciated that the principles and tech
niques discussed herein may be implemented using various
communication media and accompanying technology.
[0095] In some implementations, a connection may com
prise a Wired connection such as a Universal Serial Bus
(USB) connection (e.g., USB host, USB net), Serial Bus
tions transceiver, data communications transceiver, GPS
transceiver), memory (e.g., volatile or non-volatile memory,
Interface (SBI) connection (e.g., FireWire®), or other suit
able Wired connection to directly connect (e.g., tether, plug
removable or non-removable memory, erasable or non-eras
in) the mobile device 500 to a device When in close proximity.
In other implementations, a connection may comprise a short
able memory, Writeable or re-Writeable memory), internal
and/ or external antennas, a rechargeable battery, and others.
[0090]
The mobile device 500 may provide voice and Wire
less data communications functionality by communicating
With a mobile netWork such as a Code Division Multiple
range Wireless connection (e.g., Bluetooth® connection, IR
connection) to communicatively couple the mobile device
500 to a device When in close proximity. In some implemen
tations, the a connection may comprise a netWork connection
Access (CDMA) netWork, Global System for Mobile Com
munications (GSM) network, North American Digital Cellu
lar (NADC) netWork, Time Division Multiple Access
betWeen the mobile device 500 and a device such as a WiFi
(TDMA) netWork, Extended-TDMA (E-TDMA) netWork,
packet data or sWitched connection in accordance With the
described embodiments.
NarroWband Advanced Mobile Phone Service (NAMPS) net
Work, third generation (3G) netWork such as a Wide-band
connection, WiMax connection, Ethernet connection, cellu
lar netWork (e.g., lG/2G/3G) connection, or other suitable
[0096]
The mobile device 500 may comprise various soft
CDMA (WCDMA) netWork, CDMA-2000 netWork, Univer
sal Mobile Telephone System (U MTS) netWork, and others.
Ware programs such as system programs and applications to
[0091] The mobile device 500 also may support Wireless
Wide area netWork (WWAN) data communications services
Global Evolution (EDGE), High Speed DoWnlink Packet
Access (HSDPA), High Speed Uplink Packet Access
described embodiments. Exemplary system programs may
include, Without limitation, an operating system (OS), device
drivers, programming tools, utility programs, softWare librar
ies, application programming interfaces (APIs), and so forth.
Exemplary operating systems may include, for example, a
Palm OS®, Microsoft® OS, Unix® OS, Linux® OS, Sym
bian OSTM, Embedix OS, Binary Run-time Environment for
Wireless (BREW) OS, JavaOS, a Wireless Application Pro
tocol (WAP) OS, and others.
(HSUPA), and others.
[0092] The mobile device 500 may provide Wireless local
applications for alloWing a user to accomplish one or more
area netWork (WLAN) data communications functionality in
accordance With the Institute of Electrical and Electronics
limitation, a Web broWser application (e.g., Web broWser
Engineers (IEEE) 802.xx series of protocols, such as the
IEEE 802.1la/b/g/n series of standard protocols and variants
105), telephone application (e.g., cellular, VoIP, PTT), net
Working application, messaging application (e.g., e-mail, IM,
(also referred to as “WiFi”), the IEEE 802.16 series of stan
SMS, MMS), contacts application, calendar application,
Word processing application, spreadsheet application, data
including Internet access. Examples of WWAN data commu
nications services may include Evolution-Data Optimized or
Evolution-Data only (EV-DO), Evolution For Data and Voice
(EV-DV), CDMA/lxRTT, GSM With General Packet Radio
Service systems (GSM/GPRS), Enhanced Data Rates for
dard protocols and variants (also referred to as “WiMAX”),
the IEEE 802.20 series of standard protocols and variants, and
others.
provide computing capabilities in accordance With the
[0097]
The mobile device 500 may provide a variety of
speci?c tasks. Exemplary applications may include, Without
base application, media application (e. g., video player, audio
player, multimedia player, digital camera, video camera,
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement