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 7 de outubro de 2024
JxBrowser 8.0.0
Temos o prazer de anunciar o lançamento do JxBrowser 8.0.0!
Esta nova versão principal introduz uma série de novas funcionalidades e melhorias, incluindo Kotlin DSL, suporte para Compose Desktop, extensões Chrome, suporte para Windows ARM64, entrada através de toque, eventos DOM personalizados e muito mais. Agora, o JxBrowser requer Java 17 ou posterior.
Não alteramos significativamente a API, portanto, você pode facilmente migrar o seu código existente para a nova versão. No entanto, recomendamos que reveja o guia de migração para saber mais sobre as alterações e melhorias no JxBrowser 8.0.0.
Mais informações sobre os novos recursos e melhorias no JxBrowser 8.0.0 podem ser encontradas abaixo.
Kotlin DSL
Você pode escrever código Kotlin mais conciso e legível ao trabalhar com a API JxBrowser graças à DSL Kotlin. Para adicionar o Kotlin DSL ao seu projeto, adicione a seguinte dependência à configuração do seu projeto:
dependencies {
// Adiciona uma dependência ao Kotlin DSL para trabalhar com a API do JxBrowser.
implementation(jxbrowser.kotlin)
}
<!-- Adiciona uma dependência ao Kotlin DSL para trabalhar com a API do JxBrowser. -->
<dependency>
<groupId>com.teamdev.jxbrowser</groupId>
<artifactId>jxbrowser-kotlin</artifactId>
<version>8.0.0</version>
</dependency>
Aqui está um exemplo de como você pode usar o Kotlin DSL para criar e configurar uma instância Engine
:
val engine = Engine(RenderingMode.HARDWARE_ACCELERATED) {
options {
license = JxBrowserLicense("your_license_key")
language = Language.GERMAN
remoteDebuggingPort = 9222
schemes {
add(Scheme.JAR, InterceptJarRequestCallback())
}
}
}
val browser = engine.newBrowser()
Compose Desktop
Adicionamos o suporte de mais um kit de ferramentas Java UI - Compose Desktop.
Agora, é possível incorporar o JxBrowser BrowserView
em aplicativos Compose Desktop e criar aplicativos desktop
multiplataforma modernos com um kit de ferramentas de interface do usuário moderno.
Para adicionar a dependência do JxBrowser Compose Desktop ao seu projeto, adicione a seguinte dependência à configuração do seu projeto:
dependencies {
// Adiciona uma dependência para integração com o kit de ferramentas de interface do usuário Compose.
implementation(jxbrowser.compose)
}
Aqui está um exemplo de como você pode incorporar o JxBrowser Compose BrowserView
em um aplicativo Compose Desktop:
fun main() = singleWindowApplication {
val engine = remember { createEngine() }
val browser = remember { engine.newBrowser() }
BrowserView(browser)
DisposableEffect(Unit) {
browser.navigation.loadUrl("google.com")
onDispose {
engine.close()
}
}
}
private fun createEngine() = Engine(RenderingMode.OFF_SCREEN) {
options {
license = JxBrowserLicense("your_license_key")
}
}
Exemplos da Galeria
Você pode dar uma olhada nos seguintes exemplos da Galeria do JxBrowser para ver como você pode integrar o JxBrowser com o Compose Desktop:
Extensões do Chrome
Agora, o JxBrowser fornece a API de extensões que permite instalar, atualizar, desinstalar e trabalhar com extensões do Chrome. Abre uma vasta gama de possibilidades para integrar as extensões do Chrome nas suas aplicações de ambiente desktop Java.
Com a API de extensões, pode:
- Obter uma lista de extensões instaladas;
- Instalar manualmente extensões do Chrome a partir da Chrome Web Store;
- Controlar quais as extensões que podem ser instaladas manualmente pelos usuários;
- Instalar programaticamente extensões do Chrome a partir de arquivos CRX;
- Desinstalar programaticamente extensões que foram instaladas a partir da Chrome Web Store ou de arquivos CRX;
- Controlar quais as extensões que podem ser desinstaladas manualmente pelos usuários;
- Obter notificações quando uma extensão é instalada, atualizada ou desinstalada;
- Apresentar popups de extensões;
- Simular cliques no ícone da extensão e muito mais.
Pode ler mais sobre como trabalhar com extensões do Chrome no guia Extensões.
Windows ARM64
Agora, o JxBrowser suporta Windows ARM64. Você pode executar aplicações JxBrowser em dispositivos Windows ARM64, como o Microsoft Surface Pro X ou qualquer dispositivo Copilot+ PC, e beneficiar do desempenho melhorado e da duração da bateria que os dispositivos ARM64 proporcionam.
Para executar o JxBrowser no Windows ARM64, é necessário adicionar a seguinte dependência à configuração do seu projeto Gradle ou Maven:
dependencies {
implementation(jxbrowser.winArm)
}
<dependency>
<groupId>com.teamdev.jxbrowser</groupId>
<artifactId>jxbrowser-win64-arm</artifactId>
<version>8.0.0</version>
</dependency>
Entrada tátil
Agora é possível enviar e tratar de forma programática eventos de toque nos modos de renderização fora de tela e acelerada por hardware no Windows e no Linux. Isso pode ser útil quando é necessário simular a entrada de toque em testes automatizados ou quando é necessário tratar eventos de toque na sua aplicação.
O código seguinte demonstra como enviar programaticamente um evento de toque iniciado:
browser.dispatch(TouchStarted.newBuilder(
List.of(TouchPoint.newBuilder(1, Point.of(20, 30), STARTED)
.positionInWidget(Point.of(20, 30))
.force(0.5F)
.radiusX(50)
.radiusY(40)
.build()))
.build());
val event = TouchStarted(
touches = listOf(
TouchPoint(
id = 1,
state = STARTED,
positionInScreen = Point(20, 30),
positionInWidget = Point(20, 30),
force = 0.5F,
radiusX = 50F,
radiusY = 40F
)
)
)
browser.dispatch(event)
O código seguinte demonstra como tratar o evento de toque iniciado:
browser.set(StartTouchCallback.class, params -> {
var event = params.event();
var touches = event.touches();
var targetTouches = event.targetTouches();
var changedTouches = event.changedTouches();
var keyModifiers = event.keyModifiers();
return Response.proceed();
});
browser.register(StartTouchCallback { params ->
val event = params.event()
val touches = event.touches()
val targetTouches = event.targetTouches()
val changedTouches = event.changedTouches()
val keyModifiers = event.keyModifiers()
Response.proceed()
})
Você pode utilizar StartTouchCallback
para suprimir o evento de início de toque e impedir que este seja enviado para a página Web.
Eventos de toque do DOM
A API DOM do JxBrowser permite a você subscrever os eventos DOM touchstart
, touchmove
, touchcancel
e touchend
. O
código seguinte demonstra como subscrever os eventos de início de toque:
var useCapture = false;
element.addEventListener(EventType.TOUCH_START, event -> {
if (event instanceof TouchEvent touchEvent) {
touchEvent.touches().forEach(touch -> {
var id = touch.id();
var positionInWidget = touch.positionInWidget();
var positionInScreen = touch.positionInScreen();
var radiusX = touch.radiusX();
var radiusY = touch.radiusY();
var rotationAngle = touch.rotationAngle();
});
}
}, useCapture);
val eventType = EventType.TOUCH_START
val listener = Observer<Event> { event ->
if (event is TouchEvent) {
event.touches().forEach { touch ->
val id = touch.id()
val positionInWidget = touch.positionInWidget()
val positionInScreen = touch.positionInScreen()
val radiusX = touch.radiusX()
val radiusY = touch.radiusY()
val rotationAngle = touch.rotationAngle()
}
}
}
val useCapture = false
element.addEventListener(eventType, listener, useCapture)
Eventos DOM personalizados
Agora é possível criar e enviar eventos DOM personalizados. O código seguinte demonstra como criar e enviar um evento personalizado:
var eventType = EventType.of("WebViewReady");
var eventParams = CustomEventParams.newBuilder(document)
.detail("true")
.build();
var event = document.createCustomEvent(eventType, eventParams);
val eventType = EventType.of("WebViewReady")
val eventParams = CustomEventParams(
document = document,
payload = "true"
)
val event = document.createCustomEvent(eventType, eventParams)
Senhas, cartões de crédito, perfis de dados de usuários
Agora você pode adicionar senhas, cartões de crédito e perfis de dados do usuário às lojas correspondentes de forma programática. Nas versões anteriores, estes dados só podiam ser adicionados ao armazenamento através da interação do usuário com o navegador, quando este solicitava ao usuário que salvasse os dados.
O código seguinte demonstra como adicionar uma senha ao armazenamento de senhas de forma programática:
var url = "https://company.com";
var login = "login";
var password = "password";
var passwords = profile.passwordStore();
passwords.add(PasswordRecord.newBuilder(url, password).login(login).build());
val passwords = profile.passwordStore()
passwords.add(
PasswordRecord(
url = "https://company.com",
login = "login",
password = "password"
)
)
Atualizações do JxBrowser 7
Continuaremos a atualizar o Chromium no JxBrowser 7 durante 12 meses após o lançamento do JxBrowser 8.0.0. O suporte para novas versões de Java e sistemas operacionais, novas funcionalidades, melhorias e correções de erros estarão disponíveis apenas no JxBrowser 8. Recomendamos que atualize para o JxBrowser 8 para se beneficiar das novas funcionalidades e melhorias.
Como atualizar
Se você tiver uma licença JxBrowser válida com suporte ativo e subscrição de atualizações, você pode atualizar para o JxBrowser 8.0.0 gratuitamente.
Você pode atualizar o JxBrowser no seu projeto alterando a versão da dependência do JxBrowser na configuração do projeto Gradle ou Maven.
Se você tiver alguma dúvida ou precisar de ajuda com a atualização, não hesite em nos contatar.
Baixe o JxBrowser 8.0.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.