是否可以在 iOS、Android 或 Windows Phone 8 上运行 JavaFX 应用程序?

Is it possible to run JavaFX applications on iOS, Android or Windows Phone 8?

提问人:mjs 提问时间:1/1/2014 最后编辑:cubuspl42mjs 更新时间:10/2/2020 访问量:118860

问:

是否可以使用 JavaFX 开发整个应用程序并在 iOS、Android 或 Windows Phone 8 上运行它,而无需编写特定于平台的代码?

Java JavaFX JavaFX-2

评论

1赞 Viktor K. 1/1/2014
我不这么认为。看这里 : news.kynosarges.org/2013/10/10/javafx-on-ios-android
1赞 Alexander Kirov 1/1/2014
Oracle 开发 ADF 移动版。看看这个。它支持iOS和Android。
0赞 Amin 5/4/2016
只需在 www 上查找 javafxports 这个词即可。大多数 javafx 功能在 windows/android/iOS 上运行良好。目前,有一些功能尚未在 android 上运行,例如:Task.cancel() 或国际 unicode 字符,或 fx 媒体播放器等。

答:

-4赞 tomsontom 1/1/2014 #1
  1. 是的,您可以在 iOS 和 Android 上运行它(不支持 Win8!
  2. 没有作为 Web 应用的部署不起作用
78赞 invariant 1/1/2014 #2

是的,您可以在 iOS、android、桌面、RaspberryPI(尚无 windows8 移动版)上运行 JavaFX 应用程序。

工作在行动:

我们成功了!iPad、Android、Windows 和 Mac 上的 JavaFX8 多媒体项目!

JavaFX 无处不在

Ensemble8 Javafx8 Android 演示

我的示例 JavaFX 应用程序在 Raspberry Pi 上运行

我在 Android 上运行的示例应用程序

iOS 和 Android 上的 JavaFX

开发资源:

人造人:

在 Android 上构建和部署 JavaFX 应用程序

iOS的:

NetBeans 对 iOS 版 JavaFX 的支持已经结束!

使用 RoboVM + e(fx)clipse 工具在 10 分钟内开发 JavaFX + iOS 应用程序

如果您要开发严肃的应用程序,这里有更多信息

杂项:

目前 JavaFX Oracle 的优先级列表是桌面(Mac、windows、linux)和嵌入式(Raspberry Pi、beagle Board 等)。对于 iOS/android,oracle 完成了这些平台的大部分艰苦工作和 opnesourced javafxports 作为 OpenJFX 的一部分,但没有来自 oracle 的 ios/android 的 JVM。社区正在通过填补ios/android的缺失部分(JVM)来整合所有内容,社区在ios(RoboVM)/android(DalvikVM)上运行JavaFX方面取得了良好的进展。如果您愿意,您还可以通过赞助(成为 RoboVM 赞助商)或开始开发应用程序并报告问题来为社区做出贡献。

编辑 06/23/2014 :

Johan Vos 在手机和平板电脑上为 javafx 端口 JavaFX 创建了一个网站,检查此网站以获取更新信息。

评论

3赞 Aleksandr Dubinsky 1/2/2014
RoboVM拥有有史以来最好的标志。这是一只鸟,这是一只大拇指,不,这是一架飞机!
0赞 assylias 1/6/2014
您可以添加该链接:youtube.com/watch?v=a3dAteWr40k&feature=youtu.be ;-)
0赞 mjs 10/11/2014
@invariant各种设备对麦克风、加速度计、GPS、摄像头等的集成和访问情况如何?
0赞 Miscreant 12/4/2015
第一个链接是死的。存档版本:web.archive.org/web/20141008171951/http://...
4赞 cubuspl42 9/11/2016 #3

桌面:一流的支持

Java SE 的 Oracle JavaFX 仅支持 OS X (macOS)、GNU/Linux 和 Microsoft Windows。在这些平台上,JavaFX 应用程序通常在 Java SE 或 OpenJDK 的 JVM 上运行。

Android:应该可以工作

还有一个 JavaFXPorts 项目,这是一个由第三方赞助的开源项目。它旨在将 JavaFX 移植到 Android 和 iOS。

在 Android 上,此库可以像任何其他 Java 库一样使用;JVM 字节码被编译为 Dalvik 字节码。这就是人们所说的“Android 运行 Java”的意思。

iOS:状态不明确

在 iOS 上,情况有点复杂,因为 Java SE 和 OpenJDK 都不支持 Apple 移动设备。直到最近,唯一明智的选择是使用 RoboVM 提前的 iOS Java 编译器。不幸的是,2015年4月15日,RoboVM项目被关闭

一种可能的替代方案是英特尔的多操作系统引擎。直到最近,它还是一项专有技术,但在 2016 年 8 月 11 日,它是开源的。尽管可以使用 JavaFXPorts 的 JavaFX 实现编译 iOS JavaFX 应用程序,但到目前为止还没有证据证明这一点。正如你所看到的,情况是动态变化的,当有新信息可用时,这个答案有望得到更新。

Windows Phone:不支持

使用 Windows Phone 很简单:没有任何形式的 JavaFX 支持。

2赞 jeton 9/28/2016 #4

可能。你也可以获得商业运动。

JavaFXPorts 是由 Gluon 维护的开源项目的名称,它开发了 Java 和 JavaFX 在移动和嵌入式硬件上良好运行所需的代码。这个项目的目标是尽可能地为 OpenJFX 项目做出贡献,如果不可能,则保持实现 JavaFXPorts 目标所需的最少更改数量。 Gluon 获取 JavaFXPorts 源代码并将其编译为二进制文件,以便部署到 iOS、Android 和嵌入式硬件上。JavaFXPorts 构建版可在此网站上免费提供给所有开发人员。

http://gluonhq.com/labs/javafxports/

70赞 ItachiUchiha 11/4/2016 #5

背景

Invariant 的回答是一个很好的资源,可以了解一切是如何开始的,以及 2014 年初 JavaFX 在嵌入式和移动端的状态。但是,从那时起发生了很多变化,偶然发现此线程的用户无法获得更新的信息。

我的大部分观点都与 Invariant 的答案有关,所以我建议先看一遍。

JavaFX 在移动/嵌入式上的现状

更新

不推荐使用 JavaFXPorts。Gluon Mobile 现在在下面使用 GraalVM。使用 GraalVM 有很多优点。请查看 Gluon 的这篇博文。IDE 插件已更新为使用 Gluon 客户端插件,该插件利用 GraalVM 为 Android/iOS 编译应用程序。

JavaFXPorts 的旧答案

先说一些坏消息:

现在,一些好消息:

  • JavaFX 仍然可以在 Android、iOS 和大多数嵌入式设备上运行
  • 适用于 android、iOS 和嵌入式设备的 JavaFXPorts SDK 可以从这里下载
  • JavaFXPorts 项目仍在蓬勃发展,在移动设备上运行 JavaFX 比以往任何时候都更容易,这要归功于基于这些 SDK 构建的 IDE 插件,让您在几分钟内即可开始,而无需安装任何 SDK
  • 移动设备现在支持 JavaFX 3D
  • GluonVM 将取代 RoboVM,为移动开发人员提供 Java 9 支持。是的,你没听错。
  • Oracle 已启动移动项目,以支持所有主要移动平台上的 JDK。它还应该支持 JavaFX ;)

如何开始

如果你不是DIY类型,我建议在你最喜欢的IDE上安装IDE插件并开始使用。

大多数关于如何开始的文档都可以在这里找到,一些示例可以在这里找到。

评论

0赞 ItachiUchiha 11/5/2016
我不确定您上次使用 JavaFX 是什么时候,但 JavaFX 8 中有很多改进。从最初的 JavaFXPorts 到 Gluon Mobile 也发生了很多变化。
0赞 Nova 12/16/2016
感谢您的更新。快速提问,JavaFXPorts 是否可以免费用于商业目的(使用库,而不是更改它)?我有一个 JavaFX 代码库,我希望以某种方式集成到 Android 中。Gluon Mobile 提供免费试用,但我需要一个永久的解决方案。JavaFXPorts(不是 Gluon Mobile)是解决方案吗?请澄清
0赞 ItachiUchiha 12/21/2016
@Nova 嗨。是的,JavaFXPorts 属于 GPLv2 + CLASSPATH 异常,因此您可以在项目中使用它而不必担心。但是,由于 JavaFXPorts 只为您提供最低限度的支持(没有 IDE 支持 + 没有移动控件),因此我不愿意选择它用于商业用途。Gluon Mobile 是免费使用的,当您的应用程序启动时,它只有一个 Nag 屏幕(免费版本)。但是,当您的应用程序出名时,您可以通过支付费用来摆脱它:)
0赞 Nova 12/22/2016
@ItachiUchiha这听起来很有希望!最后一个问题:这里找到的 Gluon Mobile 产品的比较表明,唠叨屏幕是免费层和独立层之间的唯一区别。是否可以安全地假设我可以无限时间地将免费版本用于商业用途?例如,没有到期日?我可以处理唠叨的屏幕,直到资金滚滚而来:)谢谢你的澄清
1赞 Nova 12/22/2016
对不起,还有一个问题:我的 JavaFX 代码已经完成了 90%,包含 20,000+ 行代码。我还能将 Gluon Mobile 集成到我的代码库中吗?还是我需要从一开始就使用它,然后再写一行?感谢