Подтвердить что ты не робот

GUI в Scala/Groovy/Clojure

В прошлый раз мне приходилось иметь дело с Java в 2005 году, и с тех пор я забыл обо всем этом.

Сегодня мне нужно создать графическое приложение на вершине Java. Я думаю, что лучше использовать один из языков Scala/Groovy/Clojure.

Вопрос: какой из них лучше подходит для настольных графических программ? Моя программа преобразует и отображает серию jpeg/png файлов + будет ~ 10 диалогов (с множеством опций в каждом со всеми возможными виджетами).

Основным требованием является компактность: мне не нравится писать дюжину строк кода только для рисования простого кадра с помощью кнопки. Мой фон в графическом интерфейсе (в основном) Tcl/Tk и GTK +.

4b9b3361

Ответ 1

Scala поставляется с довольно полными примерами приложений для основных элементов GUI, которые вы можете запустить, набрав scala scala.swing.test.UIDemo в командной строке. Вы можете просмотреть исходный код для них здесь.

Вы также можете посмотреть этот документ, чтобы получить представление о принципах дизайна Scala Swing wrappers.

Ответ 2

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я программист Clojure. Я явно предвзято.

Из всех этих языков, я думаю, Clojure и Groovy, вероятно, самые компактные. Scala - это язык с фигурными скобками, такой как Java, поэтому он имеет тенденцию занимать немного больше места. Однако он нигде не близок, как Java, и я думаю, что Scala довольно классный. Я знаю, что Scala имеет swing wrapper. Я никогда не делал разработку графического интерфейса в Scala, поэтому я не могу сказать, как он себя чувствует.

Я сделал некоторое развитие swing в Clojure, и на самом деле это не так много. Использование swing прямо из Clojure может быть утомительным, пока вы не напишете себе некоторые абстракции, но в целом приложения для swing меньше, чем то же самое в Java, потому что код Clojure имеет тенденцию быть короче и более кратким, чем Java-код.

Clojure также имеет некоторые обертки, чтобы сделать разработку качания более Clojury. Один из них clj-swing. Я видел код, написанный с его использованием, и это довольно круто, и определенно более кратким, чем прямой interop.

Теперь я не знаю Groovy. Я действительно ничего не знаю об этом, но я знаю, что он более компактный, чем Java, поэтому я предполагаю, что разработка графического интерфейса будет довольно компактной.

Я думаю, что Clojure - это безопасная ставка. С помощью clj-swing или даже непосредственно с помощью инструментария Java GUI напрямую будет действительно компактным по сравнению с Java, а способность создавать абстракции по некомпактным материалам с помощью макросов определенно является огромным плюсом. Clojure имеет мой голос.

Ответ 3

Groovy имеет структуру Griffon, которая использует условную конфигурацию для создания приложений GUI на JVM. Он похож на grails/rails, но на богатый графический интерфейс, а не на веб-приложение.

Ответ 4

Groovy имеет что-то, называемое swing builder для упрощения программирования графического интерфейса. Вот фрагмент кода примера с веб-сайта groovy, он создает кадр с кнопкой и подсчитывает количество раз, когда вы нажимаете на него:

int count = 0
new SwingBuilder().edt {
  frame(title:'Frame', size:[300,300], show: true) {
    borderLayout()
    textlabel = label(text:"Click the button!", constraints: BL.NORTH)
    button(text:'Click Me',
         actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"},
         constraints:BL.SOUTH)
  }
}

Ответ 5

В настоящее время я разрабатываю приложение SWT в Scala и очень люблю его. Но я ожидаю, что Clojure будет еще более компактным.

Ответ 6

Я писал графический интерфейс, используя Clojure напрямую с Swing. До сих пор он работал очень хорошо. Я также написал некоторые пользовательские компоненты пользовательского интерфейса на Java, которые очень легко интегрировались с частью Clojure базы кода.

Я также считаю, что clj-swing выглядит великолепно - возможно, проще, чем использовать Swing напрямую, если у вас нет предыдущего опыта Swing.