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-7.38.2.jar – Binários do Chromium para Windows 32-bit.
  • jxbrowser-win64-7.38.2.jar – Binários do Chromium para Windows 64-bit.
  • jxbrowser-mac-7.38.2.jar – Binários do Chromium para macOS.
  • jxbrowser-mac-arm-7.38.2.jar – Binários do Chromium para macOS Apple Silicon.
  • jxbrowser-linux64-7.38.2.jar – Binários do Chromium para Linux 64-bit.
  • jxbrowser-linux64-arm-7.38.2.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():

     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:

     Engine engine = Engine.newInstance(EngineOptions.newBuilder(...)
             .chromiumDir("Users/Me/.jxbrowser")
             .build());
    
     val engine = Engine.newInstance(EngineOptions.newBuilder(...)
             .chromiumDir("Users/Me/.jxbrowser")
             .build())
    

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 7.38.2.1 não funcionará com os binários do JxBrowser 7.38.2.

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:

// Usar o diretório padrão.
ChromiumBinaries.deliverToDefaultDirectory();
// Ou utilize um diretório arbitrário.
ChromiumBinaries.deliverTo(Paths.get("/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:

class SharedDriveDelivery implements BinariesDelivery {

   void deliverTo(Path chromiumDir) {
       // Pseudocódigo:
       // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
       // Gzip.extract(downloadedArchive, chromiumDir);
   }
}

// Utilizar o diretório predefinido.
ChromiumBinaries.deliverToDefaultDirectory(new SharedDriveDelivery());

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

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:

Engine engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .disableSandbox()
        .build());
val engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .disableSandbox()
        .build())

Linux e macOS

Atualmente, a Sandbox é suportada apenas na plataforma Windows.

Go Top