Quando você precisa exibir conteúdo Web numa aplicação SWT, normalmente você tem duas opções: o widget Browser incorporado ou uma opção comercial como o JxBrowser.

Este artigo explica as diferenças entre os dois e te ajuda a escolher o mais adequado às suas necessidades.

Em poucas palavras 

O Browser incorporado é um widget simplista mas capaz que utiliza o motor do navegador fornecido pelo sistema operacional. Escolha Browser quando:

  • É necessário utilizar software grátis.
  • O caso de utilização é simples e não crítico.

O JxBrowser é um controle comercial avançado de visualização da Web baseado no Chromium. Escolha JxBrowser quando:

  • O caso de utilização é complexo ou crítico.
  • É necessário controlar a versão do motor do navegador.
  • É necessário um motor de navegação consistente em todas as plataformas.
  • É necessário testar automaticamente o conteúdo da Web em SWT.
  • Precisa de uma das funcionalidades avançadas.
  • Precisa de suporte, correções de erros ou funcionalidades personalizadas.

Incorporação 

Dado que o widget Browser é parte do SWT, é muito fácil incorporá-lo à sua aplicação:

var browser = new Browser(shell, SWT.NONE);
browser.setUrl("https://example.com");

Com o JxBrowser, é necessário adicionar primeiro as dependências ao projeto. Com base no seu sistema de compilação, você pode usar artefatos Maven, adicionar os arquivos JAR ao classpath ou criar um plugin standalone Eclipse.

Uma vez adicionada a biblioteca, a incorporação tem o seguinte aspecto:

var engine = Engine.newInstance(HARDWARE_ACCELERATED);
var browser = engine.newBrowser();
var browserView = BrowserView.newInstance(shell, browser);
browser.navigation().loadUrl("https://example.com");

As engines do browser 

A ideia original do Standard Widget Toolkit era proporcionar ao usuário uma experiência que parecesse nativa do sistema operacional. Para tal, o SWT utiliza os widgets fornecidos pelo sistema operacional, em vez de criar o seu próprio conjunto de widgets, como fazem normalmente outros kits de ferramentas.

Portanto, cada widget no SWT é um wrapper sobre a sua contraparte nativa. O kit de ferramentas lhe fornece uma API para utilizar o widget, mas o sistema operacional trata da renderização, da acessibilidade, da gestão do foco e de outros aspectos. O widget Browser também funciona desta forma.

O Browser é um wrapper fino sobre um controle de visualização web fornecido pelo sistema operacional. No Windows, é o WebView2, baseado no Microsoft Edge. No macOS e no Linux, estes são WKWebView e WebKitGTK, respectivamente — ambos utilizam o WebKit.

O JxBrowser, pelo contrário, vem com um motor de navegação incorporado — baseado no Chromium. A ideia é garantir um comportamento consistente do navegadro, independentemente do sistema operacional e o software instalado.

As engines do browser: fornecidas pelo sistema operacional ou incluídas no pacote

As engines do browser: fornecidas pelo sistema operacional ou incluídas no pacote.

Custos de desenvolvimento 

No passado, os navegadores apresentavam frequentemente os mesmos sites de forma diferente. Os navegadores de diferentes fornecedores suportavam os seus próprios subconjuntos de HTML, CSS e até JavaScript. Essa incompatibilidade espantosa entre os navegadores resultou em esforços excessivos de desenvolvimento e teste. Esta era uma fonte constante de problemas.

O Internet Explorer já não existe há muito tempo. Felizmente. Mas será que os problemas de incompatibilidade desapareceram com ele? Infelizmente, não. Os navegadores continuam a perturbar os programadores ao executarem o seu código e ao apresentarem os seus estilos de forma diferente.

A abordagem SWT é suscetível a este mesmo problema. Na natureza, uma aplicação SWT multiplataforma pode não só encontrar o Edge e dois sabores do WebKit, mas também várias versões dos mesmos. Uma coisa é certa: quanto mais tempos de execução do navegador existirem, mais esforços de desenvolvimento e teste serão necessários.

O JxBrowser vem com um motor de navegação incorporado. Desta forma, os programadores sabem a versão exata do Chromium que a aplicação utiliza. A versão permanece a mesma para todos os sistemas operacional e só muda quando o JxBrowser é atualizado.

Comparação dos esforços necessários para o SWT browser e o JxBrowser

Quanto menos navegadores, menos esforços de desenvolvimento e teste.

Segurança e atualizações 

Muitas empresas exigem que o motor de busca esteja atualizado. Trata-se de um requisito de segurança, e é um requisito razoável. O Chromium corrigiu mais de 179 vulnerabilidades só este ano. Seis deles têm exploits conhecidos.

A abordagem SWT de utilização do navegador do sistema funciona bem em redes empresariais gerenciadas, onde são aplicadas atualizações atempadas através de políticas de domínio.

O JxBrowser dá aos programadores controle sobre a versão do navegador. Desta forma, a aplicação pode garantir o cumprimento das políticas da empresa e não depender do ambiente. Esta abordagem funciona bem em redes não gerenciadas ou com computadores pessoais, dado que a aplicação é atualizada adequadamente frequentemente.

Em 2024, o JxBrowser lançou 15 versões com atualizações do Chromium. A última versão, JxBrowser 8.2.1, vem com Chromium 131.

Características 

O Browser embutido é um widget capaz, mas é limitado por sua própria arquitetura. A utilização de diferentes engines do browser limita a API às funcionalidades que são compatíveis entre o WebView2, o WKWebView e o WebKitGTK.

O Browser te permite:

  • carregar sites e arquivos HTML locais;
  • gerenciar cookies;
  • gerenciar janelas pop-up;
  • realizar a autorização básica;
  • chamar JavaScript a partir de Java e vice-versa;
  • escuta o evento quando a localização ou o título da página muda.

Comparação de tamanhos de API entre o SWT browser e o JxBrowser

A superfície da API do navegador incorporado e do JxBrowser.

Internamente, o JxBrowser utiliza o Chromium, o que facilita a manutenção de uma gama mais estendida de funcionalidades. Além das funcionalidades de navegação genéricas, oferece funcionalidades específicas do Chromium. Esta lista não está completa, mas apresenta as principais funcionalidades para dar uma ideia das capacidades do JxBrowser:

  • Extensões do Chrome.
  • Tirando capturas de tela.
  • Impressão.
  • Preenchimento automático de formulários.
  • Protocolos personalizados.
  • Controle do tráfego HTTP.
  • Autenticação avançada (incluindo NTLM, certificados de cliente SSL, SuisseID, U2F, Autenticação integrada do Windows e Kerberos).
  • e mais.

Controle sobre o navegador 

É preciso uma simples linha para criar um browser SWT: new Browser(...). Mas a simplicidade desta linha esconde a complexidade da tecnologia atual. Os navegadores subjacentes são projetos muito complexos. Têm diferentes modelos de processo, caraterísticas de segurança e as suas próprias abordagens à integração noutras plataformas, como o SWT.

Quando as necessidades são simples, queremos que esta complexidade seja ocultada. No entanto, pode ser necessário um maior controle sobre o navegador quando as coisas se tornam sérias. A hierarquia de conceitos fornecida pela API JxBrowser te concede este controle.

O diagrama da arquitetura do JxBrowser

A arquitetura do JxBrowser.

Você inicia o processo principal do Chromium criando um Engine. Se você precisar de cinco processos principais, crie cinco instâncias do Engine. Os objetos criados num motor estão fisicamente isolados dos outros motores.

Em cada motor, existe um ou mais Profiles. Estes são perfis do Chromium que permitem manter todos os dados e definições do navegador separados. Você pode gerenciar o cache, o proxy, a rede, os downloads, as permissões, e outras funcionalidades ao nível do perfil.

Dentro de um perfil, você cria múltiplas instâncias do Browser — pense nelas como tabs no Chromium. Estes são os navegadores reais que permitem navegar, enviar eventos de mouse e teclado, fazer capturas de tela, abrir DevTools e fazer outras coisas. O browser é totalmente funcional mesmo quando não é visível para o usuário, uma vez que a renderização ocorre na memória por padrão. Para mostrar o navegador, utilize BrowserView.

Finalmente, podem existir múltiplas instâncias de Frame num browser. Eles representam quadros reais na página e te permitem trabalhar com JavaScript e DOM.

Ferramentas para programadores 

A API SWT Browser não tem noção de ferramentas de desenvolvimento, mas pode conectar as do Microsoft Edge ou Safari à instância do Browser. As ferramentas do desenvolvedor não estão disponíveis no Linux neste momento.

O JxBrowser fornece uma API para abrir o DevTools do Chromium, que funciona em todos os sistemas operacionais. Você também pode instalar extensões de ferramentas de programador para qualquer biblioteca JavaScript e ter uma experiência de programador nativa, tal como no Google Chrome.

Capturas de tela de DevTools com extensões React abertas

DevTools com a extensão React no JxBrowser.

Testes automatizados 

O teste automatizado de conteúdos Web carregados no SWT Browser é atualmente impossível.

O JxBrowser é compatível com estruturas de teste automatizadas que suportam o protocolo Chromium DevTools, como o Selenium, o Puppeteer ou o Playwright.

Suporte e assistência 

Uma vez que o SWT é um projeto de código aberto, você pode sempre contar com a comunidade. Se você encontrar um bug ou pensar numa funcionalidade interessante, compartilhe as suas descobertas em GitHub, e sinta-se à vontade para contribuir.

O JxBrowser é um produto comercial criado para empresas com prazos e requisitos elevados para software de terceiros e fornecedores. Oferecemos um sistema de helpdesk privado onde os relatórios dos clientes permanecem confidenciais. O tempo de resposta garantido para a primeira resposta ou SLA, é de um dia útil.

O suporte técnico inclui ajuda na utilização do produto, assistência na resolução de problemas, correção de erros e análise de pedidos de funcionalidades. Todos os seus pedidos de suporte serão processados diretamente pelos engenheiros de software do JxBrowser.

Spinner

Enviando…

Desculpe, o envio foi interrompido

Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.

Leia e aceite os termos para continuar.

A sua chave de avaliação pessoal de JxBrowser e o guia de início rápido chegarão à sua caixa de entrada de e-mail dentro de alguns minutos.