Multiple Virtual Machines in Single Process
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Reliability
If multiple virtual machines are run in separate processes, then isolation and stability are maintained, but data flow efficiency deteriorates
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).
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
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.
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.
Data Source
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.


