2024
- v7.41.4
- v8.1.0
- v8.0.0
- v7.41.3
- v7.41.2
- v7.41.1
- v7.41.0
- v7.40.0
- v7.39.2
- v7.39.1
- v7.39.0
- v7.38.2
- v7.38.1
- v7.38.0
- v7.37.2
- v7.37.1
2023
- v7.37.0
- v7.36.3
- v7.36.2
- v7.36.1
- v7.36
- v7.35.2
- v7.35.1
- v7.35
- v7.34.1
- v7.34
- v7.33.2
- v7.33.1
- v7.33
- v7.32
- v7.31.1
- v7.31
- v7.30.3
- v7.30.2
- v7.30
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
Publicado em 30 de maio de 2019
JxBrowser 7.0
Temos o prazer de lhe apresentar o JxBrowser 7. Esta versão principal traz muitas melhorias e novas funcionalidades para a API pública da biblioteca.
A API foi expandida com novas classes, interfaces, métodos, eventos e chamadas de retorno. Também redesenhamos algumas das partes da para impossibilitar a utilização incorreta da biblioteca.
A nova versão requer o JDK 1.8 ou superior. Nos permite trazer as funcionalidades do Java 8, como Optional, Lambda Expressions, Stream API, métodos estáticos em Interfaces, etc. para a API pública e para a implementação interna.
A arquitetura da biblioteca também foi melhorada. Agora é possível executar e controlar o ciclo de vida de várias instâncias do Chromium numa única aplicação Java. Cada instância do Chromium pode ser configurada com os seus próprios dados de usuário diretório, porta de depuração remota, idioma, etc. Esta alteração te permite criar e utilizar duas ou mais instâncias do Browser absolutamente independentes simultâneamente.
Arquitetura
A nova arquitetura tem a seguinte estrutura:
Com esta atualização introduzimos dois novos objetos: Engine
e Frame
.
O Engine
fornece o acesso à funcionalidade central do motor Chromium. O exemplo a seguir demonstra como
criar uma instância Engine
:
Engine engine = Engine.newInstance(
EngineOptions.newBuilder(RenderingMode.HARDWARE_ACCELERATED)
.userDataDir(Paths.get("/users/me/.jxbrowser/user_data"))
.language(Language.GERMAN)
.build());
Para cada instância do Engine
é utilizado um processo Chromium Main separado.
Cada página web carregada num Browser
tem um Frame
principal. O próprio Frame
pode ter frames filhos. Você pode usar Frame
para
acessar e trabalhar com DOM e JavaScript. Por exemplo:
browser.mainFrame().ifPresent(mainFrame ->
mainFrame.executeJavaScript("document.title = 'Hello';"));
Pré-visualização da impressão
Agora, quando o usuário ou o JavaScript imprime uma página Web, você pode ser apresentada uma caixa de diálogo padrão de Pré-visualização de Impressão. Você pode selecionar opções de impressão preferidas nesta caixa de diálogo:
JavaScript e DOM
Conversão automática de tipos
O JavaScript e o Java trabalham com tipos primitivos diferentes. O JxBrowser 7.0 implementa conversão automática de tipos de JavaScript para tipos Java e vice-versa. Agora você pode escrever o código como:
String title = frame.executeJavaScript("document.title");
double number = frame.executeJavaScript("123");
boolean bool = frame.executeJavaScript("true");
JsObject window = frame.executeJavaScript("window");
DOM wrappers
Com a conversão automática de tipos, agora você pode acessar objetos DOM JavaScript e trabalhar com eles através da DOM API do JxBrowser. Por exemplo:
Document document = frame.executeJavaScript("document");
E aqui está como você pode trabalhar com um objeto DOM JavaScript como com um objeto JavaScript:
JsObject document = frame.executeJavaScript("document");
Localização
Você pode configurar o Engine
com um dos
idiomas suportados utilizando o
seguinte código:
Engine engine = Engine.newInstance(
EngineOptions.newBuilder(RenderingMode.HARDWARE_ACCELERATED)
.language(Language.GERMAN)
.build());
Este exemplo configura o motor Chromium para utilizar o idioma alemão nas páginas de erro padrão:
Não são apenas as páginas de erro que suportam a localização. A mensagem dialogs também suporta a localização:
Rede
Com o JxBrowser 7.0 você pode emular um servidor Web, interceptando todos os requests de URL e fornecendo respostas URL personalizadas em de forma síncrona e assíncrona. O exemplo seguinte demonstra como enviar dados de resposta de forma assíncrona:
network.set(InterceptRequestCallback.class, params -> {
Options options = Options.newBuilder(params.urlRequest().id(), HttpStatus.OK)
.addHttpHeader(HttpHeader.of("Content-Type", "text/html"))
.build();
UrlRequestJob urlRequestJob = network.newUrlRequestJob(options);
new Thread(() -> {
urlRequestJob.write("<html><body>Text</body></html>".getBytes());
urlRequestJob.complete();
}).start();
return Response.intercept(urlRequestJob);
});
Segurança
@JsAccessible
O JxBrowser permite injetar objetos Java no JavaScript e invocar os seus métodos públicos a partir do código JavaScript. Por
razões de segurança do, apenas os métodos públicos anotados com @JsAccessible
podem ser acessados a partir do JavaScript. Os campos
do objeto Java não estão acessíveis. Se o JavaScript chamar o método que não existe no objeto Java injetado ou se o método
não for público e não tiver sido anotado, será lançada uma exceção JavaScript com uma mensagem de erro adequada.
O exemplo a seguir demonstra como injetar um objeto Java no JavaScript:
public class JavaObject {
@JsAccessible
public String sayHelloTo(String firstName) {
return "Hello, " + firstName + "!";
}
}
...
JsObject window = frame.executeJavaScript("window");
window.putProperty("java", new JavaObject());
Você pode então referir-se ao objeto e chamar o seu método a partir do código JavaScript:
console.log(window.java.sayHelloTo("John"));
Sandbox
A Sandbox no Windows agora está ativada por padrão.
Estas são apenas as alterações mais notáveis. Consulte o novo portal de documentação para obter a lista completa de funcionalidades e alterações no JxBrowser 7.0.
Características removidas
A partir desta versão, o JxBrowser deixa de suportar os JREs 1.6 e 1.7 da Oracle, os JREs da Apple e da IBM, o macOS 10.9, e OSGi.
Para lançarmos o JxBrowser 7.0 mais cedo, temporariamente abandonamos várias outras funcionalidades. Planejamos voltar a introduzi-las nas próximas versões.
Como migrar
A API da nova versão principal não é retrocompatível com a versão 6.x anterior. Assim, se a sua aplicação já utiliza o JxBrowser 6, consulte este guia de migração para obter instruções detalhadas sobre como alterar o seu código para funcionar com a versão 7.0.
Baixe o JxBrowser 7.0
Por favor, compartilhe seu e-mail conosco, e nós lhe enviaremos instruções para download.
Não foi possível enviar o e-mail. Por favor, use o link direto para baixar o JxBrowser.
Se você é um cliente registrado, não precisa fazer nada para usar esta atualização.
Se você deseja avaliar o produto, precisa de uma licença de avaliação.
Siga @JxBrowserTeam para obter todas as atualizações da biblioteca.
Se inscreva na nossa RSS feed para obter atualizações instantâneas sobre os novos lançamentos.
Inscreva-se para receber notificações sobre os lançamentos mais recentes.