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

118

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


1
我不这么认为。看这里:http://news.kynosarges.org/2013/10/10/javafx-on-ios-android/ - Viktor K.
1
Oracle开发ADF移动应用。看这里。它支持iOS和Android。 - Alexander Kirov
只需在www上搜索javafxports。绝大部分JavaFX功能在Windows/Android/iOS上都能正常工作。目前,在Android上还有一些功能尚未实现,比如Task.cancel()、国际化Unicode字符或者FX媒体播放器等。 - Amin
5个回答

78

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

演示视频:

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

JavaFX Everywhere

Ensemble8 Javafx8 Android Demo

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

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

JavaFX在iOS和Android上的运行

开发资源:

Android:

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

iOS:

NetBeans支持JavaFX针对iOS发布!

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

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

杂项:

目前针对JavaFX,Oracle将桌面(Mac、Windows、Linux)放在优先列表中,嵌入式(Raspberry Pi、Beagle Board等)。对于iOS/Android,Oracle已经完成了大部分艰苦的工作,并将其作为OpenJFX的一部分开源了javafxports这些平台,但是iOS/Android上没有来自Oracle的JVM。社区正在通过填补iOS/Android上缺失的JVM(Java虚拟机)来共同完成所有工作,社区在iOS(RoboVM)/ Android(DalvikVM)上运行JavaFX取得了良好的进展。如果你愿意,你也可以通过赞助(成为RoboVM的赞助商)或开始开发应用程序并报告问题来为社区做贡献。

编辑06/23/2014:

Johan Vos创建了一个网站,用于JavaFX移动和平板电脑的端口JavaFX on Mobile and Tablets,请查看更新的信息。


3
RoboVM拥有最棒的logo!它是一只鸟,又是一个大拇指,不对,它是一架飞机! - Aleksandr Dubinsky
您可以添加该链接:http://www.youtube.com/watch?v=a3dAteWr40k&feature=youtu.be ;-) - assylias
@invariant 各种设备的麦克风、加速度计、GPS、相机等硬件的集成和访问质量如何? - mjs
第一个链接已经失效。存档版本:https://web.archive.org/web/20141008171951/http://blog.software4java.com/?p=148 - Miscreant

70

背景

Invariant 的回答 是一个很好的资源,介绍了 JavaFX 在嵌入式和移动设备上的起源和现状,但是自从那时以来,很多事情都发生了变化,那些遇到这个问题的用户并没有得到更新后的信息。

我的大多数观点都与 Invariant 的回答有关,因此我建议您先阅读该回答。

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

更新

JavaFXPorts 已经被弃用。Gluon Mobile 现在使用 GraalVM 。使用 GraalVM 有多个优点,请参见 Gluon 的博客文章。IDE 插件已更新为使用 Gluon 客户端插件,利用 GraalVM 对 Android/iOS 进行 AOT 编译应用程序。

旧版使用 JavaFXPorts 的回答

先说一些坏消息:

现在说一些好消息:

  • JavaFX 仍然可以在 Android、iOS 和大多数嵌入式设备上运行
  • 可以从这里下载适用于 Android、iOS 和嵌入式设备的 JavaFXPorts SDK。
  • JavaFXPorts 项目仍然繁荣,借助于构建在这些 SDK 上的 IDE 插件,现在更容易在移动设备上运行 JavaFX,几分钟内即可开始,无需安装任何 SDK。
  • JavaFX 3D 已经支持移动设备了.
  • GluonVM 取代 RoboVM,为移动开发人员提供 Java 9 支持。是的,你没听错。
  • Mobile Project 已由 Oracle 推出,以支持所有主要移动平台上的 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例外下进行授权(https://bitbucket.org/javafxports/8u-dev-rt/src/3d097c1c0336256b16eeebdb7eefc8a438e458e1/LICENSE?at=default&fileviewer=file-view-default#LICENSE-326),因此您可以放心在项目中使用它。但是,由于JavaFXPorts只提供最基本的支持(没有IDE支持+没有手机控件),我对将其选择用于商业用途持怀疑态度。Gluon Mobile是免费使用的,只有在应用程序启动时会有一个提示框(免费版本)。但是,当您的应用程序变得出名后,通过支付费用即可摆脱这个限制 :) - ItachiUchiha
    @ItachiUchiha 听起来很有前途!最后一个问题:在这里找到的Gluon Mobile产品比较显示,强制广告屏幕是免费版和Indie版之间唯一的区别。可以安全地假设我可以无限期地商业使用免费版本吗?也就是说,没有到期日?在资金到位之前,我可以处理强制广告屏幕:)感谢澄清。 - Nova
    1
    抱歉,还有一个问题:我的JavaFX代码已经完成了90%,有20,000多行代码。我是否仍然可以将Gluon Mobile集成到我的代码库中...还是需要在编写任何代码之前就开始使用它?谢谢 - Nova
    @Nova 是的,你可以将免费版本用于商业目的。回答你的第二个问题,你可以将Gluon Mobile集成到你的代码库中,但是你可能需要调整为桌面创建的屏幕,以便在移动设备上看起来合适,并在此过程中使用GM提供的一些功能。 - ItachiUchiha

    4

    桌面端:一流支持

    Oracle JavaFX从Java SE仅支持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都不支持苹果移动设备。直到最近,唯一明智的选择是使用RoboVM预编译器来为iOS开发Java应用程序。不幸的是,在2015年4月15日,RoboVM项目被关闭

    一个可能的替代方案是英特尔的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. 不,作为Web应用程序部署不起作用。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接