JavaSEPort currently owns simulator menus and directly instantiates Swing tools (NetworkMonitor, TestRecorder, ComponentTreeInspector), which prevents a clean host/app split.
Implement a two-loader bootstrap in Simulator.java using existing ClassPathLoader as a foundation.
-
In Simulator.main(...), create:
- host loader (simulator shell + tooling)
- app loader (simulated app runtime)
-
Define a narrow IPC bridge (e.g., SimulatorBridge interface package under com.codename1.impl.javase.simulator.bridge) with DTO-style payloads for:
- network events
- component tree snapshots
- recorder events
- screenshots
-
Ensure bridge classes are loaded by a shared parent loader so both isolates can exchange typed messages safely.
-
Remove direct static cross-calls between tooling and JavaSEPort where possible; route through bridge events.
JavaSEPort currently owns simulator menus and directly instantiates Swing tools (NetworkMonitor, TestRecorder, ComponentTreeInspector), which prevents a clean host/app split.
Implement a two-loader bootstrap in
Simulator.javausing existingClassPathLoaderas a foundation.In
Simulator.main(...), create:Define a narrow IPC bridge (e.g.,
SimulatorBridgeinterface package undercom.codename1.impl.javase.simulator.bridge) with DTO-style payloads for:Ensure bridge classes are loaded by a shared parent loader so both isolates can exchange typed messages safely.
Remove direct static cross-calls between tooling and
JavaSEPortwhere possible; route through bridge events.