List icon Conteúdo

Publicado em 29 de março de 2024

JxBrowser 8.0.0 EAP

Esta página contém um histórico completo das versões do JxBrowser 8.0.0 EAP em ordem cronológica inversa.

Para adicionar as dependências de compilação EAP 8.0.0 mais recentes ao seu projeto, adicione o seguinte à configuração do projeto:

plugins {
    id("com.teamdev.jxbrowser") version "1.1.0"
}

jxbrowser {
    // A versão EAP mais recente do JxBrowser.
    version = "8.0.0-eap.4"

    // Adiciona um repositório com compilações EAP do JxBrowser ao projeto.
    includePreviewBuilds()
}

dependencies {
    // Adiciona uma dependência para integração com o kit de ferramentas Compose UI.
    implementation(jxbrowser.compose)
    // Adiciona uma dependência para integração com o kit de ferramentas SWT UI.
    implementation(jxbrowser.swt)
    // Adiciona uma dependência para integração com o kit de ferramentas Swing UI.
    implementation(jxbrowser.swing)
    // Adiciona uma dependência para integração com o kit de ferramentas JavaFX UI.
    implementation(jxbrowser.javafx)

    // Detecta a plataforma atual e adiciona os binários Chromium correspondentes.
    implementation(jxbrowser.currentPlatform)
}
<repositories>
    <!-- Adiciona um repositório com versões de pré-visualização do JxBrowser ao projeto. -->
    <repository>
        <id>teamdev-preview</id>
        <url>https://europe-maven.pkg.dev/jxbrowser/eaps</url>
    </repository>
</repositories>

<dependencies>
    <!-- Adiciona dependências aos artefatos com binários do Chromium. -->
    <dependency>
        <groupId>com.teamdev.jxbrowser</groupId>
        <artifactId>jxbrowser-cross-platform</artifactId>
        <version>8.0.0-eap.4</version>
        <type>pom</type>
    </dependency>

    <!-- Adiciona uma dependência para integração com o toolkit de UI Swing. -->
    <dependency>
        <groupId>com.teamdev.jxbrowser</groupId>
        <artifactId>jxbrowser-swing</artifactId>
        <version>8.0.0-eap.4</version>
        <!-- 
           Outras opções disponíveis são:
             - jxbrowser-compose
             - jxbrowser-javafx
             - jxbrowser-swt
        -->
    </dependency>
</dependencies>

Para saber mais sobre as melhorias planeadas para esta versão principal, visite plano futuro do JxBrowser.

v8.0.0-eap.4

Extensões do Chrome

Agora, o JxBrowser fornece a API de extensões que lhe permite instalar, atualizar, desinstalar e trabalhar com extensões do Chrome. Isso abre uma vasta gama de possibilidades para integrar extensões do Chrome nas suas aplicações Java desktop.

Com a API de Extensões, é possível:

  • Obter uma lista das 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 as 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;
  • Receber notificações quando uma extensão for instalada, atualizada ou desinstalada;
  • Exibir pop-ups de extensão;
  • Simular cliques em ícones de extensão e muito mais.

JxBrowser Chrome Web Store

Você pode ler mais sobre como trabalhar com as extensões do Chrome no guia Extensões.

Compose Desktop

Adicionamos implementações padrões para as seguintes caixas de diálogo e pop-ups:

  • O diálogo de abertura de arquivo;
  • A caixa de diálogo para salvar o arquivo;
  • A caixa de diálogo para selecionar uma pasta;
  • A implementação padrão para o pop-up de extensão;
  • A implementação padrão para a ação de extensão pop-up;
  • A implementação padrão para o pop-up de sugestões que aparece quando você digita num campo de entrada e existem sugestões de preenchimento automático.

Chromium 126.0.6478.57

Atualizamos o Chromium para uma versão mais recente, que introduz várias correções de segurança que impedem um atacante remoto de explorar potencialmente a corrupção de heap através de uma página HTML forjada, incluindo:

Para obter a lista completa de correções e melhorias do Chromium na versão 126.0.6478.57, visite as publicações no blog do produto para as seguintes versões:

v8.0.0-eap.3

Chromium 125.0.6422.113

Actualizámos o Chromium para uma versão mais recente, que introduz várias correcções de segurança. Entre elas, uma correção para uma vulnerabilidade que tem explorações conhecidas:

Para obter a lista completa de correcções e melhorias do Chromium na versão 125.0.6422.113, visite as publicações no blogue do produto para as seguintes versões:

Diálogos e menus no Compose

Adicionámos implementações predefinidas para várias caixas de diálogo e menus, para que não tenha de o fazer:

  • Um menu de contexto de verificação ortográfica;
  • Diálogos de alerta, aviso e confirmação;
  • A caixa de diálogo antes de o browser ser descarregado;
  • Os diálogos para guardar e atualizar os cartões de crédito;
  • A caixa de diálogo para selecionar um certificado de cliente;
  • As caixas de diálogo para guardar e atualizar os perfis de utilizador e os cartões de crédito;
  • A caixa de diálogo quando o browser pretende abrir uma aplicação externa.

Além disso, mostraremos as seguintes caixas de diálogo do Chromium:

  • Uma caixa de diálogo de seleção de cores;
  • Uma caixa de diálogo de pré-visualização de impressão;
  • Uma caixa de diálogo para selecionar uma fonte de partilha de ecrã.

Sem mais opcionais em Kotlin

Na API do Java, temos muitos valores de retorno Optional. Isso é desnecessário para os desenvolvedores de Kotlin, então estendemos a API com métodos null-safe:

// Antes:
val input: Optional<Element> = element.findElementById("my-input")

// Depois:
val input: Element? = element.findById("my-input")

Alterações que geram incompatibilidade

Extraímos as operações com atributos de Element para um ElementAttributes semelhante a um mapa. Por exemplo, eis como atribuir um valor a um atributo antes e agora:

// Antes:
element.putAttribute("src", "https://example.com/image.png");

// Depois:
element.attributes().put("src", "https://example.com/image.png");

Em Kotlin, você pode acessar atributos usando o operador de indexação:

element.attributes()["src"] = "https://example.com/image.png"

Para ver todas as mudanças que quebram a compatibilidade, visite o guia de migração do JxBrowser 7 para 8.

v8.0.0-eap.2

Kotlin DSL

A API Kotlin para montagem de instância Engine foi estendida para permitir a configuração de todas as opções disponíveis para Java EngineOptions.Builder. O código a seguir demonstra como criar uma instância Engine com as opções especificadas usando o Kotlin DSL:

val engine = Engine(RenderingMode.HARDWARE_ACCELERATED) {
    options {
        passwordStore = PasswordStore.BASIC
        proprietaryFeatures = setOf(ProprietaryFeature.H_264)
        switches = listOf("--chromium-switch1", "--chromium-switch2")
    }
}

A API Kotlin para BrowserSettings agora fornece propriedades variáveis para configuração declarativa. Permite-lhe configurar as definições do browser de uma forma mais concisa e legível. O código a seguir demonstra como configurar as definições do navegador usando o Kotlin DSL:

browser.settings.apply {
    javascriptEnabled = false
    defaultFontSize = FontSizeInPixels.of(12)
    webRtcIpHandlingPolicy = DISABLE_NON_PROXIED_UDP
}

Compose Desktop

Melhorámos a integração com o kit de ferramentas Compose Desktop UI. O JxBrowser suporta agora o IME (Input Method Editor) e apresenta janelas pop-up por defeito.

JxBrowser Compose Desktop IME

Chromium 123.0.6312.124

Actualizamos o Chromium para uma versão mais recente, que introduz várias correcções de segurança que impedem que um atacante remoto que tenha comprometido o processo da GPU possa executar uma fuga da caixa de areia através de gestos específicos da IU, explorar potencialmente a corrupção de heap através de uma página HTML criada, incluindo:

Para obter a lista completa de correções e melhorias do Chromium na versão 123.0.6312.124, visite as publicações no blog do produto para as seguintes versões:

v8.0.0-eap.1

Esta é a primeira compilação EAP da próxima versão principal do JxBrowser. Nesta versão, introduzimos as seguintes novas funcionalidades:

Java 17

Java 17 é a versão JVM mínima necessária para o JxBrowser 8.0.0.

Kotlin DSL

Agora, você pode escrever códigos em Kotlin mais concisos e legíveis ao trabalhar com a API do JxBrowser graças ao Kotlin DSL.

Para adicionar o Kotlin DSL ao seu projeto, inclua o seguinte na 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 DSL do Kotlin para trabalhar com a API do JxBrowser. -->
<dependency>
    <groupId>com.teamdev.jxbrowser</groupId>
    <artifactId>jxbrowser-kotlin</artifactId>
    <version>[8.0.0-eap,]</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

Adicionámos o suporte de mais um kit de ferramentas Java UI - Compose Desktop. Agora, você pode incorporar o JxBrowser BrowserView em aplicativos Compose Desktop e criar aplicativos de 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, inclua o seguinte na configuração do seu projeto:

dependencies {
    // Adiciona uma dependência para integração com o toolkit de UI Compose.
    implementation(jxbrowser.compose)
}
<!-- Adiciona uma dependência para integração com o toolkit de UI Compose. -->
<dependency>
    <groupId>com.teamdev.jxbrowser</groupId>
    <artifactId>jxbrowser-compose</artifactId>
    <version>[8.0.0-eap,]</version>
</dependency>

Aqui está um exemplo de como você pode incorporar o componente @composable BrowserView do JxBrowser 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.HARDWARE_ACCELERATED) {
    options {
        license = JxBrowserLicense("your_license_key")
    }
}
Go Top