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.
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.
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.
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.
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 Profile
s. 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.
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.
Enviando…
Desculpe, o envio foi interrompido
Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.
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.