Introdução
Instalação
Guias
- Engine
- Profile
- Browser
- BrowserView
- Navegação
- Conteúdo
- DOM
- JavaScript
- Pop-ups
- Diálogos
- Downloads
- Extensões
- Rede
- Cache
- Cookies
- Proxy
- Autenticação
- Plugins
- Impressão
- Senhas
- Perfis de dados do Usuário
- Cartões de Crédito
- Mídia
- Área de transferência
- Zoom
- Corretor Ortográfico
- Implantação
- Chromium
Resolução de Problemas
Arquitetura
Esta é uma visão geral da arquitetura do JxBrowser.
Visão geral
A arquitetura da biblioteca JxBrowser consiste em vários processos, como o processo de aplicação Java e diferentes processos Chromium:
As seções seguintes fornecem detalhes sobre cada um dos processos, os principais componentes da biblioteca e descrevem o seu funcionamento.
Processos
Java
Este é um processo Java padrão onde a sua aplicação Java é executada. Aqui trabalha-se com a API JxBrowser para inicializar o Engine
, acessar o Profile
predefinido, criar as instâncias do Browser
, carregar páginas Web, acessar ao DOM de Frame
, executar JavaScript, incorporar BrowserView
na sua aplicação desktop Java Swing, JavaFX ou SWT para apresentar o conteúdo das páginas Web carregadas, etc.
Chromium
O Chromium utiliza a Arquitetura Multi-Processo e executa vários processos. Cada processo tem o seu próprio tipo e objetivo. Abaixo encontra-se uma descrição dos tipos de processos básicos.
O Chromium decide quantos processos devem ser iniciados. Ele pode executar processos adicionais para a sua funcionalidade interna, plugins, extensões, utilitários, etc.
Principal
Este processo é iniciado pelo JxBrowser quando você criar Engine
. É o processo principal que gere o ciclo de vida de outros processos do Chromium. Se você terminar este processo, todos os outros processos Chromium produzidos por este também serão terminados.
Para cada instância do Engine
é lançado um processo separado do Chromium Main.
Renderizador
Nesse processo, as instâncias Frame
que gerenciam o DOM e o JavaScript da página web carregada são executadas. O processo é iniciado pelo Chromium engine quando se navega no Browser
para uma página Web com um domínio diferente.
Por padrão, cada processo do Renderer é executado em Sandbox, pelo que não pode utilizar diretamente o seu disco, rede ou tela.
GPU
Neste processo, o conteúdo das páginas Web carregadas em diferentes processos do Chromium Renderer é processado pelo Chromium utilizando a GPU.
Comunicação entre processos
A comunicação entre diferentes processos é efetuada através da comunicação inter-processos (IPC). O IPC transfere dados entre dois processos numa máquina local.
Para transferir dados entre os processos Java e Chromium, o JxBrowser utiliza a sua própria implementação IPC baseada em sockets e memória compartilhada. A comunicação entre os processos Chromium é efetuada através da implementação Chromium IPC.
Componentes principais
Engine
Gerencia o ciclo de vida do processo principal do Chromium e fornece acesso à funcionalidade central do Chromium que permite gerenciar perfis, acessar a todos os dispositivos de entrada de multimídia disponíveis, etc.
Para trabalhar com o engine, utilize a classe Engine
. É um objeto de nível superior na hierarquia de objetos da biblioteca. O trabalho com a biblioteca começa com a criação de uma instância Engine
.
Para instruções detalhadas sobre a criação e utilização da instância Engine
ver o guia Engine.
Profile
Representa um perfil Chromium. Permite guardar separadamente todos os dados do navegador, como o histórico, os cookies, a cache, as definições de proxy, as configurações do corretor ortográfico, etc. Cada Engine
tem um perfil padrão que é criado automaticamente durante a inicialização do Engine
. O perfil padrão não pode ser excluído.
Você pode criar novos perfis e excluí-los se não forem necessários, utilizando o serviço Profiles
.
Os arquivos do perfil para histórico, cookies, cache, etc. são armazenados no diretório de dados do usuário. Se você configurar o Engine
com o diretório de dados do usuário e criar um perfil, este será armazenado no diretório de dados do usuário e será restaurado após o reinício da aplicação.
Leia mais sobre perfis no guia Profile.
Browser
Trata-se de um controle de navegador Web responsável por carregar páginas Web ou arquivos HTML locais, encontrar texto na página Web carregada, modificar o zoom, trabalhar com áudio, obter notificações sobre o progresso do carregamento, enviar eventos de teclado e mouse e muito mais.
Para trabalhar com este controle utilize a classe Browser
. Cada instância de Browser
pertence a Profile
. A instância Browser
é fechada automaticamente se o seu Profile
for excluído ou se a sua instância Engine
for fechada ou tiver uma falha.
O guia Browser fornece detalhes sobre como criar e utilizar o Browser
.
Frame
Cada página web carregada no Browser
tem um Frame
principal. O próprio Frame
pode ter frames filhos. Você pode utilizar Frame
para acessar e trabalhar com DOM e JavaScript. Quando uma página web é descarregada, seu Frame
e todos os frames filhos são fechados automaticamente.
Como funciona
Criando o Engine
Quando se cria uma instância Engine
, a biblioteca executa as seguintes ações:
- Iniciar os processos Chromium Main e GPU.
- Inicializa o Chromium engine no processo principal do Chromium.
- Inicializar o perfil padrão.
- Configurar a ligação IPC entre Java e o processo principal do Chromium.
Se você criar duas instâncias do Engine
, processos Chromium Main e GPU separados serão iniciados para cada instância. Por exemplo:
Criando o Browser
Quando se cria uma instância Browser
, a biblioteca carrega automaticamente uma página web about:blank
. Isso leva à criação do processo Chromium Renderer onde o DOM e o JavaScript desta página Web estão sendo executados:
Se você navegar na instância Browser
para uma página web, a página será carregada neste processo Chromium Renderer. Se depois você carregar uma página Web com um domínio diferente, esta será carregada num novo processo Chromium Renderer que será iniciado automaticamente. E o processo Chromium Renderer criado para a página Web anterior será encerrado.
Se uma página web tem um IFRAME
com uma página web de outro domínio, o Chromium irá executar um processo Renderer separado para este frame remoto.
Fechando o Browser
Quando se fecha a instância do Browser
, o processo correspondente do Chromium Renderer é terminado automaticamente. Isso significa que todas as instâncias Frame
em execução no processo encerrado serão automaticamente fechadas também:
Encerrando o Engine
Quando se fecha o Engine
, a biblioteca executa as seguintes ações:
- Fechar a ligação IPC entre Java e os processos principais do Chromium.
- Eliminar o Chromium engine no processo principal do Chromium.
- Terminar os processos Chromium Main e GPU.