IP Library Granted Patent US 9,063,765
Granted Patent B2
US 9,063,765 · App. 12/429,999 · Granted Jun 23, 2015

System and methods for distributed execution of computer executable programs utilizing asymmetric translation

Inventor: John R. Fallows (San Jose, CA)
Assignee: Kaazing Corporation
G06F9/45516G06F8/51G06F9/45525
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 9,063,765
App. No.
12/429,999
Granted
Jun 23, 2015
Kind
B2
Abstract

Dynamic program translation is utilized to convert an executable program in a first language executable representation to a second language executable representation that is either optimal or essentially required for execution within a defined execution environment on a client computer system. A dynamic translator, typically executed on a first computer system, is invoked in response to a request from a second computer system to provide an identified executable program. The dynamic translator performs an execution path analysis and optimized translation from a first representation, such as a Java class file, to generate executable code in the second representation, such as JavaScript. Optimizations include cross-language feature modifications, selective replacement of nominally un-translatable code portions, and insertion of call-back service requests to dynamically emulate services required in the execution of the program.

Claims (40)

1. A system for generating source code, comprising:

a processor configured to:

receive a source binary representation encoded using a first programming language, trace the source binary representation to determine an intermediate representation of the source binary representation,

optimize the intermediate representation, and use the optimized intermediate representation to generate a target source code in at least a second programming language that does not require a virtual machine to execute, wherein the target source code has not been compiled;

wherein optimizing the intermediate representation includes using an intermediate programming language to functionally modify an object-oriented programming model object reference into a procedural programming model version;

and a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions;

wherein functionally modifying the object-oriented programming model object reference includes functionally flatting the object-oriented programming model object reference by resolving and relinking an object-oriented look-up into the procedural programming model version,

generating a renamed procedural programming model method by prepending a fully qualified class name to a name of a corresponding oriented programming model method, and

modifying the intermediate representation to use a chained tail recursion to approximate a multithreading not directly supported by the second programming language.

2. The system of claim 1 , wherein the source binary representation includes a compiled code.

3. The system of claim 1 , wherein the source binary representation includes Java bytecode and generating the target source code includes utilizing a Java Run-Time Environment (JRE) replacement.

4. The system of claim 1 , wherein the target source code includes JavaScript.

5. The system of claim 1 , wherein the target source code includes ActionScript.

6. The system of claim 1 , further comprising a communication

interface configured to provide the target source code to a client that requested content associated with the source binary representation.

7. The system of claim 1 , further comprising a communication interface configured to provide the target source code to a web-browser.

8. The system of claim 1 , wherein the processor selects the second programming language in generating the target source code at least in part by analyzing a capability of a client that requested content associated with the source binary representation.

9. The system of claim 1 , wherein tracing the source binary representation includes following all valid execution flow paths of the source binary representation.

10. The system of claim 1 , wherein tracing the source binary representation includes translating at least a portion of a third-party library referenced by the source binary representation.

11. The system of claim 1 , wherein functionally modifying the object-oriented programming model object reference includes emulating a threading synchronization using a continuation function to reschedule an emulated thread.

12. The system of claim 1 , wherein optimizing the intermediate representation includes optimizing a variable usage.

13. The system of claim 1 , wherein optimizing the intermediate representation includes replacing a portion of the intermediate representation with a corresponding performance optimized version.

14. The system of claim 1 , wherein the processor is further configured to compile the target source code.

15. The system of claim 1 , wherein optimizing the intermediate representation includes emulating a capability of the first programming language not natively supported by the second programming language.

16. A method for generating source code, comprising:

receiving a source binary representation encoded using a first programming language;

tracing the source binary representation to determine an intermediate representation of the source binary representation;

using a processor to optimize the intermediate representation; and using the optimized intermediate representation to generate a target source code in at least a second programming language that does not require a virtual machine to execute, wherein the target source code has not been compiled;

wherein optimizing the intermediate representation includes using an intermediate programming language to functionally modify an object-oriented programming model object reference into a procedural programming model version;

wherein functionally modifying the object-oriented programming model object reference includes functionally flatting the object-oriented programming model object reference by resolving and relinking an object-oriented look-up into the procedural programming model version,

generating a renamed procedural programming model method by prepending a fully qualified class name to a name of a corresponding oriented programming model method, and

modifying the intermediate representation to use a chained tail recursion to approximate a multithreading not directly supported by the second programming language.

17. A computer program product for generating source code, the computer program product comprising a non-transitory computer readable storage medium and comprising instruction when executed by the processor, the processor is configured to:

receive a source binary representation encoded using a first programming language;

trace the source binary representation to determine an intermediate representation of the source binary representation;

optimize the intermediate representation; and use the optimized intermediate representation to generate a target source code in at least a second programming language that does not require a virtual machine to execute, wherein the target source code has not been compiled;

wherein optimizing the intermediate representation includes using an intermediate programming language to functionally modify an object-oriented programming model object reference into a procedural programming model version;

wherein functionally modifying the object-oriented programming model object reference includes functionally flatting the object-oriented programming model object reference by resolving and relinking an object-oriented look-up into the procedural programming model version,

generating a renamed procedural programming model method by prepending a fully qualified class name to a name of a corresponding oriented programming model method, and

modifying the intermediate representation to use a chained tail recursion to approximate a multithreading not directly supported by the second programming language.

Assignments (4)
SECURITY INTEREST Recorded Mar 7, 2017
From: KAAZING CORPORATION
To: COMERICA BANK
Reel/Frame 041485/0708 →
SECURITY INTEREST Recorded Jun 15, 2016
From: KAAZING CORPORATION
To: US VC PARTNERS, L.P.
Reel/Frame 038915/0452 →
SECURITY INTEREST Recorded Jun 3, 2016
From: KAAZING CORPORATION
To: SQN VENTURE INCOME FUND, LP
Reel/Frame 038799/0524 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2012
From: FALLOWS, JOHN R.
To: KAAZING CORPORATION
Reel/Frame 028638/0495 →
Continuity (2)
Provisional Application 61125836 · Apr 28, 2008
Related Publication 20090271771A1 · Oct 29, 2009