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

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

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

Ответы [ 3 ]

4 голосов
/ 23 марта 2012

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

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

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

2 голосов
/ 23 марта 2012

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

Причины:

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

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

2 голосов
/ 23 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...