你对JavaFX有什么看法?

时间:2009-02-10 19:52:01

标签: javafx ria

我目前在ActionScript 3.0中做了很多工作,我也喜欢用Java编程。 JavaFX对我来说是完美的吗? JavaFX的一般感觉是什么,它会成为一个强大的力量,还是与Java Applets走同一条道路?我与之合作的设计师是否能够熟悉JavaFX,以及他们对ActionScript和JavaScript的熟悉程度?

10 个答案:

答案 0 :(得分:9)

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

IMO,JavaFX的方式应该更令人沮丧。以下是一些抱怨:

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

  2. .fx文件中项目的顺序实际上很重要,这意味着你遇到了愚蠢的循环引用错误,并且“哦,你还不能使用这个变量因为它没有'已被初始化“编译器应该轻松处理的问题,但没有。

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

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

  5. 虽然我现在对JavaFX开发的绝对排名第一的问题是 Netbeans 。在JFX这是可怜的。无法调试,IDE中的错误显示错误(我已将其标记为错误标记!),intellisence仅在40%的时间内起作用,事件是他在IDE中预编程的代码模板用于拖放&丢弃控件不正确。我忘了哪一个,但其中一个掉了“&”在插入的代码的末尾永远无效并且总是必须手动删除...它只是简单的糟糕,对于像Sun这样的公司来说是不可接受的。

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

    总的来说,我给JFX一个4分中的4分。我希望喜欢它,但是JFX 1.1只是没有削减它......它绝对不是我认为的“生产就绪”

答案 1 :(得分:3)

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

有很多理由要采取行动,但最主要的原因是我厌倦了尝试用Java和Java构建一流的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做事的新方式 - 但它是一些非常酷的东西,所以你可能真的很喜欢它。

答案 2 :(得分:2)

虽然它在功能方面看起来相当强大,但由于它的结构和实现,我对JavaFX有点啰嗦。进入Flash / Silverlight市场似乎是一种非常半心半意的尝试。太潦草了。

我赞成采用Silverlight 2路线,但我主要是C#开发人员,所以我有点偏见。如果您因为某种原因不喜欢这条路线但仍希望为用户提供更丰富的用户体验,我建议使用Flex;它看起来比JavaFX好得多。

关于这个问题我只有两分钱。

答案 3 :(得分:2)

如果你了解Java但想要做你认为只在Flash中可行的东西 - 那么是的JavaFX对你有好处。

毫无疑问,将Java知识与设计内容合并会更加容易。

我相信工具只会变得更好,这样才能使用起来更简单。

答案 4 :(得分:2)

响亮的“meh”。

当我在一年前查看它时,他们有一个单向SVG到JavaFx转换工具。太棒了,所以你可以创作一次你的视觉内容,用很多行为标记出来,然后下次你想让它看起来很好看,那么呢?

如果你看看this tutorial,你可以看到我的意思。我们通过将调色板中的形状拖动到源代码中来绘制内容。 OMGWTF。我没有向我的图形部门展示。

我希望我对JavaFx有误,但我认为他们没有得到它。请问,Sun的某个人不会给我们一个表达层,它的触角与代码不可分割地交织在一起吗?

答案 5 :(得分:1)

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

答案 6 :(得分:1)

我已经用Flex开发Flash应用程序大约2年了,我决定尝试JavaFX因为我们不断地让用户抱怨他们无法使用他们的IPhones中的应用程序(我喜欢Java)。

这是Flash的一次攻击(没有广泛的移动支持)。

老实说,我对JavaFX印象非常深刻(以非常糟糕的方式)。

  • 文档不完整。
  • 剧本很糟糕;它是JSON和R之间奇怪的混合体,带有Java-deja-vu的感觉。
  • 我花了前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作为一种广泛的分布式Web技术的未来尚不清楚(它可能最终仅用于讨厌的横幅和在线游戏),没有人愿意像Flash Player那样依赖于密切的技术,这就是为什么整个Web社区正在努力使Flash脱颖而出(HTML5视频支持,Apple设备没有Flash Player等)。因此,我们总是欢迎尝试打开一个开放的版本,只是因为JavaFX感觉就像Sun在周末糟糕的宿醉期间认为有义务提出的那些不完整的匆忙测试版本。

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

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

我几个月来一直在研究JavaFX应用程序。就个人而言,我喜欢这门语言。在我看来,他们在选择语法和语言结构方面做出了一些非常明智的决定(如果你愿意,我可以给你一个列表)。我已经在其中编程了几个月了,它似乎是一种非常有效甚至令人愉快的语言。

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

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