List icon 目录

发布日期 2015年12月14日

JxBrowser 6.0

本页将引导您了解 JxBrowser 6.0 中的主要新功能和改进。

GPU 加速渲染

除了标准的轻量级(离屏)渲染模式外,现在 JxBrowser 还支持重量级(窗口化、GPU 加速)渲染模式。这两种模式的区别描述如下。

在轻量级渲染模式下,Chromium Engine 使用 CPU 离屏渲染网页。网页的图像保存在共享内存中。JxBrowser 从共享内存中读取图像,并使用标准的 Java Graphics 2D API 显示它。如果你需要一个真正轻量级的 Swing/JavaFX 组件来显示现代 HTML5/JavaScript/CSS 网页,这种方法效果很好。

要使用轻量级渲染模式创建 Browser 实例,可以使用以下代码:

Browser browser = new Browser(BrowserType.LIGHTWEIGHT);

在 JxBrowser 6 中默认采用的重量级渲染模式下,我们将本机窗口嵌入 Java 框架并配置 Chromium Engine 以使用 GPU 将内容渲染到此本机窗口中。在这种情况下,GPU 加速渲染比轻量级渲染模式要快得多。在此模式下,渲染性能与 Google Chrome 相同,允许以 60fps 的速度显示全屏视频。

要使用重量级渲染模式创建 Browser 实例,请使用以下代码:

Browser browser = new Browser();
Browser browser = new Browser(BrowserType.HEAVYWEIGHT);

JavaScript-Java bridge

性能

Java 和 JavaScript 之间的数据传输现在快了约 10 倍

JSArray 与 JSDictionary

在 JxBrowser 6 中,JavaScript-Java Bridge API 允许从 JavaScript 向 Java 代码传输数组和词典,反之亦然。以下示例演示了如何使用 JSArray:

browser.registerFunction("MyFunction", new BrowserFunction() {
    public JSValue invoke(JSValue... args) {
        // 返回 ['Str', 123, true] 数组
        List array = new ArrayList();
        array.add("Str");
        array.add(123);
        array.add(true);
        return JSValue.create(array);
    }
});

Proxy API

JxBrowser 6 中的 Proxy API 已得到改进。现在它支持 HTTP、HTTPS、FTP 和 SOCKS 协议。以下示例演示了如何使用更新后的 Proxy API:

String proxyRules = "http=foo:80;https=foo:80;ftp=foo:80;socks=foo:80";
String exceptions = "<local>";  // 绕过本地网页的代理服务器
contextParams.setProxyConfig(new CustomProxyConfig(proxyRules, exceptions));

BrowserContextParams contextParams = new BrowserContextParams("chromium-data-dir");
Browser browser = new Browser(new BrowserContext(contextParams));

CJK 输入

在 Mac OS X 和 Windows 上启用重量级模式后,JxBrowser 组件现在允许 CJK 输入,与 Google Chrome 类似。这种输入默认是启用的。

CJK 输入示例

完整的更改和改进列表

  • 添加了重量级 GPU 加速渲染模式。
  • 添加了对 Citrix 环境的支持。
  • 添加了代理功能中对 SOCKS 协议的支持。
  • 添加了对 Maven 项目的支持。请参见有关如何在 Maven 项目中使用 JxBrowser 的说明。
  • 在 JavaScript Java Bridge API 中添加了 JSArray 和 JSDictionary 类型。
  • 改进了 JavaScript Java Bridge 的性能。现在速度快了约 10 倍。
  • 添加了通过 JavaScript Java Bridge 将 JSON 字符串传递到 JavaScript 端的支持。
  • 实现了 NetworkDelegate.onPACScriptError() 事件。
  • 实现了对 Windows 和 Mac 上无障碍功能的支持 [heavyweight, swing, javafx]。
  • 添加了对 Windows 和 Mac 上的 CJK 输入的支持 [heavyweight, swing, javafx]。
  • 添加了对 --disable-direct-write 切换器的支持 [heavyweight]。
  • 实现了对 SWT 环境的支持 [heavyweight, swing, javafx]。
  • 修复了在 Mac 上丢失移动光标的问题 [lightweight, swing, javafx]。
  • 修复了在 Mac 上错误的按键代码问题 [lightweight, swing, javafx]。
  • 修复了 cursors.properties 文件中光标名称错误的问题 [lightweight, swing, javafx]。
  • 修复了自定义光标位置错误的问题 [lightweight, swing]。
  • 修复了 DOMEventListener 中目标不正确的问题。
  • 修复了 vimeo.com 上的视频无法播放的问题。
  • 修复了在按下 Alt 键时仍然可以输入文本的问题 [lightweight]。
  • 修复了页数为 0 时打印为 PDF 失败的问题。
  • 修复了关闭 PDF 文档弹出窗口导致崩溃的问题 [heavyweight, swing, javafx]。
  • 修复了点击 BrowserView 控件时菜单项未关闭的问题 [heavyweight, swing, javafx]。
  • 修复了 Browser 显示默认 SSL 证书对话框时的死锁问题 [heavyweight, swing, javafx]。
  • 修复了无法为多个 Browser 实例配置各自代理设置的问题。
  • 修复了在 Mac 上使用 JxBrowser 的 Java Applet 时出现的 NoSuchMethodException 问题 [heavyweight, lightweight, swing, javafx]。
  • 修复了 BrowserPreferences.getDefaultAcceptLanguage() 方法中的 NullPointerException 问题。
  • 默认情况下,Chromium UI 语言配置与 Java UI 语言一致。
  • JAR 清单文件中的 Trusted-Library 属性已被移除。
  • 在 Windows 上已禁用 debug.log 文件生成。
  • 在 Linux 上添加了 libcrypto.so.1.0.0 的符号链接。
  • 在 Windows 上,如果 Chromium 进程发生本地崩溃,库会生成 jxbrowser-chromium.dmp 文件,并将其存储在 %localappdata%\JxBrowser 目录中,例如 c:\users\<username>\appdata\local\JxBrowser\jxbrowser-chromium.dmp

请发送电子邮件至 customer-care@teamdev.com 以获取 JxBrowser 6.0 的下载链接。