2010-11-12 61 views
4

我一直在玩Clojure一段时间,我只是喜欢LISP语法,它非常美观,表现力强,简单而且非常有效。我也一直在C#上玩了几个月,发现它的语法非常冗长而且相当难看,但它对我很有用,但我更喜欢LISP语法。Java和Clojure之间的互操作性和图形用户界面的创建

但是;缺乏一个专门为Clojure开发的GUI库/设计器已经让我有些不安。在C#中,使用WPF快速创建测试应用程序非常简单容易,但我无法对Clojure说同样的话。

无论如何,我想了一下,但没有找到一个好的资源。例如,使用C#和F#,您可以在F#中编写应用程序的逻辑,然后使用C#创建GUI。 Java和Clojure有没有这样的可能性?你在Clojure中编写应用程序的逻辑,然后在Java中编写/设计GUI?

+1

这些天我每次听到表达式或优雅时都会畏缩 - 它们通常等同于“神秘”和“易于书写,难以阅读和维护”。 – 2010-11-12 00:39:29

+0

嘿,我明白你的意思了。但是,这个代码只能用于个人使用,所以我并不十分担心,十年后我会回头看看,因为我不知道我当时做了什么。对我来说,LISP语法更具有表现力,因为在编写函数时,它对我来说比在C#中更有意义。:) – 2010-11-12 00:43:35

+2

@Bill K Lisp代码不是神秘而且不难维护。最后,你会更快乐地维护Clojure中的100个loc,然后500行java boilerblait被分成30个不同的文件。 Lisp代码非常棒,人们不习惯它。 – nickik 2010-11-12 01:19:36

回答

6

您可以直接从Clojure中直接使用Swing,因此可以很快获得广泛的Java Swing库和工具的好处。这里是一个不错的博客文章举例:

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

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

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

+0

事实上,'miglayout'模块使得在Clojure中执行Swing布局非常简单,甚至比Java更容易。 [Check out](https://github.com/abhin4v/clj_twitter_feelings/blob/master/src/clj_twitter_feelings/ui.clj)我在Clojure中编写的Swing UI。 – 2010-11-12 12:42:10

1

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

鉴于Clojure出色的Java互操作性,我会说没有理由不能使用Matisse来直观地绘制UI,这是我听到任何人在做Java桌面应用程序谈论这些日子的唯一的事情。特别是Java PosseTor Norbye讲得非常高,在过去的几年里,他的整个工作一直在开发NetBeans,它有着相当复杂的GUI,尽管没有太多的高超的效果。

一旦你的UI是画在马蒂斯产生的,具有绑定打电话,你实现你的业务逻辑您的Clojure代码。