javafx 浏览器_浏览器中的JavaFX

javafx 浏览器

浏览器中的JavaFX屏幕截图

浏览器中的JavaFX屏幕截图

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

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


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

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

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

  • http://jfx8web.netopyr.com/poc1/
  • http://jfx8web.netopyr.com/poc2/

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

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

老实说,我对这种方法非常怀疑。 这样的JVM的性能有多好? 另一方面,JavaScript近年来发展很快,正如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

javafx 浏览器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javafx 示例_JavaFX列表示例

javafx 示例这是使用JavaFX构建的示例列表应用程序。 该应用程序是待办事项列表。 该应用程序具有添加,更新和删除列表中项目的功能。 列表数据存储在HSQLDB关系数据库中。 该应用程序使用JDBC(Java数据库连接)API访问数据库。 该应用程序打包…

嵌入式C语言的7个硬核知识

1void 与 void*void表示的是无类型,不可以采用这个类型声明变量或常量,但是可以把指针定义为void类型,如void* ptr。void指针可以指向任意类型的数据,可用任意数据类型的指针对void指针赋值,比如int *ptrInt&#xff1…

C语言指针用得好犹如神助!这些使用技巧值得收藏

指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽。比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,…

wso2_使用WSO2开发

wso2几个月以来,我又开始使用WSO2产品。 在接下来的文章中,我描述了我遇到的一些(小)问题以及如何解决它们。 设置开发环境时,我要做的第一件事是在Mac上下载Developer Studi o(64位版本)。 解…

有意思的C语言运算符

在C语言中,运算符用于执行程序代码运算,会针对两个或者两个以上操作数进行运算。比如:5 - 2,它的操作数是 5 和 2,而运算符则是 “-”。常见的运算符可大致分为 4 种类型:算术运算符、关系运算符、赋值运算…

java反向映射_opencv 直方图和直方图反向映射

histogram使用np进行直方图像素统计通过histogram对图像的三个通道分别进行一维直方图统计,由于被统计的数组必须是一维的,所以使用ravel将二维数组转换为一维数组,通过range参数指定统计区间为0--256,bin参数指定将统计区间分为2…

新手学习C语言编程的8个致命错误,你中招了吗?

序言C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”。但由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不…

jpa 实体图查询_JPA实体图

jpa 实体图查询JPA 2.1的最新功能之一是可以使用实体图指定获取计划。 这很有用,因为它允许您自定义使用查询或查找操作检索的数据。 在使用中大型应用程序时,通常以不同的方式显示来自同一实体的数据。 在其他情况下,您只想选择最小的信息集…

C语言程序控制语句——while

while语句while (表达式) 语句当表达式为非0值(真)时,执行while循环体中的语句,如此往复,直到表达式的值等于0(假),循环结束。如以下示例程序,循环…

kettle 资料_Kettle的使用-初级

本文从kettle的简介、下载、安装、初级使用来展开。1.kettle是什么?kettle是一款开源的ETL工具。可以运行在Windows和linux上。2.下载地址https://community.hitachivantara.com/s/article/downloads3.安装因为Kettle是基于Java开发的,所以要先安装jdk环…

C语言 | 语句概述

C语言语句的作用和分类1、9种控制语句if()...else.. //条件语句 for()... //循环语句 while()... //循环语句 do...while() //循环语句 continue //结束本次循环语句 break //中止执…

linux 查看日志_干货 | 名企高频考点之谈谈Linux日志查看方式都有哪些

点击蓝字关注我哦以下是本期干货视频视频后还附有文字版本哦▼《名企高频考点-谈谈Linux日志查看方式都有哪些》▼ps:请在WiFi环境下打开,如果有钱任性请随意0.概述在我们面试各大公司的时候,关于Linux往往最容易问到的问题之一就是Linux指令…

jvm7 jvm8_自我修复的JVM

jvm7 jvm8这篇帖子是关于一个应用程序的示例,其中解决每个IT问题的第一个解决方案-“您是否尝试过将其关闭并重新打开”-可能适得其反,弊大于利。 我们不需要关闭电源,而是拥有可以自愈的应用程序:它在一开始就失败了&#xff0c…

实例讲解C语言的位运算

C语言位运算有6种&#xff1a; &&#xff0c; | , ^(异或)&#xff0c; <<(左移)&#xff0c;>>(右移)。注意&#xff1a;参与位运算的元素必须是int型或者char型&#xff0c;以补码形式出现。1.按位与&&运算常应用于&#xff1a;迅速清零保留指定位判…

java字节码执行原理_《Java 底层原理》Java 字节码详解

前言我们在开发中会遇到一些Java的执行超出我们的想象&#xff0c;但是又不知道他为什么会这样执行&#xff0c;这个时候我们就需要能够知道他编译后Class文件是什么样子的&#xff0c;并且理解字节码的含义。Java字节码的原理进制class文件就是字节码文件&#xff0c;直接是打…

C语言学习笔记--位运算

这一节主要说的是位运算&#xff0c;计算机中的执行速度&#xff1a;位运算 > 加减 > 乘除 > 求余位运算就是将数字转换成二进制后进行运算&#xff0c;之后再将数字转换成原来的进制与运算&#xff1a;当两个数相与时&#xff0c;只有都为l的时候结果才为1&#xff0…

mathtype运行时错误48_在office中无法使用MathType该怎么办?

想必大家都遇到过在office中无法使用MathType的情况&#xff0c;那么遇到这种情况的话大家应该怎么来解决呢&#xff1f;首先这样的现象一般为&#xff1a;word或者ppt中没有mathtype选项&#xff0c;或者选项打开提示文件未找到&#xff1a;MathPage.WLL。错误提示或者甚至运行…

谈谈C语言中的杂项运算符

在C语言中&#xff0c;还有一些重要的运算符&#xff0c;例如&#xff1a;sizeof()、&、* 、 ?: 。我们把上述的这些运算符归为杂项运算符&#xff0c;下面我将详细介绍这些杂项运算符。下面的表格列出了 C 语言支持的所有杂项运算符&#xff1a;运算符解释例子sizeof()返…

jenkins java_具有WildFly,Arquillian,Jenkins和OpenShift的Java EE 7部署管道

jenkins java技术提示&#xff03;54展示了如何Arquillianate&#xff08;Arquillianize&#xff1f;&#xff09;一个现有的Java EE项目并在WildFly在已知主机和端口上运行的远程模式下运行这些测试。 技术提示&#xff03;55展示了当WildFly在OpenShift中运行时如何运行这些测…

matplotlib 折线图_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图

今天咱们还是接着上次的话题&#xff0c;继续和大家聊聊关于Python绘图相关的东东哦&#xff0c;上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法&#xff0c;今天呢&#xff0c;咱们再聊点的新的东东哦&#xff0c;还是和大家继续深耕Pyth…