我目前在 ActionScript 3.0 方面做了很多工作,我也喜欢用 Java 编程。JavaFX 是否适合我?JavaFX 的总体感觉是什么,它会成为一个强大的公司,还是走上与 Java Applets 相同的道路?与我一起工作的设计师能否像熟悉 ActionScript 和 JavaScript 一样熟悉 JavaFX?
10 回答
只是想添加我的 $.02 美元...在过去的 4 天里,我一直在 JavaFX 中工作,这是我第一个使用它的小项目。作为一些背景,我从事专业编程已经有大约 9 年了,从 C 开始,在过去的 6 年里一直在做 Java 和 C#/.NET。
IMO,JavaFX 的方式更令人沮丧。以下是一些抱怨:
语法有时很奇怪。它很容易更像 Java,因为它的Java FX。但是语法并不是从 Java 轻松过渡的。
.fx 文件中项目的顺序实际上很重要,这意味着您会遇到愚蠢的循环引用错误,以及编译器应该轻松处理的“哦,您还不能使用此变量,因为它尚未初始化”的问题,但没有。
随机的东西是行不通的。Swing 控件上的操作/事件并不总是有效,例如 SwingSliderBar 的 onKeyPressed/released 似乎没有被调用。
错误处理很糟糕。如果发生了未处理的异常,除了 Java 控制台之外没有其他真正的方法可以判断,并且 UI 元素开始做出有趣的反应。例如,制作一个 SwingText 框并将其值绑定到一个变量。现在尝试编辑文本框中的值将引发异常,因为您无法编辑绑定变量。然而在 UI 中,文本框刚刚开始发生有趣的事情。有些字符只有 1/2 绘制,有时退格不做任何事情,有时它会删除一个字符,有时你可以在键盘上按 2 个键,如“1”和“2”,文本框最终会输入“21”而不是“12”等...
尽管我现在 JavaFX 开发的绝对 #1 问题是Netbeans。JFX 的表现非常糟糕。无法调试,错误在 IDE 中显示错误(我已经将注释标记为错误!),智能仅在 40% 的情况下工作,事件他在 IDE 中为拖放控件预编程的代码模板是'正确。我忘记了是哪一个,但是其中一个在插入的代码末尾添加了一个“&”,该代码永远无效,并且总是必须手动删除……这简直太糟糕了,对于像 Sun 这样的公司来说是不可接受的。
另一个抱怨是一般文档。它只是缺乏。不知何故,在搜索方法/类时,JavaFX API 甚至没有成为谷歌搜索结果的第一名。网络上的大量“示例”不再起作用,因为每个版本都有重大的重构更改,并且类被删除或重命名。
总的来说,我给 JFX 打 4 分(满分 10 分)。我想喜欢它,但 JFX 1.1 并没有削减它……它绝对不是我认为的“生产就绪”。
一声响亮的“嗯”。
一年前我看到它时,他们有一个单向 SVG 到 JavaFx 的转换工具。太好了,因此您可以创作一次视觉内容,用很多行为对其进行标记,然后下次您想让它看起来不错,然后呢?
如果您看一下本教程,您就会明白我的意思。我们通过将形状从调色板拖到源代码中来绘制东西。天哪。我没有向我的图形部门展示它。
我希望我对 JavaFx 的看法是错误的,但我认为他们不明白。拜托,Sun 的某个人不会给我们一个没有与代码密不可分地交织在一起的表示层吗?
我离开了我的上一份工作,从 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 做事的新方法——但这是一些非常酷的东西,因此您可能会真正喜欢它。
如果您了解 Java,但想做您认为仅在 Flash 中可行的事情 - 那么是的,JavaFX 对您有好处。
毫无疑问,将您的 Java 知识与设计内容结合起来会容易得多。
而且我相信工具只会变得更好,这将使其更易于使用。
除非您正在开发内部应用程序,否则我会远离它。用户通常不希望必须处理完成与 Flash 相同的事情的另一个程序。我认为它的安装基数还不够大,不足以方便最终用户。
尽管它在功能方面看起来相当强大,但由于它的结构和实现,我对 JavaFX 有点不屑一顾。进入 Flash/Silverlight 市场似乎是一次半心半意的尝试。太剧本了。
我会赞成走 Silverlight 2 路线,但我主要是 C# 开发人员,所以我有点偏颇。如果您出于某种原因不喜欢这条路线,但仍希望为您的用户提供更丰富的 UX,我建议您使用 Flex;对我来说,它似乎比 JavaFX 组织得更好。
只是我在这个问题上的两分钱。
我已经使用 Flex 开发 Flash 应用程序大约 2 年了,我决定尝试 JavaFX,因为我们不断收到用户抱怨他们无法使用他们的 iPhone 上的应用程序(我喜欢 Java)。
这是对 Flash 的一次打击(没有广泛的移动支持)。
老实说,JavaFX 给我留下了深刻的印象(以一种非常糟糕的方式)。
- 文档不完整。
- 剧本简直糟透了;它是 JSON 和 R 之间的这种奇怪的混合,带有一种 Java 似曾相识的感觉。
- 我花了前 3 天的时间用 CODE 绘制多边形并制作渐变...... WTF!
- 我试图说服我的图形部门尝试它,但他们根本不了解生产套件应该如何工作,他们一直抱怨 Flex 蒙皮很容易,最终看起来更好(这绝对是真的)。
- “CSS 支持”简直是个糟糕的笑话。
- 通常感觉像是为 RIA 前端提供一个选项的平庸尝试。
我只能想到一些关于它的好处:
- 它可以从 iPhone / iPad 和几乎所有的移动设备上运行。
- 考虑到 ActionScript 的限制(没有重载、没有私有构造函数等),您可以访问所有想要的 Java 代码。这对我们程序员来说是一件好事,但让我们记住这是一种前端/演示技术......这意味着用户必须实际看到这个东西,所以如果它看起来不太好并且很酷他们不会挖掘它的动画/效果。
- 脚本不像 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 的某人感到冒犯)。
I've spent the weekend 'playing with it. I see nothing useful in it. It's a iteration of swing / awt. I guess it will be nice for mobile devices but beyond that its nothing useful.
Ideally I'd like to use flash but find it painful to intergrate with a backend of any type.
好吧,ActionScript 和 JavaFX 的语法似乎有很多相似之处,所以可能是“是”。
我现在正在学习 JavaFX 脚本,我真的很喜欢它。但我不喜欢的可能是它最大的缺点是它的文档很糟糕,通常不是最新的或不完整的。
我已经在 JavaFX 应用程序上工作了几个月了。就个人而言,我喜欢这种语言。在我看来,他们在选择语法和语言结构方面做出了一些非常明智的决定(如果你愿意,我可以给你列出一个清单)。我已经用它编程了几个月,它似乎是一种非常有效甚至令人愉快的编程语言。
我认为它现在最好的用途是用于桌面应用程序和/或通过 webstart 部署的应用程序。在桌面上,它具有丰富的功能集,并且仍然可以利用 Swing 的其他功能和 Java 的其余部分。据我所知,一些系统上的小程序仍然很慢,而且如果没有 Android 支持,移动功能就没有功能。在我看来,applet/mobile/TV/web 支持更像是对桌面开发人员的奖励,而不是让您使用该技术的关键功能。
所以这真的完全取决于你打算用它做什么。如果您正在构建想要在 Java VM 上运行的桌面应用程序,这些应用程序可以使用简单的多媒体和丰富的 ui 控件,那么我认为有充分的理由来研究这种语言。WebStart 有了很大的改进,是一个很好的部署工具。如果您正在寻找构建 Web 应用程序,那么它可能会很有趣,但现在我会说 HTML5/ajax 更相关(在这种情况下您可能想查看 ZK)。然而,即使使用 HTML5 ajax 也有其局限性,如果您发现自己遇到了它们,那么 JavaFX 可能会为您提供选择。对于移动平台,除非有稳定的 Android 支持,否则它不会相关——在这种情况下,我现在只坚持使用 Android 平台本身。