IP Library Granted Patent US 8,136,109
Granted Patent B1
US 8,136,109 · App. 10/278,728 · Granted Mar 13, 2012

Delivery of data and formatting information to allow client-side manipulation

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 8,136,109
App. No.
10/278,728
Granted
Mar 13, 2012
Kind
B1
Abstract

Delivering data and formatting information includes delivering object definition files from a server to a client; generating definitions and object instantiations at a client using JavaScript or another simple browser-interpreted language, for objects relating to data modeling and presentation; and presenting data using those objects at the client, using a web browser without a separate runtime environment or application plug-in, but maintaining substantial state at the web browser regarding the data itself and the format for its presentation. Definition files are modified to provide object properties consistent with a full object-oriented language, including for example hierarchical inheritance of object properties. Code ballooning generates definitions and individual instantiations, with the effect that a very large amount of DHTML, or another markup or presentation definition language for use with the application, can be generated from relatively small aggregate size of definition files communicated from the server to the client.

Claims (57)

1. A method of receiving data and formatting information, comprising the steps of:

receiving object definition files from a server at a client, the object definition files comprising first data structures and instructions for generating second data structures from the first data structures, the second data structures representing application objects;

generating the second data structures and instantiations of the application objects at the client using a human-readable interpreted language, for objects relating to data modeling and presentation; and

presenting data using the instantiations of the application objects at the client,

wherein the generating and presenting steps are performed, at least in part, by a client browser, and wherein the client browser comprises:

a script language interpreter, wherein the script language interpreter is operable to interpret the object definition files received at the client in order for the client browser to generate the second data structures and instantiations of the application objects at the client;

a parser for structured data, wherein the parser for structured data is operable to parse the first data structures in order for the client browser to generate the second data structures and instantiations of the application objects, and

an element for communication with the server and for presenting data.

2. A method as in claim 1 , wherein the second data structures and the application object instantiations are generated without a separate runtime environment or application plug-in for the browser.

3. A method as in claim 1 , further comprising the step of maintaining substantial state information at the browser regarding the data and a format for presenting the data.

4. A method as in claim 1 , wherein the script language includes JavaScript and the structured data includes extensible markup language data.

5. A method as in claim 1 , wherein the object definition files are interpreted and built out to provide object properties consistent with a full object-oriented language.

6. A method as in claim 5 , wherein the object properties include multiple levels of hierarchical inheritance of object properties.

7. A method as in claim 5 , including steps of

generating in-memory object definitions in response to object definition files, and

generating individual object instantiations in response to said in-memory object definitions.

8. A method as in claim 1 , wherein the application object instantiations form a data manipulation application.

9. A method as in claim 8 , wherein the data manipulation application maintains state information for the data modeling and presentation.

10. A method as in claim 9 , further comprising the steps of serializing all or part of the application objects into a tagged data structure.

11. A method as in claim 10 , further comprising the step of de-serializing all or part of the tagged data structure back into the application objects.

12. A method as in claim 11 , wherein all or part of the tagged data structure is transferred to and de-serialized at another client or destination, thereby transferring all or part of the data manipulation application and its current state.

13. A method as in claim 10 , wherein all or part of the tagged data structure is stored for later retrieval, thereby storing all or part of the data manipulation application and its current state for later use by one or more different users.

14. A method as in claim 10 , wherein during development of the data manipulation application, all or part of the tagged data structure is stored for later retrieval, thereby storing all or part of the data manipulation application and its current state for further developments and use.

15. A method of receiving, presenting and allowing client-side manipulation of data, comprising the steps of:

receiving a transfer of data from a server, a first portion of the data comprising first data structures and instructions for generating second data structures from the first data structures;

interpreting the first portion of the data so as to generate the second data structures, an object oriented environment, and instances of objects on the object oriented environment;

generating a presentation of a second portion of the data using the objects; and

allowing manipulation of the presentation through the objects,

wherein the interpreting and generating steps are performed by a browser, and wherein the browser comprises:

a language interpreter that interprets the first portion of the data, wherein the language interpreter is operable to interpret the object definition files received at the client in order for the client browser to generate the second data structures and instantiations of the application objects at the client; and

a parser for the structured data, wherein the parser for structured data is operable to parse the first data structures in order for the client browser to generate the second data structures.

16. A method as in claim 15 , wherein the step of the interpreting utilizes code ballooning.

17. A method as in claim 15 , wherein the objects maintain state information about presentation of the second portion of the data.

18. A method as in claim 17 , wherein the objects maintain state information about the second portion of the data.

19. A method as in claim 15 , wherein the presentation utilizes a graphical user interface generated by the browser.

20. A method as in claim 15 , wherein the browser lacks a separate runtime environment.

21. A method as in claim 15 , wherein the interpreting step is performed in a same memory space as used by the browser.

22. A method as in claim 21 , further comprising the steps of:

requesting additional or updated data; and

receiving the additional or updated data in the form of structured data.

23. A method as in claim 15 , wherein the object oriented environment allows inheritance of properties between the objects.

24. A method as in claim 23 , wherein the inheritance includes multiple levels of hierarchical inheritance.

25. A method as in claim 15 , wherein the object oriented environment includes a data layer.

26. A method as in claim 25 , wherein the data layer can be updated asynchronously with respect to the presentation.

27. A method as in claim 25 , wherein the presentation can be updated asynchronously with respect to the data layer.

28. A method as in claim 25 , further comprising the steps of:

serializing all or part of the application into a tagged hierarchical data structure; and

transferring the serialized environment to another client or destination.

29. A method as in claim 28 , wherein the other client or destination deserializes at least a portion of the application, thereby duplicating at least a portion of the object oriented application, data and presentation.

30. A method of sending data to allow presentation and client-side manipulation of the data, comprising the steps of:

transferring data from a server, a first portion of the data comprising first data structures and instructions for generating second data structures from the first data structures, wherein the first portion of the data can be received at a client browser and interpreted within the client browser such that the second data structures, an object oriented environment, and instances of objects in the object oriented environment are generated at the client browser, a second portion of the data using the objects are presented at the client browser, and to allow manipulation of the presentation through the objects, and wherein the client browser comprises:

a script language interpreter, wherein the script language interpreter is operable to interpret the object definition files received at the client in order for the client browser to generate the second data structures and instantiations of the application objects at the client,

a parser for structured data, wherein the parser for structured data is operable to parse the first data structures in order for the client browser to generate the second data structures, and

an element for communication with the server and for presenting data.

31. A method as in claim 30 , further comprising the steps of:

receiving a request for additional or updated data; and

transferring the additional or updated data in the form of structured data.

Assignments (16)
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
CHANGE OF NAME Recorded Feb 7, 2023
From: TIBCO SOFTWARE INC.
To: CLOUD SOFTWARE GROUP, INC.
Reel/Frame 062714/0634 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
RELEASE REEL 052115 / FRAME 0318 Recorded Oct 3, 2022
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 061588/0511 →
RELEASE (REEL 034536 / FRAME 0438) Recorded Sep 30, 2022
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 061574/0963 →
RELEASE (REEL 054275 / FRAME 0975) Recorded May 7, 2021
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 056176/0398 →
SECURITY AGREEMENT Recorded Nov 2, 2020
From: TIBCO SOFTWARE INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 054275/0975 →
SECURITY AGREEMENT Recorded Mar 6, 2020
From: TIBCO SOFTWARE INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 052115/0318 →
SECURITY INTEREST Recorded Dec 5, 2014
From: TIBCO SOFTWARE INC.; TIBCO KABIRA LLC; NETRICS.COM LLC
To: JPMORGAN CHASE BANK., N.A., AS COLLATERAL AGENT
Reel/Frame 034536/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2014
From: BIRDEAU, LUCAS; YEH, CLIFFORD; PEACHEY, MICHAEL; HAKMAN, KEVIN
To: HAKMAN PEACHEY INC.
Reel/Frame 034112/0570 →
CHANGE OF NAME Recorded Feb 23, 2010
From: VERSALENT INC.
To: GENERAL INTERFACE CORP.
Reel/Frame 023979/0647 →
CHANGE OF NAME Recorded Feb 23, 2010
From: HAKMAN PEACHEY INC.
To: VERSALENT INC.
Reel/Frame 023979/0645 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2010
From: GENERAL INTERFACE CORP.
To: TIBCO SOFTWARE INC.
Reel/Frame 023979/0770 →