除了代码的可移植性之外,将 JavaFX 用于 android 项目而不是 android UI 本身的优势是什么

What is the advantage of using JavaFX for an android project instead of android UI itself other than portability of the code

大多数人会在 javafx 中创建他们的 android 项目的原因是跨不同平台(例如 ios、桌面、android、也许甚至网络使用 Bck2Brwsr/teavm/doppio)

但我的问题是,与 android ui 框架相比,javafx ui 框架本身有什么优势吗?

我从来没有为 android 编写过一个 hello world 应用程序,但我现在打算这样做。所以我想知道如果我可以直接在 android 上开发,除了可移植性之外,在 javafx 中编写代码是否值得。

此类问题可能会得到 subjective/opinionated 个答案,但我认为这是一个很好的问题,所以我会提供我的评估。

  1. 在所有这些平台上拥有相同的代码库是巨大的。不要忽略这一点。我正在使用 Gluon Mobile to port aspects of the Deep Space Trajectory Explorer (DSTE) 到 Android 和 iOS。正如您从视频中看到的那样,它的应用极其复杂。我不可能用原生 Android 重写它...从成本的角度来看,这是不行的。
  2. 从 JavaFX 开始开发可以更轻松地制作复杂的视觉效果。我不只是指传统的 2D GUI 形式。再次查看 DSTE,您会看到我们使用 Canvas 进行密集渲染,使用 JavaFX 3D 以及 FXyz 库进行 3D 渲染。这些事情在 JavaFX 中很容易,再次使用 Gluon 只需 "just work" on Android/iOS。事实上,让 DSTE 代码库的这些方面 在 Pixel C 平板电脑 上工作只花了大约一天的时间,其中大部分是 Gradle 构建设置正确。现在想象一下必须将 3D 代码从 JavaFX 移植到 Native 框架?我是个3D的人,我还是不会去尝试。
  3. 在桌面上进行测试比在移动设备上容易得多。这并不意味着测试是 100% 在桌面上进行的。有时在移动平台上的桌面 "doesn't work" 上工作的东西,你必须相应地调整。但是,您可以使用 JavaFX 节省大量启动应用程序的时间,因为您知道 90% 的应用程序在您的移动设备上都可以正常工作。

忠告...请记住,桌面应用程序不是移动应用程序。您会很想 "port" 您的桌面应用程序到您的设备。我是第一次。您可能会遇到其他问题,您为移动设备上的桌面 "work" 设计的界面和布局不合适,因此可用性下降。移植时开始缓慢。想一想您的桌面工作流程的哪些方面应该调动起来。仅将您绝对属于移动工作流程的内容移植到移动工作流程中。省去一些麻烦。