【问题标题】:Interoperability between Java and Clojure and creation of GUIsJava 和 Clojure 之间的互操作性以及 GUI 的创建
【发布时间】:2010-11-12 00:23:55
【问题描述】:

我已经使用 Clojure 玩了一段时间了,我只是喜欢 LISP 语法,它真的很漂亮、富有表现力、简单而且非常有效。几个月来我也一直在玩 C#,发现它的语法非常冗长且丑陋,但它对我有用,但我更喜欢 LISP 语法。

但是;缺少专门针对 Clojure 的 GUI 库/设计器让我有些紧张。在 C# 中,使用 WPF 快速制作测试应用程序非常简单易行,但对于 Clojure,我不能这么说。

无论如何,我对此进行了一些思考,但实际上找不到合适的资源。例如,使用 C# 和 F#,您可以在 F# 中编写应用程序的逻辑,然后使用 C# 制作 GUI。 Java和Clojure有什么办法吗?您是在 Clojure 中制作应用程序的逻辑,然后在 Java 中编码/设计 GUI?

【问题讨论】:

  • 这些天我每次听到富有表现力或优雅这两个词时都会感到畏缩——它们通常等同于“神秘”和“易于编写,难以阅读和维护”。
  • 嘿,我明白你的意思了。但这是仅供个人使用的代码,所以我不太担心我会在十年后回到它,只是意识到我不知道我当时做了什么。对我来说,LISP 语法更具表现力,因为它在编写函数时对我来说比在 C# 中更有意义:)
  • @Bill K Lisp 代码并不神秘,也不难维护。最后,您会更乐意在 Clojure 中维护 100 个 loc,然后在 30 个不同文件中拆分 500 行 Java 锅炉。 Lisp 代码很棒,人们只是不习惯。
  • @nickik 我同意,但是我不使用 java 样板(绝对反对)。如果你在 Java 中使用样板文件,你应该更加努力。我的 java 代码最终变得不那么“优雅”而且更明确,这是我个人更喜欢的。任何不明确的东西都意味着它会在某些时候使某人感到困惑。您所做的一切都应该在您的代码中,并且应该与书面文字一样具有可读性,即使编写需要两倍的时间,写作也不是问题,阅读、维护和更新必须是可以理解的。

标签: java user-interface clojure


【解决方案1】:

您几乎可以直接从 Clojure 中使用 Swing - 因此可以很快地从广泛的 Java Swing 库和工具中受益。这是一篇带有示例的不错的博客文章:

http://stuartsierra.com/2010/01/03/doto-swing-with-clojure

我看不出有什么理由你不能对任何其他 Java GUI 库/GUI 构建器做同样的事情。

如果您对 3D 或可视化更感兴趣,也值得一看 penumbra。我自己用的不多,但它似乎是一种非常好的 LISP 风格的 OpenGL 编程方法。

【讨论】:

  • 事实上 miglayout 模块使得在 Clojure 中进行 Swing 布局变得非常容易,甚至比 Java 更容易。 Check out 我用 Clojure 编写的 Swing UI。
【解决方案2】:

如果您希望手动绘制 UI,那么 @mikera 的指针都有意义。不过,我认为这听起来不是你的问题。

鉴于 Clojure 出色的 Java 互操作性,我想说没有理由不能使用 Matisse 直观地绘制 UI,这是我最近听到的 Java 桌面应用程序开发人员谈论的唯一话题。尤其是Java Posse 的Tor Norbye 对它的评价很高,而且他过去几年的全部工作都是开发具有相当复杂的GUI 的NetBeans,尽管没有太多的神作之类的效果。

在 Matisse 中绘制和生成 UI 后,让绑定调用您的 Clojure 代码,您可以在其中实现业务逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多