关于Java:使用Groovy / JRuby / Jython或其他JVM语言的UI设计替代方案?

关于Java:使用Groovy / JRuby / Jython或其他JVM语言的UI设计替代方案?

UI design alternatives with Groovy/JRuby/Jython or other JVM languages?

对于Java生态系统中的开发人员而言,在UI设计方面有很多选择。 最著名的是:

  • Swing(与Netbeans及其GUI构建器一起使用时首选)
  • Eclipse的SWT(最受Eclipse插件青睐)

现在,是否有针对JRuby / Groovy / Jython或其他"动态" JVM语言的框架或设计替代方案?

一些UI框架是Swing或SWT之上的层,例如,一个框架可以读取XML格式的Screen的描述并实例化相应的Swing组件。

如果您知道这样的框架但针对JVM"动态"语言,那么我也希望在答案中也能看到它们。


不完全是UI设计,但是您可以尝试Griffon。


Clojure有一些看起来很重要的GUI库/框架:

跷跷板将Swing包装在非常简洁的DSL中,可以肯定地用于声明式创建GUI接口:

1
2
3
4
5
6
7
(defn -main [& args]
  (invoke-later
    (-> (frame :title"Hello",
           :content"Hello, Seesaw",
           :on-close :exit)
     pack!
     show!)))

Incanter提供了很多图形和可视化功能(包括JFreeChart等)。它不是一个通用的GUI库,但是如果您专注于统计信息,则非常有用:

1
2
;; show a histogram of 1000 samples from a normal distribution
(view (histogram (sample-normal 1000)))

还有一些简洁的示例代码可用于将JavaFX 2.0包装在Clojure中-这又更像是声明性DSL:

1
2
3
4
5
6
7
8
9
(defn -start [app stage]
   (eval
     (fx Stage :visible true :width 300 :height 200 :title"hello world"
         :scene (fx Scene
                  (fx BorderPane :left (fx Text"hello")
                      :right (fx Text"Right")
                      :top (fx Text"top")
                      :bottom (fx Text"Bottom")
                      :center (fx Text"In the middle!"))))))

我认为Jruby的两个最成熟的框架是Monkeybars(http://monkeybars.rubyforge.org/)和Limelight(http://limelight.8thlight.com/)。

Monkeybars是完整的rubyesque MVC实现,可以与Swing GUI构建器结合使用,而Limelight像Shoes一样,具有最小的代码/最大的效果比。


推荐阅读