2010-08-22 3 views
5

Для веб-приложений я использую Ruby on Rails. И теперь пришло время посмотреть, могу ли я закодировать Desktop Applications с Ruby.MacRuby + IronRuby или JRuby для настольных приложений?

Так что я задаюсь вопросом, какой из них я должен выбрать.

То, что я вижу, это MacRuby + IronRuby vs JRuby.

Первое позволяет мне иметь настольные приложения как для Mac, так и для Windows, в то время как последнее позволяет иметь в обоих, но только для изучения одного инструмента.

  • Есть ли веские аргументы в пользу использования прежних, чем последние?

  • Будет ли приложение JRuby Desktop быть родным (или почти достаточно-родным) в качестве приложений MacRuby + IronRuby Desktop?

  • Каковы плюсы и минусы для каждого решения?

Im very new too Desktop development. Поделитесь своими мыслями и опытом!

ответ

3

MacRuby использует собственный стек Apple Objective C.
Достоинства: Его библиотека классов в основном представляет собой оболочку классов Objective C GUI. Вы получаете быстрые родные приложения.
Против: Работает только на компьютерах Mac. Они не переносимы на iPad и iPhone (ни один из Ruby-решений).

IronRuby использует собственную среду Windows .NET.
Профи: Используйте собственные WinForms для создания богатых собственных приложений. Он имеет доступ ко всей экосистеме библиотек .NET.
Против: Работает только в Windows.

JRuby использует уровень абстракции Java (JVM).
Достоинства: Доступны несколько доступных графических библиотек. Наиболее распространенными являются SWT и Swing. SWT использует собственные виджеты и быстрее и более родным. Swing - это чисто Java (эмулируемые виджеты) и более портативен. Есть еще библиотеки, абстрагирующие SWT и Swing, чтобы сделать их более удобными для Ruby. Посмотрите на Profligacy для Swing, например.
Против: слой над слоем над слоем. Swing и SWT очень зрелые, но слои Ruby выше них меньше.

Существует также другой вариант
рубин с библиотекой Qt.
Qt - это кросс-платформа, использует собственные виджеты и написан на C++. Это довольно быстро, но библиотека сложная и большая.

Мое эмпирическое правило более сложное, чем ваш графический интерфейс, тем ближе вы должны быть к родной платформе. Вам также нужно оценить кривую обучения для каждой из этих графических библиотек и усилия, необходимые для взаимодействия между платформами.

+2

Неверно, что IronRuby работает только на Windows. Он работает повсюду, где доступна реализация CLI, совместимая с ISO, что практически повсеместно. Черт возьми, есть даже реализация CLI для iPhone! На самом деле, если я правильно помню, был пакет Debian для IronRuby * до *, для него был установщик Windows. Кроме того, YARV работает на iPhone. О, и вы забыли довольно важное различие: YARV, MRI, Rubinius, IronRuby и JRuby выпущены, готовые к производству и совместимы со стандартами, MacRuby - это ни одна из этих вещей AFAICT. –

+3

@ Jörg W Mittag: Я старался избегать эзотерических решений в своем ответе, потому что они вводили дополнительные уровни и ограничения. Например, IronRuby за пределами Windows нуждается в чем-то вроде Mono для интерпретации кода CLI. На iPhone аналогичный MonoTouch фактически компилирует собственный код, а не CLI, и вы не можете использовать .NET GUI с ним. Что касается YARV на iPhone, я не мог найти ссылку на это. Apple довольно жестко заявила, что не допускает промежуточных уровней, таких как Silverlight, Flash, JVM на iPhone/iPad. – Alkaline