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


105

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



1
Oracle开发ADF移动版。看这个。它支持iOS和android。
亚历山大·基洛夫

只需在www上寻找javafxports一词。Javafx的大多数功能在Windows / android / iOS上都能正常工作。这时,有几个功能尚未在Android等的工作:Task.cancel()或国际Unicode字符,或FX媒体播放器等
阿明

Answers:


61

背景

Invariant的答案是关于如何开始一切以及2014年初嵌入式和移动JavaFX的状态的好资源。但是,此后发生了很多变化,偶然发现此线程的用户无法获得更新的信息。

我的大部分观点都与Invariant的答案有关,因此我建议先进行研究。

移动/嵌入式JavaFX的当前状态

首先有一些坏消息:

现在,一些好消息:

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

如何开始

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

有关如何入门的大多数文档可在此处找到,某些示例可在此处找到。


我不确定您上次使用JavaFX的时间,但是JavaFX 8进行了很多改进,从最初的JavaFXPorts到Gluon Mobile也做了很多更改。
ItachiUchiha

感谢您的更新。很快的问题,JavaFXPorts是否可以免费用于商业目的(使用库,而不是对其进行更改)?我有一个JavaFX代码库,希望以某种方式集成到Android中。Gluon Mobile提供免费试用,但我需要一个永久的解决方案。JavaFXPorts(不是Gluon Mobile)是解决方案吗?请澄清
Nova

@Nova嗨。是的,JavaFXPorts处于GPLv2 + CLASSPATH例外之下,因此您可以在项目中使用它而不必担心。但是,由于JavaFXPorts仅为您提供了最低限度的支持(无IDE支持+无移动控件),因此我对于将其选择用于商业用途表示怀疑。Gluon Mobile是免费使用的,当您的应用程序启动时,它只有一个Nag屏幕(免费版本)。但是,当您的应用程序出名时,您可以通过支付费用来摆脱它:)
ItachiUchiha

@ItachiUchiha听起来很有希望!最后一个问题:此处找到的Gluon Mobile产品的比较表明,nag屏幕是免费层和独立层之间的唯一区别。可以安全地假设我可以将免费版本无限期地用于商业用途吗?如,没有到期日期?我可以处理nag屏幕,直到资金投入为止:)感谢您的澄清
Nova

1
抱歉,还有一个问题:我的JavaFX代码已完成90%,包含20,000多行代码。我仍可以将Gluon Mobile集成到我的代码库中吗?还是在写一行之前从一开始就需要使用它?谢谢
Nova

75

是的,您可以在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支持JavaFX for iOS!

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

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

其他:

目前,对于JavaFX,Oracle的优先级列表是台式机(Mac,Windows,Linux)和嵌入式(Raspberry Pi,beagle Board等)。对于iOS / android,Oracle作为OpenJFX的一部分完成了这些平台的大部分工作,并选择了javafxports作为OpenJFX的一部分。不是来自ios / android的oracle JVM。社区通过填充ios / android缺少的部分(JVM)将所有东西放在一起,社区在ios(RoboVM) / android(DalvikVM)上运行JavaFX方面取得了良好的进展。如果您愿意,也可以通过赞助来为社区做出贡献(成为RoboVM赞助者)或者开始开发应用程序并报告问题。

编辑2014年6月23日:

Johan Vos 在Mobile和Tablets上为javafx端口JavaFX创建了一个网站,请单击此以获取更新的信息。


3
RoboVM有史以来最好的徽标。是鸟,是竖起大拇指,不是,是飞机!
Aleksandr Dubinsky 2014年


@invariant对于各种设备的集成和对麦克风,加速计,gps,相机等的访问情况如何?
毫米

第一个链接已死。存档版本:web.archive.org/web/20141008171951/http
//…

4

台式机:一流的支持

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移动设备。直到最近,唯一明智的选择就是为iOS 使用RoboVM提前Java编译器。不幸的是,RoboVM项目在 2015年4月15日被关闭

一种可能的选择是英特尔的Multi-OS Engine。直到最近,它还是一项专有技术,但是在2016年8月11日,它是开源的。尽管可以使用JavaFXPorts的JavaFX实现来编译iOS JavaFX应用程序,但到目前为止还没有证据。如您所见,情况正在动态变化,并且有望在有新信息时更新此答案。

Windows Phone:不支持

使用Windows Phone十分简单:不存在任何JavaFX支持。


2

可能。您也可以参加商业运动。

JavaFXPorts是Gluon维护的开源项目的名称,该项目开发了Java和JavaFX在移动和嵌入式硬件上良好运行所必需的代码。该项目的目标是在可能的情况下(尽可能)向OpenJFX项目做出尽可能多的贡献,以维持实现JavaFXPorts目标所需的最少更改。Gluon提取JavaFXPorts源代码并将其编译为二进制文件,准备部署到iOS,Android和嵌入式硬件上。JavaFXPorts构建可在此网站上免费供所有开发人员使用。

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


-4
  1. 是的,您可以在iOS和Android上运行它(不支持Win8!
  2. 无法部署为网络应用程序,无法正常工作
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.