IP Library Granted Patent US 8,607,224
Granted Patent B2
US 8,607,224 · App. 12/473,914 · Granted Dec 10, 2013

System for packaging native program extensions together with virtual machine applications

Inventors: Dirk Köhler (Hamburg, DE); Karsten Litsche (Schöpstal, DE); Mathias Winkler (Leipzig, DE)
Assignee: Yahoo! 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 8,607,224
App. No.
12/473,914
Granted
Dec 10, 2013
Kind
B2
Abstract

Methods and apparatus are described for packaging native program extensions with a virtual machine application. The application is distributed in an application package containing application code that runs in a virtual machine, native code that runs outside the virtual machine, and other resources. When the application requires access to native features of the underlying device not provided in the virtual machine, the native code is installed and executed. The virtual machine application accesses the native features by communicating with the native code running outside the virtual machine via inter-process communication.

Claims (43)

1. A computing device, comprising:

a processor;

one or more memories;

a data structure stored in the one or more memories, the data structure comprising a virtual machine application package containing a virtual machine application and native code; and

computer program instructions stored in the one or more memories, the computer program instructions comprising:

first instructions configured to implement an operating system when executed by the processor, the operating system being configured to provide a communication mechanism for processes on the computing device to communicate, the operating system being further configured to provide an installation mechanism to install programs on the computing device;

second instructions configured to implement a virtual machine when executed by the processor, the virtual machine being configured to run the virtual machine application, the virtual machine not being configured to provide access to one or more features of the computing device;

third instructions comprising the native code configured to run outside the virtual machine when executed by the processor, the native code being configured to provide access to the one or more features via the communication mechanism provided by the operating system; and

fourth instructions comprising the virtual machine application, the virtual machine application being configured for execution by the virtual machine, to:

detect whether the native code is installed on the computing device;

automatically install the native code embedded in the virtual machine application package via the installation mechanism provided by the operating system if the native code is not detected; and

access the one or more features of the computing device by communicating with the native code via the communication mechanism provided by the operating system.

2. The computing device of claim 1 wherein the virtual machine application is further configured to copy the native code embedded in the virtual machine application package to the one or more memories before installing the native code onto the computing device.

3. The computing device of claim 1 wherein the one or more features are selected from the group consisting of (i) an active cellular tower identifier, (ii) a Global Positioning System (GPS) location, (iii) a storage location on the computing device, (iv) a text messaging service, (v) an image capture component, (vi) a Universal Serial Bus (USB) port, (vii) a Personal Information Management (PIM) component, and (viii) a telephone call dialer or receiver.

4. The computing device of claim 1 wherein the communication mechanism comprises a local communication mechanism within the computing device.

5. The computing device of claim 1 wherein the installation mechanism comprises providing a handler on the computing device with the location of an installation package containing the native code.

6. The computing device of claim 1 wherein the virtual machine application is further configured to install the native code if a previously installed version of the native code on the computing device differs from the native code embedded in the virtual machine application package.

7. The computing device of claim 1 wherein the computer program instructions further comprise fifth instructions configured to install the virtual machine application package with the embedded native code on the computing device.

8. The computing device of claim 1 wherein the operating system is further configured to prompt a user of the computing device to run the installation mechanism.

9. A computer program product for use on a computing device that includes an operating system and a virtual machine, the operating system being configured to provide a communication mechanism for processes on the computing device to communicate, the operating system being further configured to provide an installation mechanism to install programs on the computing device, the virtual machine being configured to run a virtual machine application, the computer program product comprising at least one non-transitory computer-readable storage medium comprising:

a data structure including a virtual machine application package, the virtual machine application package storing thereon computer-readable instructions, comprising:

first instructions comprising native code configured to run outside the virtual machine when executed by a processor of the computing device, the native code being configured to provide access to one or more features of the computing device via the communication mechanism provided by the operating system, the virtual machine not being configured to provide access to the one or more features of the computing device; and

second instructions comprising the virtual machine application, the virtual machine application being configured for execution by the virtual machine, to:

detect whether the native code is installed on the computing device;

automatically install the native code embedded in the virtual machine application package via the installation mechanism provided by the operating system if the native code is not detected; and

access the one or more features of the computing device by communicating with the native code via the communication mechanism provided by the operating system.

10. The computer program product of claim 9 wherein the virtual machine application is further configured to copy the native code embedded in the virtual machine application package to a storage location on the computing device before installing the native code onto the computing device.

11. The computer program product of claim 9 wherein the one or more features are selected from the group consisting of (i) an active cellular tower identifier, (ii) a Global Positioning System (GPS) location, (iii) a storage location on the computing device, (iv) a text messaging service, (v) an image capture component, (vi) a Universal Serial Bus (USB) port, (vii) a Personal Information Management (PIM) component, and (viii) a telephone call dialer or receiver.

12. The computer program product of claim 9 wherein the virtual machine application is further configured to install the native code if a previously installed version of the native code on the computing device differs from the native code embedded in the virtual machine application package.

13. A method, comprising:

implementing an operating system when executed by a processor of a computing device, the operating system being configured to provide a communication mechanism for processes on the computing device to communicate, the operating system being further configured to provide an installation mechanism to install programs on the computing device;

implementing a virtual machine when executed by the processor, the virtual machine being configured to run a virtual machine application of a virtual machine application package, the virtual machine not being configured to provide access to one or more features of the computing device, wherein the virtual machine application package further includes native code configured to run outside the virtual machine when executed by the processor, the native code being configured to provide access to the one or more features via the communication mechanism provided by the operating system;

wherein the virtual machine application is configured for execution by the virtual machine for:

detecting whether the native code is installed on the computing device;

automatically installing the native code embedded in the virtual machine application package via the installation mechanism provided by the operating system if the native code is not detected; and

accessing the one or more features of the computing device by communicating with the native code via the communication mechanism provided by the operating system.

14. The method of claim 13 further comprising copying the native code embedded in the virtual machine application package to a storage location on the computing device before installing the native code onto the computing device.

15. The method of claim 13 wherein the one or more features are selected from the group consisting of (i) an active cellular tower identifier, (ii) a Global Positioning System (GPS) location, (iii) a storage location on the computing device, (iv) a text messaging service, (v) an image capture component, (vi) a Universal Serial Bus (USB) port, (vii) a Personal Information Management (PIM) component, and (viii) a telephone call dialer or receiver.

16. The method of claim 13 wherein the virtual machine application communicates with the native code via a local communication mechanism within the computing device.

17. The method of claim 13 wherein installing the native code comprises providing a handler on the computing device with the location of an installation package containing the native code.

18. The method of claim 13 wherein the installation of the native code is also initiated by the virtual machine application if a previously installed version of the native code on the computing device differs from the native code embedded in the virtual machine application package.

19. The method of claim 13 further comprising installing the virtual machine application package with the embedded native code on the computing device.

20. The method of claim 13 further comprising prompting a user of the computing device to install the native code.

Assignments (15)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2021
From: EXCALIBUR IP, LLC
To: TWITTER, INC.
Reel/Frame 057010/0910 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2009
From: KOHLER, DIRK; LITSCHE, KARSTEN; WINKLER, MATHIAS
To: YAHOO! INC.
Reel/Frame 022755/0960 →
Continuity (1)
Related Publication 20100306759A1 · Dec 2, 2010