OpenJFX_01_JavaFX 11发布说明

原文位于:https://github.com/javafxports/openjdk-jfx/blob/jfx-11/doc-files/release-notes-11.md#release-notes-for-javafx-11

2018年9月18日版本。

 

介绍

下面描述了这个发布版的重要改变和相关信息。在一些描述中提供了问题或改动相关的细节信息链接。

在JDK11中JavaFX模块不再随JDK一起发布。此发布说明涵盖了独立的JavaFX11发布版。JavaFX11需要JDK10(必须是一个OpenJDK构建)或JDK11,我们建议使用JDK11。

重要改动

运行JavaFX应用程序

现在JDK中不再包含JavaFX,因此需要指明在应用程序中引用JavaFX模块。请参考开始使用JavaFX11(Getting Started with JavaFX 11)页面来了解情况。

Spinner控件新增API来自定义数值改变延时参数

在JavaFX11中可以在Spinner控件的箭头按钮上持续按住鼠标,直至控件数值变化,这个持续按住鼠标的时间参数的默认值被修改了。新增了两个属性:”initialDelay”和”repeatDelay”来配置此行为。

  • initialDelay: 在下一个值变化前,在箭头按钮上必须按住的持续时间。默认值为300毫秒。
  • repeatDelay:在第一个值变化后,引起后续值继续变化的鼠标持续按下时长。默认值是60毫秒。

参考 JDK-8167096 来了解更多信息。

独立的javafx模块默认不再具有权限

javafx.* 模块现在由应用程序类加载器(Application Class Loader)加载并且默认不再具有权限。希望在安全管理器(Security Manager)启用的情况下运行的应用程序需要指定一个自定义的策略文件,使用”-Djava.security.policy”选项来向所有的javafx.*模块授权。

参考 JDK-8210617 来了解更多信息。

切换默认的 GTK版本到3

在Linux平台上如果存在gtk3库,则现在JavaFX会默认使用GTK3,而在JavaFX11之前会默认使用GTK2库,这与JDK11中AWT的默认情况匹配。

参考来JDK-8198654了解更多信息。

新特性

下面描述了JavaFX11中的一些改进点。参考本发布说明最后的列表来了解完整的清单。

下面描述了JavaFX11中的一些改进点。参考本发布说明最后的列表来了解完整的清单。

FX Robot API

添加了公开的(public)FX Robot API来模拟用户交互,例如键盘输入按键、使用鼠标以及捕获图形信息。参考 JDK-8090763 来了解更多信息。

移除的特性和选项

移除了对libavcodec 53和55的支持

FX Media support for 对libavcodec 53 和 55的FX Media支持已经被移除了。在支持的Linux平台上,默认情况下这些库不再存在,并且也不再需要。

参考JDK-8194062来了解更多信息。

已知问题

在Ubuntu 18.04上使用OpenJDK11和Wayland时JavaFX会崩溃

在Ubuntu 18.04 Linux机器上,当XWayland window service被启动的时候JavaFX 会崩溃。默认情况下JavaFX 11会在Linux上使用GTK3,而当FX window toolkit代码用到GTK3时会发生此崩溃问题。

建议的应急方案是当运行JavaFX应用程序时,使用Xorg server来替代Wayland server。注意Wayland并不被JDK 10或JDK 11所支持。

一个替代应急方案是指定强制使用GTK2,实现方式是通过在命令行传递如下系统属性:

java -Djdk.gtk.version=2 …

参考JDK-8210411 来了解更多信息。

在使用JDK 10时Swing互操作需要对应的exports配置

在使用JavaFX11和OpenJDK 10发布版时,如果要运行FX/Swing互操作应用程序,则需要在java命令行中添加如下对应的exports配置:

参考 JDK-8210615来了解更多信息。

当使用一个由jlink创建的迷你JDK镜像时Swing互操作失败

如果使用jlink创建的迷你Java镜像中包含了来自JavaFX 11 jmods bundle中的javafx.swing模块,在运行FX/Swing互操作应用程序时它会产生失败。例如,一个按照如下方式创建的镜像将会无法工作:

 

 

Javafx.swing模块依赖一个JDK11中的新的jdk.unsupported.desktop模块,它必须被明确添加进来或者通过–bind-services选项包含进来。

替代方案:使用下列两种方法之一来创建你的镜像:

参考 JDK-8210759来了解更多信息。

修复的Bug清单

Issue key 摘要

子组件

JDK-8203345 当Sceen Reader启用时,VirtualFlow中的内存泄漏。 可访问性(accessibility)
JDK-8204336 当一个嵌套的事件循环被激活时,Platform.exit()抛出ISE。 应用程序生命周期(application-lifecycle)
JDK-8089454 [HTMLEditor]的选中移除了CENTER对齐设置。 控件
JDK-8154039 当选中一个没有被包含在TabPane::getTabs()中的tab时出现内存泄漏。 控件
JDK-8157690 [TabPane]对tab进行排序会使得tab选中菜单变空。 控件
JDK-8165459 HTMLEditor: 剪贴板工具栏按钮被异常禁用 控件
JDK-8185854 一个在TabPane中的带有自定义皮肤的不可编辑的ComboBox中出现NPE。 控件
JDK-8187432 ListView: 在启动时的EditEvent带有不正确的索引值。 控件
JDK-8192800 表格自动改变大小(Auto Resize)忽略了列的Resize策略。 控件
JDK-8193311 [Spinner] 当输入ENTER时默认按钮没有被激活。 控件
JDK-8193495 在进行一次快速的移除和增加操作后,TabPane没有正常地更新在header区域的tab位置。 控件
JDK-8194913 当一个Pane被添加到一个ToolBar中时,焦点转移被终止。 控件
JDK-8196827 test.javafx.scene.control.ComboBoxTest – 产生 NullPointerException 控件
JDK-8197846 ComboBox:在移除和重新添加后,变得无法被点击(unclickable)。 控件
JDK-8197985 在ListView中按下 Shift + DOWN键会导致抛出异常。 控件
JDK-8200285 TabDragPolicy.REORDER阻止ContextMenu显示。 控件
JDK-8201285 在带有disable=true的DateCell被重用时,DateCell文本颜色没有被正常更新 控件
JDK-8208610 在FXMLLoader::getDefaultClassLoader中调用类时存在不正确的检查。 fxml
JDK-8129582 在Linux系统上,显示RTL语言(RTL-languages)文本时控件反映特别慢。 绘图
JDK-8195801 在MarlinFX 中,使用sun.misc.Unsafe来替换jdk.internal.misc.Unsafe。 绘图
JDK-8195802 在javafx.绘图中不再使用jdk.internal.misc安全工具包。 绘图
JDK-8195806 在javafx.graphics中不再依赖sun.font.lookup 绘图
JDK-8195808 在javafx.graphics中不再依赖sun.print 绘图
JDK-8196617 在某些环境中FX 打印测试会出现NPE失败 绘图
JDK-8198354 [macOS]

在折叠显示字符的Label中,泰国文字被损坏

绘图
JDK-8201231 当 WindowStage.setPlatformEnabled时会产生java.lang.NullPointerException 绘图
JDK-8202396 在 ios本地化的imageloader中会出现内存泄漏 绘图
JDK-8202743 虚线笔画(Dashed Stroke)会出现随机的不正常绘制,可能会导致应用程序失去响应。 绘图
JDK-8203378 当FX与OpenJDK一起构建时,JDK构建会在编译javafx.graphics module-info.java时失败 绘图
JDK-8203801 PrismLoaderGlue.stg 文件中出现Missing Classpath异常。 绘图
JDK-8207328 javafx.css.Stylesheet的API文档是不准确/错误的 绘图
JDK-8209191 [macOS]复杂文字渲染发生扭曲 绘图
JDK-8088722 GSTPlatform无法播放带有多音轨的MP4文件 多媒体
JDK-8191446 [Linux]为构建openjfx而构建并发布了libav媒体包 多媒体
JDK-8193313 MediaPlayer存在本地内存泄漏 多媒体
JDK-8195803 sun.nio.ch.DirectBuffer in 在javafx.media中不再使用sun.nio.ch.DirectBuffer 多媒体
JDK-8198316 在macOS High Sierra 10.13.2上播放m3u8文件时MediaPlayer崩溃 多媒体
JDK-8199008 [macOS, Linux] 实例化 MediaPlayer会导致CPU的使用率超过100% 多媒体
JDK-8199527 将GStreamer升级到 多媒体
JDK-8202393 App Transport Security blocks http media on 在带有使用新的编译器构建的JDK的macOS上,App Transport Security会阻止http媒体运行 多媒体
JDK-8191661 在 Win32 HiDPI上的FXCanvas会产生错误的结果 其他
JDK-8193910 在cssref.html和 introduction_to_fxml.html中的版本号是错误的 其他
JDK-8195799 在javafx modules中,使用System logger来替代platform logger 其他
JDK-8195800 在javafx modules中去除对sun.reflect.misc的依赖 其他
JDK-8195974 将Javafx中对java.util.logging的使用替代为使用System logger 其他
JDK-8196297 移除过时的JFR logger代码 其他
JDK-8199357 移除FX中对applet和Java Web Start的引用 其他
JDK-8200587 修复了FX API文档中的一些错误 其他
JDK-8202036 对OpenJFX的License文件进行了升级,使之与OpenJDK的License文件匹配 其他
JDK-8202357 在 ModuleHelper.java的版权声明中存在多余字符 其他
JDK-8204653 修复了FX API文档中的一些错误 其他
JDK-8204956 Cleanup whitespace after fix for JDK-8200285

在修复JDK-8200285之后,清理空格

其他
JDK-8207794 当FXCanvas被重绘时,FXCanvas未更新EmbeddedStageInterface的x/y值。 其他
JDK-8208294 在使用jrt protocol时,安装本地库失败 其他
JDK-8180151 JavaFX错误地渲染带有两个特定尺寸的3D盒子的场景图(Scenegraph) 场景图(scenegraph)
JDK-8192056 从一个Group或容器中移出javafx.scene.shape.Sphere-objects时会发生内存泄漏 场景图(scenegraph)
JDK-8205008 带有单独Vec3d参数的GeneralTransform3D变换函数会产生错误结果 场景图(scenegraph)
JDK-8207377 对带有HiDPI的 Robot::getPixelColor方法的行为进行文档说明 场景图(scenegraph)
JDK-8201291 点击一个设置了setFocusable(false) 的JFXPanel时,会导致它的processMouseEvent方法死循环 swing
JDK-8088769 在HtmlEditor中,透明色的阿尔法通道没有被显示。 web
JDK-8088925 带有透明背景的组件导致NumberFormatException web
JDK-8089375 在WebWorker文件不可访问时,脚本将会失败并且没有提示,或者会产生异常 web
JDK-8147476 MathML token元素的渲染问题 web
JDK-8193368 [OS X]移除冗余文件 web
JDK-8193590 在使用带有Tooltip的WebView时发生内存泄漏 web
JDK-8194265 当使用FileReader读取文件时Webengine (webkit)崩溃 web
JDK-8194935 合并GTK WebKit 2.18.5 的改变 web
JDK-8195804 移除java.base中的没用的export声明,将其替换为exports sun.net.www to javafx.web; web
JDK-8196011 在JFXPanel应用程序中使用WebView时会发生间歇性崩溃 web
JDK-8196374 在windows x86平台上webview-icu的 isAlphaNumericString方法发生崩溃 web
JDK-8196677 合并 GTK WebKit 2.18.6 改变 web
JDK-8196968 在JNIEnv_::CallObjectMethod方法中退出时会发生崩溃 web
JDK-8197987 将libxslt的版本更新至1.1.32 web
JDK-8199474 将WebKit的版本更新为606.1 web
JDK-8200418 webPage.executeCommand(“removeFormat”, null)移除了body元素的样式 web
JDK-8200629 将SQLite的版本更新为3.23.0 web
JDK-8202277 由于依赖javafx.swing,当独立使用FX时对WebView中的图片进行截取时会失败 web
JDK-8203698 当访问特定网站时,JavaFX WebView崩溃 web
JDK-8204856 在PAGE_REPLACED事件之后,WebEngine文档会变成null web
JDK-8206899 在运行’dom/html/level2/html/AppletsCollection.html’时,DRT会随机崩溃 web
JDK-8206995 移除无用的WebKit文件 web
JDK-8208114 在Webview中拖放文本内容和URL链接的功能有问题 web
JDK-8208622 [WebView] 在控件中调用API打印html会产生IllegalStateException web
JDK-8209049 合并GTK WebKit 2.20.4 的变化 web
JDK-8163795 [Windows]移除在本地的GetScreenCapture方法中对对StretchBlt调用 window-toolkit
JDK-8191885 [MacOS]在MacOS上,从全屏模式恢复的JavaFX主窗口无法改变大小 window-toolkit
JDK-8196031 在带有HiDPI的Windows 10 1709 上,FX Robot的mouseMove会失败 window-toolkit
JDK-8199614 [macos] ImageCursor.getBestSize()抛出 NullPointerException异常 window-toolkit
JDK-8204635 [Linux] 在gtk GlassRobot.cpp 中的getMouseX, getMouseY函数忽略了HiDPI 情况 window-toolkit
JDK-8207372 在Linux和Mac上Robot.mouseWheel没有被正常实现 window-toolkit

改进功能清单

Issue key 摘要 子组件
JDK-8205919 创建了工件(Artifact)和功能并将它们提交到了Maven Central库中。 构建
JDK-8167096 为Spinner控件增加了API来对触发控件值连续变化需要的鼠标按下时长进行自定义 控件
JDK-8177380 在ColorPicker调色板中增加标准颜色 控件
JDK-8186187 修改 public API StyleConverter.getEnumConverter()的返回值类型 控件
JDK-8204621 将 MarlinFX 升级到0.9.2 graphics
JDK-8090763 FX Robot API scenegraph
JDK-8130379 增强了Bounds类,为其增加了getCenter方法 scenegraph
JDK-8195811 提供了public API来支持FX与Swing的互操作 swing
JDK-8198654 将FX的默认GTK版本切换到3 window-toolkit

 

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: https://www.javafxchina.net/blog/2019/02/openjfx_01_javafx-11%e5%8f%91%e5%b8%83%e8%af%b4%e6%98%8e/
百度未收录