Должен ли я использовать Java для пользовательского компонента Swing, разработанного для приложения clojure?

Мне нужен простой компонент временной шкалы (например, в программном обеспечении для редактирования видео) для приложения clojure/seesaw, и мне интересно, насколько это хороший подход, чтобы реализовать это непосредственно с помощью clojure и seesaw, или мне следует написать его в java и создать оболочку clojure вокруг него.

Или в более общем плане: является ли функциональный язык программирования оптимальным для написания виджетов пользовательского интерфейса? Я не могу себе представить, чтобы сделать это без большого участия государства. И не был ли ОО изобретен для разработки UI?

3 ответа

Решение

Вы могли бы пойти в любую сторону. На Overtone мы создали ряд пользовательских графических компонентов непосредственно в Clojure с помощью Seesaw. Много раз, атом и (seesaw.core/canvas) достаточно для такого рода вещей.

В зависимости от того, насколько вы хотите, одна из причин сделать это в Clojure - вы можете расширить протоколы Seesaw (выбор, привязка и т. Д.) Для нового виджета, чтобы он без проблем работал с Seesaw. Другое соображение заключается в том, должен ли ваш виджет использовать данные Clojure из других частей приложения. Это будет намного чище от Clojure, чем Java.

Тем не менее, если вы знакомы с Swing/Java, вы можете сделать это там, и Seesaw будет очень рад работать с пользовательским виджетом, встроенным в Java. Удачи!

FP хорош для программирования UI, но для этого базовая структура UI должна также основываться на концепциях FP, таких как FRP и т. Д. В вашем случае базовая структура UI (Swing) основана на OO, и, следовательно, было бы проще реализовать ее в Java но вы все еще можете сделать это в качелях.

При прочих равных условиях (т. Е. При условии, что вы знаете и Clojure, и Java), я, вероятно, написал бы это как пользовательский компонент Swing в Java.

Причины:

  • Swing по своей сути является основанной на Java средой ООП и лучше подходит для Java с точки зрения парадигмы.
  • Изменяемое состояние легче в Java, чем в Clojure
  • Если вы пишете это на Java, вы можете использовать его в другом месте более легко (например, как библиотека из другого кода Java)
  • Компонент Swing легко обернуть в Clojure после того, как вы его создали

Конечно, для самой логики приложения я бы предпочел Clojure.

Другие вопросы по тегам