IP Library Granted Patent US 7,051,315
Granted Patent B2
US 7,051,315 · App. 09/751,781 · Granted May 23, 2006

Network streaming of multi-application program code

Assignee: AppStream, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,051,315
App. No.
09/751,781
Granted
May 23, 2006
Kind
B2
Abstract

Executable software sent from an application service provider to a client computer can be arranged as a bundle of executable code blocks that are used during initialization of a group of applications (at least one initialization block from each application being included in the bundle). The bundle can include code for applications that are subscribed to by a user as well as for applications not subscribed to. As the subscribed applications are executed, usage data sent to a server may be monitored to determine unsubscribed applications that may be of interest to the user. Subscription offers may be automatically generated and sent to the user in response to processing of the usage data. Transmission efficiency of the code blocks may be improved by exchanging identification codes between the server and client to determine code blocks already present at the client.

Claims (52)

1. A method of transmitting executable software from a server to a client computer, the method comprising:

segmenting each of a plurality of software applications into a collection of executable blocks, to form a plurality of collections of executable blocks;

forming a startup block bundle comprising blocks executable during initialization of the plurality of software applications, at least one executable block from each of the plurality of software applications being included in the startup block bundle;

sending the startup block bundle to a client computer to enable the client computer to execute the plurality of software applications in a streaming mode; and

sending other blocks from the plurality of collections of executable blocks to the client computer subsequent to a start of execution of the startup block bundle.

2. The method of claim 1 wherein:

the plurality of software applications comprise at least one software application subscribed to by a user and at least one software application not subscribed to by the user; and

the method further comprises:

monitoring execution of software applications subscribed to by the user to determine a software application usage pattern; and

based on the usage pattern, sending data to the client computer to display information about a first one of the software applications not subscribed to by the user.

3. The method of claim 2 wherein:

the data to display information about a first one of the software applications not subscribed to by the user comprises an offer to subscribe to the first one of the software applications not subscribed to by the user.

4. The method of claim 3 further comprising:

in response to the offer to subscribe, receiving data at the server indicating acceptance of the offer; and

sending data to the client computer to enable execution of the first one of the software applications not subscribed to by the user.

5. The method of claim 4 wherein:

the startup block bundle comprises access control data; and

sending data to enable execution comprises sending changed access control data from the server to the client computer.

6. The method of claim 5 wherein sending the changed access control data comprises automatically sending in response to a subscription request received at the server from the client computer.

7. The method of claim 5 wherein the access control data comprises an encryption key enabling access to blocks of subscribed to software applications.

8. The method of claim 1 further comprising:

from each of a plurality of service providers, sending to a client terminal a startup block bundle comprising a plurality of initialization blocks;

monitoring execution of blocks in each of said startup block bundles to determine a usage pattern; and

forming a new startup block bundle based on the usage pattern.

9. The method of claim 8 wherein the new startup block bundle comprises executable blocks associated with software applications from different ones of the service providers.

10. The method of claim 1 wherein at least one of the blocks in the startup block bundle is a shared block executable during the initialization phase of different ones of the software applications.

11. The method of claim 1 wherein the startup block bundle comprises, for each of the plurality of software applications, a set of blocks sufficient to enable execution of said software application to a point when said software application awaits user input.

12. The method of claim 1 wherein forming the startup block bundle comprises: monitoring usage of a plurality of different software applications; and wherein forming the initialization block comprises forming based on the monitored usage.

13. The method of claim 1 further comprising:

sending from the server to the client computer a plurality of key values, the key values identifying ones of the collection of executable blocks;

receiving a response at the server from the client computer indicating blocks identified by the key values that are already stored at the client computer; and wherein

sending the startup block bundle comprises omitting blocks stored already stored at the client computer.

14. A computer system comprising:

a database storing a plurality of software applications segmented into a plurality of executable code blocks, each said software application's plurality of executable code blocks comprising a set of executable initialization code blocks;

a processor operatively coupled to the database; and a computer readable data storage medium comprising instructions to configure the processor to:

form an initialization block comprising executable initialization code blocks from each of the plurality of software applications; and

send the initialization block to a client computer via a network to enable the client computer to execute the plurality of software applications in a streaming mode.

15. The system of claim 14 wherein the data storage medium further comprises instructions to configure the processor to:

monitor execution of initialization code blocks at the client computer to determine a usage pattern; and

form a new initialization block based on the usage pattern.

16. The system of claim 14 wherein:

the system further comprises a database containing a plurality of user profiles, each user profile comprising security data to control usage of ones of the plurality of software applications by a respective user; and

the data storage medium further comprises instructions to configure the processor to:

query the database of user profiles to access security data associated with a first user;

process the security data to determine application restriction data associated with the first user; and

send the application restriction data to the client computer.

17. The system of claim 16 wherein the application restriction data comprises further comprises data preventing user access to a software application not subscribed to by the first user.

18. An apparatus comprising:

means for segmenting each of a plurality of software applications into a collection of executable blocks, to form a plurality of collections of executable blocks;

means for forming a startup block bundle comprising blocks executable during initialization of the plurality of software applications, at least one executable block from each of the plurality of software applications being included in the startup block bundle;

means for sending the startup block bundle to a client computer to enable the client computer to execute the plurality of software applications in a streaming mode; and

means for sending other blocks from the plurality of collections of executable blocks to the client computer subsequent to a start of execution of the startup block bundle.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2008
From: APPSTREAM, INC.
To: SYMANTEC CORPORATION
Reel/Frame 021436/0088 →
GRANT OF PATENT SECURITY INTEREST Recorded Jan 28, 2008
From: APPSTREAM INC.
To: JK&B CAPITAL III, L.P., AS COLLATERAL AGENT
Reel/Frame 020417/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2001
From: ARTZI, ITZIK; MCDERMOTT, BRIDGET; EYLON, DAN; RAMON, AMIT; VOLK, YEHUDA
To: APPSTREAM, INC.
Reel/Frame 012034/0671 →
Continuity (3)
Continuation In Part 0975083600 · Dec 28, 2000
Provisional Application 6023553500 · Sep 26, 2000
Related Publication 20020087717A1 · Jul 4, 2002