List icon Conteúdo

Chromium

Este guia descreve como trabalhar com a compilação do Chromium utilizada pelo JxBrowser.

Não é necessário instalar o Chromium ou o Google Chrome no ambiente de destino para utilizar o JxBrowser. O JxBrowser utiliza e implementa a sua própria compilação Chromium.

Binários

Os binários do Chromium para cada plataforma suportada estão localizados dentro dos JARs JxBrowser correspondentes:

  • jxbrowser-win32-8.0.0.jar – Binários do Chromium para Windows 32-bit.
  • jxbrowser-win64-8.0.0.jar – Binários do Chromium para Windows 64-bit.
  • jxbrowser-win64-arm-8.0.0.jar – Binários do Chromium para Windows ARM 64-bit.
  • jxbrowser-mac-8.0.0.jar – Binários do Chromium para macOS.
  • jxbrowser-mac-arm-8.0.0.jar – Binários do Chromium para macOS Apple Silicon.
  • jxbrowser-linux64-8.0.0.jar – Binários do Chromium para Linux 64-bit.
  • jxbrowser-linux64-arm-8.0.0.jar – Binários do Chromium para Linux ARM 64-bit.

Localização

Por padrão, o JxBrowser extrai os binários do Chromium para o diretório temp do usuário no Linux e macOS, e para o diretório AppData\Local\JxBrowser no Windows.

Eis como alterar o diretório onde o JxBrowser extrairá os binários:

  1. Utilizando a propriedade do sistema jxbrowser.chromium.dir.

    Isso pode ser feito pelo método System.setProperty():

    Java
    Kotlin
    System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser");
    
    System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser")
    

    ou através de um parâmetro da JVM:

    -Djxbrowser.chromium.dir="Users/Me/.jxbrowser"
    
  2. Através do EngineOptions ao construir o Engine:

    Java
    Kotlin
    var engine = Engine.newInstance(EngineOptions.newBuilder(renderingMode)
        .chromiumDir(Paths.get("Users/Me/.jxbrowser"))
        .build());
    
    val engine = Engine(renderingMode) {
        chromiumDir = Path("Users/Me/.jxbrowser")
    }
    

O caminho do diretório pode ser relativo ou absoluto.

O diretório não pode estar localizado numa unidade de rede.

Verificação

Cada versão do JxBrowser é compatível apenas com a mesma versão dos binários. Por exemplo, o JxBrowser 8.0.0.1 não funcionará com os binários do JxBrowser 8.0.0.

Para se certificar de que os binários do Chromium são compatíveis com a versão atual do JxBrowser, a biblioteca verifica os binários.

Extração

Por padrão, o JxBrowser extrai os binários de um arquivo JAR correspondente quando o Engine é criado pela primeira vez. Se precisar extrair binários antes, utilize este código:

Java
Kotlin
// Usar o diretório padrão.
ChromiumBinaries.deliverToDefaultDirectory();
// Ou utilize um diretório arbitrário.
ChromiumBinaries.deliverTo(Paths.get("/path/to/binaries"));
// Usar o diretório padrão.
ChromiumBinaries.deliverToDefaultDirectory()
// Ou utilize um diretório arbitrário.
ChromiumBinaries.deliverTo(Path("/path/to/binaries"))

Se os binários compatíveis já tiverem sido extraídos, o JxBrowser não os extrairá novamente. Caso contrário, o JxBrowser irá extrair os binários novamente e substituir os arquivos existentes.

Entrega personalizada

A partir do JxBrowser 7.35, os programadores podem obter o controle total do fornecimento de binários Chromium ao ambiente. Esta capacidade destina-se a casos de utilização avançados, como o download de binários da rede ou a utilização de um algoritmo de compressão personalizado.

Para personalizar a entrega, implemente a interface BinariesDelivery e entregue os binários quando precisar deles:

Java
Kotlin
class TuneBinaryDelivery implements BinariesDelivery {

    public void deliverTo(Path chromiumDir) {
        // Pseudocódigo:
        // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
        // Gzip.extract(downloadedArchive, chromiumDir);
    }
}
...
// Use o diretório padrão.
ChromiumBinaries.deliverToDefaultDirectory(new TuneBinaryDelivery());

//Ou use um diretório arbitrário.
ChromiumBinaries.deliverTo(chromiumDir, new TuneBinaryDelivery());
class TuneBinaryDelivery : BinariesDelivery {
    override fun deliverTo(chromiumDir: Path) {
        // Pseudocódigo:
        // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
        // Gzip.extract(downloadedArchive, chromiumDir);
    }
}
...
// Use o diretório padrão.
ChromiumBinaries.deliverToDefaultDirectory(TuneBinaryDelivery())

//Ou use um diretório arbitrário.
ChromiumBinaries.deliverTo(chromiumDir, TuneBinaryDelivery())

Se os binários compatíveis já tiverem sido extraídos, o JxBrowser não chamará a entrega personalizada.

Sandbox

Windows

O JxBrowser suporta o Chromium Sandbox no Windows. A Sandbox está ativada por padrão, mas você pode desativá-la através da opção Engine apropriada:

Java
Kotlin
var engine = Engine.newInstance(EngineOptions.newBuilder(renderingMode)
    .disableSandbox()
    .build());
val engine = Engine(renderingMode) {
    sandboxDisabled = true
}

Linux e macOS

Atualmente, a Sandbox é suportada apenas na plataforma Windows.