【问题标题】:What are your feelings on JavaFX?您对 JavaFX 有什么感受?
【发布时间】:2009-02-10 19:52:00
【问题描述】:

我目前在 ActionScript 3.0 方面做了很多工作,我也喜欢用 Java 编程。 JavaFX 是否适合我? JavaFX 的总体感觉是什么,它会成为一个强大的公司,还是走上与 Java Applets 相同的道路?与我一起工作的设计师能否像熟悉 ActionScript 和 JavaScript 一样熟悉 JavaFX?

【问题讨论】:

    标签: javafx ria


    【解决方案1】:

    只是想添加我的 $.02... 在过去的 4 天里,我一直在 JavaFX 中工作,这是我第一个使用它的小项目。作为一些背景,我从事专业编程已经有 9 年了,从 C 开始,最近 6 年一直在做 Java 和 C#/.NET。

    IMO,JavaFX 应该如此令人沮丧。以下是一些抱怨:

    1. 语法有时很奇怪。它很容易更像 Java,因为它的 JavaFX。但是语法并不是从 Java 轻松过渡的。

    2. .fx 文件中项目的顺序实际上很重要,这意味着您会遇到愚蠢的循环引用错误,并且“哦,您还不能使用此变量,因为它没有” t was initialized" 编译器应该可以轻松处理的问题,但事实并非如此。

    3. 随机的东西是行不通的。 Swing 控件上的操作/事件并不总是有效,例如 SwingSliderBar 的 onKeyPressed/released 似乎没有被调用。

    4. 错误处理只是糟糕。如果发生了未处理的异常,除了 Java 控制台之外没有其他真正的方法可以判断,并且 UI 元素开始做出有趣的反应。例如,制作一个 SwingText 框并将其值绑定到一个变量。现在尝试编辑文本框中的值将引发异常,因为您无法编辑绑定变量。然而在 UI 中,文本框刚刚开始发生有趣的事情。有些字符只有 1/2 绘制,有时退格不做任何事情,有时它会删除一个字符,有时你可以在键盘上按 2 个键,如“1”和“2”,文本框最终会输入“21”而不是“12”等...

    虽然我目前在 JavaFX 开发方面的第一大问题是 Netbeans。 JFX 的表现非常糟糕。无法调试,错误在 IDE 中显示错误(我已经将 cmets 标记为错误!),智能仅在 40% 的情况下工作,事件他在 IDE 中为拖放控件预编程的代码模板是'正确。我忘记了哪一个,但是其中一个在插入的代码末尾删除了一个“&”,该代码永远无效,并且总是必须手动删除......它只是普通的糟糕,并且是不可接受的对于像 Sun 这样的公司。

    另一个抱怨是一般文档。它只是缺乏。不知何故,在搜索方法/类时,JavaFX API 甚至没有成为谷歌搜索结果的第一名。网络上的大量“示例”不再有效,因为每个版本都有重大的重构更改,并且类被删除或重命名。

    总体而言,我给 JFX 打 4 分(满分 10 分)。我想要喜欢它,但 JFX 1.1 并没有做到这一点……这绝对不是我认为的“生产就绪” .

    【讨论】:

    • +1 语法真的很奇怪。乍一看,Java 和 JavaFX 之间似乎有很多相似之处,但也有很多细微差别。
    • 虽然 Java 和 JavaFX 的语法不同……但互操作性非常好。从 JavaFX 调用 Java 非常棒……而且由于 JavaFX 是一种富客户端技术……Java 确实不需要调用 JavaFX。在我看来……JavaFX 在客户端 GUI 开发方面优于传统 Java SWING。
    【解决方案2】:

    一个响亮的“嗯”。

    一年前我看到它时,他们有一个单向 SVG 到 JavaFx 的转换工具。太好了,因此您可以创作一次视觉内容,用很多行为对其进行标记,然后下次想让它看起来不错,然后呢?

    如果您查看this tutorial,您就会明白我的意思。我们通过将形状从调色板拖到源代码中来绘制东西。天哪。我没有向我的图形部门展示它。

    我希望我对 JavaFx 的看法是错误的,但我认为他们不明白。拜托,Sun 的某个人不会给我们一个没有与代码密不可分地交织在一起的表示层吗?

    【讨论】:

    • 我必须同意你的最后一行。虽然,坦率地说,最近,我认为 Java 大体上就是这种情况。
    • 您应该看看Production Suite。它为 Photoshop 和 Ilustrator 提供了很好的工具,并且 FXD Loader API 让您可以很好地将 UI 与逻辑分离。
    • JavaFx 生产套件看起来很有趣。在 JavaFx 中使用 Swing 组件时可以做类似的事情吗?
    【解决方案3】:

    我离开了我的上一份工作,从 Java 转向 .NET 开发。

    做出这一举动的原因有很多,但最大的一个原因是我厌倦了尝试使用 Java 和 Swing 构建一流的 UI 软件。已经六年了,我很高兴我继续前进。我认为没有理由相信 Sun 最终会理解使用 JavaFX 进行 UI 开发。

    我相信,微软最终会为我们提供一个平台,以便在浏览器中构建丰富的交互式应用程序。我说,在 13 年前构建了作为 Netscape 插件交付的商用软件之后,随后是 ActiveX 控件和 Java Applet,并且看到所有这些平台由于某种原因未能在企业中普及。

    我意识到 Silverlight 2 仍然缺乏深度和成熟度,但微软在这一点上向我展示了足够的承诺,我相信它将在短短几年内成为主导 RIA 平台——至少对于需要“真正的”编程语言。我确信 Flash 等人。不会很快消失,但 Flash 不适合我公司开发的软件类型。

    对我来说锦上添花的是,我仍然可以使用 Visual Studio、C# 和我当前的大部分代码库(与 UI 完全分离的核心引擎)。当然,如果您来自 ActionScript,这对您没有帮助。

    更重要的一点是 Silverlight 和 WPF 有很多共同点。我们的计划是在我们软件的 Silverlight 和 WPF 版本之间共享大量实现。 WPF 成为 Windows 应用程序的标准只是时间问题——我不知道那是几年还是十年,但随着时间的推移,它显然会发生。能够从相同的代码库中针对最流行的浏览器/操作系统以及 Silverlight 和 Windows 是 IMO 的巨大优势。

    如果您了解 Java,那么迁移到 C# 就是小菜一碟。除非您使用的是不错的(非免费)Java IDE 之一,否则即使是免费版本的 Visual Studio 也会比您习惯的有所改进。障碍将是学习使用 XAML 做事的新方法 - 但这是一些非常酷的东西,所以您可能会真正喜欢它。

    【讨论】:

      【解决方案4】:

      虽然它在功能方面看起来相当强大,但由于它的结构和实现,我对 JavaFX 有点不屑一顾。进入 Flash/Silverlight 市场似乎是一次半心半意的尝试。太剧本了。

      我会主张采用 Silverlight 2 路线,但我主要是 C# 开发人员,所以我对此有点偏见。如果您出于某种原因不喜欢这条路线,但仍希望为您的用户提供更丰富的 UX,我建议您使用 Flex;对我来说,它似乎比 JavaFX 组织得更好。

      在这个问题上我只有两分钱。

      【讨论】:

        【解决方案5】:

        如果您了解 Java,但想做一些您认为只能在 Flash 中实现的事情 - 那么是的,JavaFX 对您有好处。

        毫无疑问,将您的 Java 知识与设计内容结合起来会容易得多。

        而且我相信工具只会变得更好,这将使其更易于使用。

        【讨论】:

          【解决方案6】:

          除非您正在开发内部应用程序,否则我会远离它。用户通常不希望必须处理完成与 Flash 相同的事情的另一个程序。我认为它的安装基数还不够大,无法方便最终用户使用。

          【讨论】:

          • 也许他们应该弄清楚如何将其编译为 Flash 字节码。
          【解决方案7】:

          我已经使用 Flex 开发 Flash 应用程序大约 2 年了,我决定尝试 JavaFX,因为我们经常收到用户抱怨他们无法使用他们的 iPhone 上的应用程序(而且我喜欢 Java)。

          这是对 Flash 的一击(不支持广泛的移动设备)。

          说实话,JavaFX 给我留下了深刻的印象(以一种非常糟糕的方式)。

          • 文档不完整。
          • 脚本简直糟透了;它是 JSON 和 R 之间的这种奇怪的混合,带有一种 Java 似曾相识的感觉。
          • 前 3 天我用 CODE 绘制多边形并制作渐变... WTF!!
          • 我试图说服我的图形部门尝试它,但他们根本不了解生产套件应该如何工作,他们一直抱怨 Flex 蒙皮很简单,最终看起来更好(这绝对是真的)。
          • “CSS 支持”简直就是个糟糕的笑话。
          • 通常感觉像是为 RIA 前端提供一个选项的平庸尝试。

          我只能想到一些关于它的好处:

          • 它可以在 iPhone/iPad 和几乎所有移动设备上运行。
          • 您可以访问所需的所有 Java 代码,考虑到 ActionScript 的限制(无重载、无私有构造函数等),这非常棒。这对我们程序员来说是一件好事,但让我们记住这是一种前端/演示技术......这意味着用户必须实际看到这个东西,所以如果它看起来不太好并且很酷他们不会挖掘的动画/效果。
          • 脚本不像 MXML 文件那样冗长(代价是难以理解)。
          • 谈论性能... Flash Player 是一个巨大的绿色 blob,与 JavaFX 的运行方式相比,它不断增长直到没有剩余 RAM(JVM 摇摇欲坠!不幸的是,这与实际的 JavaFX API 无关,它只是JVM...好吧,它太棒了!)。
          • 它有一个很酷的功能,您可以将小程序拖到 Web 浏览器之外。

          最后,我很高兴我可以选择使用移动设备,但这是 Flex/Flash 在 RIA 应用程序方面所取得的成熟度的光年。 Flex/Flash 作为一种广泛分布的网络技术的未来尚不清楚(它可能最终只用于烦人的横幅和在线游戏),没有人愿意依赖像 Flash Player 这样的封闭技术,这就是为什么整个网络社区正在努力使 Flash 脱离图片(HTML5 视频支持、Apple 设备没有 Flash Player 等)。因此,开放式的尝试总是受到欢迎,只是 JavaFX 感觉就像是 Sun 觉得有必要在周末宿醉期间提出的这个不完整的匆忙测试版。

          我希望这对某人有用(并且冒犯 Sun/Oracle =p 的某人)。

          【讨论】:

            【解决方案8】:

            我整个周末都在玩它。我看不出它有什么用处。这是swing / awt的迭代。我想这对移动设备来说会很好,但除此之外它没有任何用处。

            理想情况下,我想使用 flash,但发现与任何类型的后端集成都很痛苦。

            【讨论】:

            • 它不仅适用于 GUI 编程,它还是一种成熟的编程/脚本语言。我认为它很好地解决了 Swing 中许多丑陋的事情(例如动作侦听器样板代码)。
            【解决方案9】:

            嗯,ActionScript 和 JavaFX 的语法似乎有很多相似之处,所以可能是“是”。

            我现在正在学习 JavaFX 脚本,我真的很喜欢它。但我不喜欢的,也许是它最大的缺点是它的文档很糟糕,通常不是最新的或不完整的。

            【讨论】:

              【解决方案10】:

              我已经在 J​​avaFX 应用程序上工作了几个月了。就个人而言,我喜欢这种语言。在我看来,他们在选择语法和语言结构方面做出了一些非常明智的决定(如果你愿意,我可以给你一个清单)。我已经用它编程了几个月,它似乎是一种非常高效甚至令人愉快的编程语言。

              我认为它现在最好的用途是用于桌面应用程序和/或通过 webstart 部署的应用程序。在桌面上,它具有丰富的功能集,并且仍然可以利用 Swing 的其他功能和 Java 的其余部分。据我所知,一些系统上的小程序仍然很慢,而且如果没有 Android 支持,移动功能就没有功能。在我看来,applet/mobile/TV/web 支持更像是对桌面开发人员的奖励,而不是让您使用该技术的关键功能。

              所以这真的完全取决于你打算用它做什么。如果您正在构建想要在 Java VM 上运行的桌面应用程序,这些应用程序可以使用简单的多媒体和丰富的 ui 控件,那么我认为有充分的理由来研究这种语言。 WebStart 有了很大的改进,是一个很好的部署工具。如果您正在寻找构建 Web 应用程序,那么它可能会很有趣,但现在我会说 HTML5/ajax 更相关(在这种情况下您可能想查看 ZK)。然而,即使使用 HTML5 ajax 也有其局限性,如果您发现自己遇到了它们,那么 JavaFX 可能会为您提供选择。对于移动平台,除非有稳定的 Android 支持,否则它不会相关 - 在这种情况下,我现在只坚持使用 Android 平台本身。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-09-24
                • 1970-01-01
                • 1970-01-01
                • 2015-04-11
                • 1970-01-01
                • 1970-01-01
                • 2019-09-21
                • 2011-03-15
                相关资源
                最近更新 更多