4

I'm wondering what exactly this argument do? and know about potencial downsides that this argument could cause.

I tried searching this VM argument on internet but I couldn't find anything of it.

Amaury Esparza
  • 1,028
  • 2
  • 12
  • 18

1 Answers1

3

By default, on macOS JxBrowser initializes Chromium engine in Java process. It's required to support heavyweight rendering mode when Chromium window is embedded into Java frame. In macOS native window from one process (Chromium) cannot be embedded into a native window from another process (Java).

Initializing Chromium in Java process might cause deadlock issues on macOS. It's because SWT, JavaFX, and Chromium share the same Cocoa native thread in Java process.

The java.ipc.external=true VM option tells JxBrowser to initialize and run Chromium engine in separate native process. In this case Java and Chromium don't share Cocoa native thread. It allows solving deadlock issues on macOS platform.

As you may see, in this case heavyweight rendering mode cannot be used. So, in this case only lightweight rendering mode is used. This is the only downside of using this VM option.

Vladimir
  • 1
  • 1
  • 23
  • 30
  • Thanks it's a very helpful answer. Does you guys have documented other VM args?. I would like to take a look at them. Thanks. – Amaury Esparza Jan 10 '17 at 18:05
  • There's no a single web page we we list all supported JxBrowser VM arguments. I think we should add similar wep page in future. At the moment information about all supported VM args are scattered around JxBrowser documentation at: https://jxbrowser.support.teamdev.com/support/solutions – Vladimir Jan 11 '17 at 08:13