Multiple Virtual Machines in Single Process

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems face performance bottlenecks due to local TCP/IP connections when running Java ME applications on desktop computer systems, restricting data flow between virtual machines and hindering system performance.

Innovation Solution

Implementing a method and system to run multiple virtual machines in a single process, where a first virtual machine launches an application emulator to access and redirect inputs and outputs of a Java ME application, allowing seamless interaction with local devices and resolving compatibility issues between JVM and CVM by modifying JNI method and type names.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If local TCP/IP connections are used to connect virtual machines, then connectivity between VMs is achieved, but system performance deteriorates due to data flow restrictions

Engineering Contradiction:
Improveconnectivity between virtual machinesVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Multiple virtual machines are merged into a single process, allowing them to share the same memory space and communicate directly through shared memory rather than through TCP/IP network connections. This eliminates the performance bottleneck while maintaining connectivity.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

A shared memory space acts as an intermediary between virtual machines, enabling efficient data exchange without the overhead of network protocol processing. The shared memory serves as a communication channel that bypasses TCP/IP restrictions.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If multiple virtual machines are run in separate processes, then isolation and stability are maintained, but data flow efficiency deteriorates

Engineering Contradiction:
Improveprocess isolationVSAvoiddata flow efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Virtual machines are combined within a single process boundary while maintaining logical isolation through shared memory regions. This approach achieves both isolation (through controlled memory access) and efficiency (through direct memory sharing).

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If Java ME applications are run on resource-constrained platforms, then cross-platform operability is achieved, but development capability deteriorates due to hardware limitations

Engineering Contradiction:
Improvecross-platform operabilityVSAvoidsoftware development capability
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

A desktop computer system with full development tools serves as an intermediary environment for developing Java ME applications. The application emulator on the desktop allows developers to write, compile, and debug applications using standard desktop hardware, then deploy them to resource-constrained devices.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system is segmented into two distinct environments: a development environment on desktop computers with full capabilities, and a runtime environment on resource-constrained platforms. This separation allows each to be optimized for its specific purpose.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7730492B1Method and system for running multiple virtual machines in a single process
Publication Date: 2010.06.01 ORACLE AMERICAN INC
  • US7730492B1 patent drawing
  • US7730492B1 patent drawing
  • US7730492B1 patent drawing

AI summary

A method and system for running a Java ME application on a computer system are described. The Java ME application is a software program designed for execution on a resource-constrained platform. A first virtual machine is launched in a process, the first virtual machine being is caused to run an application emulator. A second virtual machine is launched in the process, the second virtual machine being caused to run the Java ME application. The application emulator interfaces with application programming interfaces of the second virtual machine to interface with inputs and outputs of the Java ME application and redirect the inputs and outputs to local devices controlled by the application emulator.