浏览器中的JavaFX

本文介绍了将JavaFX引入浏览器的两个概念验证,通过Doppio JVM在JavaScript中运行JavaFX应用程序。虽然启动时间较长,但运行性能表现良好。第一个PoC使用软件渲染器,而第二个尝试利用HTML Canvas API,提供更快的渲染速度。未来计划继续开发更多原型以优化启动时间和功能支持。
摘要由CSDN通过智能技术生成
浏览器中的JavaFX屏幕截图

浏览器中的JavaFX屏幕截图

最近,Carl Dea和我启动了一个新项目,将JavaFX 8引入浏览器。

今天,我想介绍我们创建的前两个概念验证,以查看该想法是否完全可行。


对于不耐烦的人,这里是到PoC的链接。

但请注意,此时启动时间太恐怖了。

JavaFX应用程序启动之前,可能很容易需要1-2分钟。

两种概念验证都以不同的颜色显示许多矩形和圆形。 实施这些形状使我们对基础技术有了一个大概的了解,并且对预期的复杂性和努力有了第一印象。 概念验证还包括一个来回移动的圆圈。 尽管此动画绝非壮观,但它为我们提供了预期性能的上限。 如果我们无法以可接受的性能显示此简单动画,则无需在更复杂的动画上浪费时间。

概念验证以Doppio为核心,这只是一个令人惊讶的项目。 Doppio是在浏览器中运行JavaScript中实现的JVM。 这再次证明了规则34的编码器版本:“如果您能想到的话,JavaScript中就有一个实现……”

老实说,我对这种方法非常怀疑。 这样的JVM的性能有多好? 另一方面,JavaScript近年来发展Swift,正如Hendrik Ebbers最近在开玩笑地指出的那样,如今没有比JavaScript更积极地优化了。 值得一试。 正如您在PoC(希望现在开始)中看到的那样,尤其是在第二个PoC中,运行时性能出奇地好。 再次考虑一下您正在看什么:这是一个标准的JavaFX应用程序,已编译为字节码,并且已在用JavaScript实现的JVM中进行了解释(到目前为止,AFAIK Doppio不执行JIT)。 并且使用的JavaFX运行时与标准实现几乎相同。

Doppio仅支持Java 6,但是JavaFX运行时基于Java8。Doppio团队正在努力支持Java 8,但是到目前为止,我们必须以某种方式弥合差距。 我们决定使用RetroLambda ,主要是因为Android的JavaFX端口已在使用它。 这是一个非常有用的工具,它接受兼容Java 8的字节码并将其迁移到Java 7甚至Java 6字节码。 到目前为止,它对我们而言是完美无缺的,目前还不支持默认方法。 我不确定它是否可以投入生产,但是如果您坚持使用Java 6或Java 7,是否想使用Java 8功能,并且已经进行了广泛的测试,则值得一试。

概念验证使用不同的方法在屏幕上渲染JavaFX Scene。 第一个PoC使用软件渲染器。 它是JavaFX运行时的一部分,顾名思义,几乎所有渲染场景的操作都是用Java完成的。 结果是一个字节数组,我们必须将其复制到屏幕上。 另一方面,自定义渲染器尝试使用尽可能多HTML canvas API,即,渲染圆形时,自定义渲染器使用arc()方法。 通常,第二种方法要快得多,因为它可以利用平台中的优化功能。 但这也意味着实施将受到平台可能性的限制。 例如,通常不支持带有视频的高级功能(例如旋转和叠加)以及许多效果。

接下来的步骤是至少再增加两个原型,然后我们将决定要遵循的路线。 而且我们需要确定启动时间。 敬请关注!

翻译自: https://www.javacodegeeks.com/2014/12/javafx-in-the-browser.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值