Для разработчика экосистемы Java есть несколько вариантов дизайна пользовательского интерфейса. Наиболее известны:
Теперь, есть ли какие-либо фреймворки или альтернативы дизайну, которые нацелены на JRuby / Groovy / Jython или другие «динамические» языки JVM?
Некоторые инфраструктуры пользовательского интерфейса являются слоями над Swing или SWT, например, инфраструктура может читать описание экрана в XML и создавать экземпляры соответствующих компонентов Swing.
Если вы знаете подобный фреймворк, но он нацелен на «динамические» языки JVM, я бы тоже хотел видеть их в ответах.




Не совсем дизайн пользовательского интерфейса, но вы можете попробовать Грифон.
Я думаю, что двумя наиболее зрелыми фреймворками для Jruby являются Monkeybars (http://monkeybars.rubyforge.org/) и Limelight (http://limelight.8thlight.com/).
Monkeybars - это полная рубиновая реализация MVC, которую можно использовать в сочетании с построителем графического интерфейса Swing, в то время как Limelight стремится к минимальному соотношению кода / максимальному эффекту, как и Shoes.
Clojure имеет несколько библиотек / фреймворков графического интерфейса, которые выглядят приоритетно:
качели превращает Swing в очень сжатый DSL, который, безусловно, можно использовать для декларативного создания интерфейсов GUI:
(defn -main [& args]
(invoke-later
(-> (frame :title "Hello",
:content "Hello, Seesaw",
:on-close :exit)
pack!
show!)))
Incanter предоставляет довольно много функций построения графиков и визуализации (помимо прочего, обертывание JFreeChart). Не совсем обычная библиотека графического интерфейса, но очень полезная, если вы сосредотачиваетесь на статистике:
;; show a histogram of 1000 samples from a normal distribution
(view (histogram (sample-normal 1000)))
Также появляется отличный пример кода для упаковка JavaFX 2.0 в Clojure - опять же, это больше похоже на декларативный DSL:
(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!"))))))