我应该将Java用于为clojure应用程序设计的自定义Swing组件吗?

时间:2012-03-23 11:27:03

标签: swing clojure seesaw

我想要一个简单的时间轴组件(如视频编辑软件)用于clojure / seesaw应用程序,我想知道这是一个很好的方法直接用clojure和跷跷板实现这个或者我是否应该用java编写它并制作我的clojure包裹着它。

或更一般地说:是一种最适合编写UI小部件的函数式编程语言?没有很多国家参与,我无法想象这样做。并不是首先为UI开发发明了OO吗?

3 个答案:

答案 0 :(得分:4)

你可以去任何一种方式。在Overtone上,我们使用Seesaw构建了许多自定义图形组件directly in Clojure。很多时候,原子和(seesaw.core/canvas)足以满足这种需要。

根据你想要获得多少花哨,在Clojure中做到这一点的一个原因是你可以将Seesaw的协议(选择,绑定等)扩展到新的小部件,以便它与Seesaw无缝协作。另一个考虑因素是您的小部件是否需要使用来自应用程序其他部分的Clojure数据。这将比Clojure更清晰,而不是Java。

也就是说,如果您对Swing / Java感到满意,那么您可以在那里完成,Seesaw将非常乐意使用内置于Java的自定义小部件。祝你好运!

答案 1 :(得分:2)

FP非常适合做UI编程,但为此,底层UI框架也应该基于FRP等FP概念。在您的情况下,底层UI框架(Swing)是基于OO的,因此它更容易实现它在Java中,但你仍然可以在跷跷板中完成。

答案 2 :(得分:2)

所有其他条件相同(即假设您同时了解Clojure和Java),我可能会将其写为Java中的自定义Swing组件。

原因:

  • Swing基本上是一个基于Java的OOP框架,在范例方面更适合Java
  • Java中的可变状态比Clojure中更容易
  • 如果你用Java编写它,你可以更容易地在别处使用它(例如,作为来自其他Java代码的库)
  • 创建后,可以很容易地在Clojure中包装Swing组件

当然,对于应用程序逻辑本身,我当然更喜欢Clojure。