发布日期 2024年03月29日

JxBrowser 8.0.0 EAP

本页面按逆时间顺序列出了 JxBrowser 8.0.0 EAP(早期访问计划)版本的完整发布历史。

若要将最新的 8.0.0 EAP 构建依赖项添加到您的项目中,请将以下内容添加到您的项目配置中:

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

jxbrowser {
    // 最新的 JxBrowser EAP 版本。
    version = "8.0.0-eap.2"

    // 将包含 JxBrowser EAP 构建的仓库添加到项目中。
    includePreviewBuilds()
}

dependencies {
    // 添加与 Compose UI 工具包集成的依赖项。
    implementation(jxbrowser.compose)
    // 添加与 SWT UI 工具包集成的依赖项。
    implementation(jxbrowser.swt)
    // 添加与 Swing UI 工具包集成的依赖项。
    implementation(jxbrowser.swing)
    // 添加与 JavaFX UI 工具包集成的依赖项。
    implementation(jxbrowser.javafx)

    // 检测当前平台并添加相应的 Chromium 二进制文件。
    implementation(jxbrowser.currentPlatform)
}
<repositories>
    <!-- 将包含 JxBrowser 预览构建的存储库添加到项目中。-->
    <repository>
        <id>teamdev-preview</id>
        <url>https://europe-maven.pkg.dev/jxbrowser/eaps</url>
    </repository>
</repositories>

<dependencies>
    <!-- 添加对包含 Chromium 二进制文件的构件的依赖项。-->
    <dependency>
        <groupId>com.teamdev.jxbrowser</groupId>
        <artifactId>jxbrowser-cross-platform</artifactId>
        <version>8.0.0-eap.2</version>
        <type>pom</type>
    </dependency>

    <!-- 添加与 Swing UI 工具包集成的依赖项。-->
    <dependency>
        <groupId>com.teamdev.jxbrowser</groupId>
        <artifactId>jxbrowser-swing</artifactId>
        <version>8.0.0-eap.2</version>
        <!-- 
           其他可用的选项有:
             - jxbrowser-compose
             - jxbrowser-javafx
             - jxbrowser-swt
        -->
    </dependency>
</dependencies>

欲了解更多关于此主要版本计划的增强功能,请访问 JxBrowser 发展规划

v8.0.0-eap.2

Kotlin DSL

Kotlin API 已经扩展了用于组装 Engine 实例的功能,以允许配置 Java EngineOptions.Builder 可用的所有选项。以下代码演示了如何使用 Kotlin DSL 创建具有指定选项的 Engine 实例:

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

现在,BrowserSettings 的 Kotlin API 提供了用于声明式配置的变量属性。它允许您以更简洁、更易读的方式配置浏览器设置。以下代码演示了如何使用 Kotlin DSL 配置浏览器设置:

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

Compose Desktop

我们改进了与 Compose Desktop UI 工具包的集成。JxBrowser 现在默认支持输入法编辑器(IME)并显示弹出窗口。

JxBrowser Compose Desktop IME

Chromium 123.0.6312.124

我们已将 Chromium 升级至最新版本,该版本引入了多项安全修复,可防止远程攻击者在攻破 GPU 进程后通过特定的 UI 手势潜在地执行沙箱逃逸,以及通过精心制作的 HTML 页面潜在地利用堆损坏漏洞。这些安全修复包括:

如需查看 Chromium 123.0.6312.124 版本中的完整修复和改进列表,请访问以下版本的产品博客文章:

v8.0.0-eap.1

这是 JxBrowser 下一个主要版本的第一个 EAP 构建。在此构建中,我们引入了以下新功能:

Java 17

Java 17 是 JxBrowser 8.0.0 所需的最低 JVM 版本。

Kotlin DSL

现在,得益于 Kotlin DSL,您在使用 JxBrowser API 时可以编写更简洁易读的 Kotlin 代码。

要将 Kotlin DSL 添加到您的项目中,请将以下内容添加到您的项目配置中:

dependencies {
    // 添加用于与 JxBrowser API 协同工作的 Kotlin DSL 依赖项。
    implementation(jxbrowser.kotlin)
}
<!-- 添加与 JxBrowser API 协同工作的 Kotlin DSL 的依赖项。-->
<dependency>
    <groupId>com.teamdev.jxbrowser</groupId>
    <artifactId>jxbrowser-kotlin</artifactId>
    <version>[8.0.0-eap,]</version>
</dependency>

以下是一个示例,展示如何使用 Kotlin DSL 来创建和配置 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

我们新增了对另一个 Java UI 工具包的支持 — Compose Desktop。现在,您可以将 JxBrowser 的 BrowserView 嵌入到 Compose Desktop 应用程序中,并使用现代 UI 工具包构建跨平台的现代桌面应用程序。

要将 JxBrowser Compose Desktop 依赖项添加到您的项目中,请将以下内容添加到您的项目配置中:

dependencies {
    // 添加与 Compose UI 工具包集成的依赖项。
    implementation(jxbrowser.compose)
}
<!-- 添加与 Compose UI 工具包集成的依赖项。-->
<dependency>
    <groupId>com.teamdev.jxbrowser</groupId>
    <artifactId>jxbrowser-compose</artifactId>
    <version>[8.0.0-eap,]</version>
</dependency>

下面是一个示例,展示了如何将 JxBrowser 的 @composable BrowserView 组件嵌入到 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