我正在尝试使用 JavaFX 和 Scala 实现一个具有一些思维导图功能的简单笔记管理器。
我正在尝试决定是否应该直接从 Scala 或通过 ScalaFX 调用 JavaFX 代码?我不知道是否值得学习 ScalaFX,直接从 Scala 代码中调用 JavaFX 会不会更简单?
ScalaFX官方网站提到了 ScalaFX 的 4 个好处:
1) 自然语言绑定表达式
- 这很好,但我并没有真正计划使用那么多绑定(我打算将 EventBus 用于 gui 组件间事件和一些用于 gui 组件内事件的绑定)。
2) 定制动画语法
-我不打算在我的项目中使用动画。
3) 完整的类型安全 API
这似乎是一个无关紧要的点……类型安全是 Java 开发人员一直拥有的东西(并且通常认为是理所当然的),而其他脚本语言的开发人员则没有(并且在不知不觉中遭受运行时错误的影响)。但是,如果您正在开发的应用程序在部署后不会出现意外的运行时错误和错误,那么它是一项关键功能。
一个好的编译器将能够通过比较预期类型和实际类型来找出许多常见的编码错误,一个好的编译器(如 Scala)会自动为您推断类型,因此您不必在整个代码中繁琐地重复它们。
ScalaFX 通过类似脚本的 DSL 语法获得了两全其美的优势,您很少需要显式类型对象,Scala 编译器的强大类型安全性将推断和检查每个表达式和 API 调用的类型。这意味着在调试奇怪的代码错误和拼写错误上花费的时间更少,而且代码质量更高!
-这看起来很有趣!但我的问题是:我怀疑直接从 Scala 调用 JavaFX 给了我与通过 ScalaFX 调用 JavaFX 相同的类型安全保证,或者不是?我不知道。
4) 无缝 JavaFX/ScalaFX 互操作性:
- 如果我直接从 Scala 调用 JavaFX,那么与通过 ScalaFX 调用 JavaFX 相比,我不必担心互操作性问题。
总之:
似乎第 3 点是唯一可能给我一些我在简单项目中关心的好处的好处,但我只是不知道他们真正在谈论什么样的类型安全?
为什么在类型安全方面通过 ScalaFX 调用 JavaFX 比直接从 Scala 调用更好?如果我们使用 ScalaFX 而不是直接从 Scala 访问,我们可以获得什么样的额外类型安全优势?我问这个是因为我真的无法想象ScalaFX 可以提供什么样的额外类型安全?
所以,换句话说,我知道 ScalaFX 是一个很好的绑定语法糖,但它提供的还不止这些吗?如果我可以在没有它提供的(非常好的)合成糖的情况下生活,我真的应该使用它吗?
除了糖之外还有什么东西值得使用这个包装层(ScalaFX),它引入了额外的复杂性(和错误的来源)?
请注意,我非常感谢 ScalaFX 创作者的工作!我问这些问题只是为了能够做出更明智的决定。