Кроссплатформенный язык программирования с приличным набором инструментов для графического интерфейса?

Для идеи программы, которая у меня есть, требуется, чтобы программное обеспечение было написано в одном двоичном файле, который может выполняться всеми основными настольными платформами, то есть для него требуется интерпретируемый язык или язык в JVM. Либо со мной все в порядке, но язык программирования должен сбалансировать мощность и простоту (например, Python)

Я знаю о wxPython, но я читал, что его поддержка в Mac OS X довольно ограничена

Java звучит хорошо, и это выглядит хорошо, но это кажется слишком сложным для программирования

Любая помощь?

31.10.2009 04:34:48
Не уверен насчет требования «один двоичный файл». Пользователи ценят платформенный подход, который включает метод установки для конкретной платформы. Так что, если стоит сделать установщик для каждой платформы, вы также можете разрешить компиляцию / сборку для каждой платформы. Просто мысль.
Craig McQueen 19.11.2009 02:08:36
11 ОТВЕТОВ
РЕШЕНИЕ

Я использовал Python с wxPython довольно долгое время и нашел его очень простым в использовании. Теперь я использую Java с Swing и SWT.

Я предпочитаю Java, но это всего лишь личное предпочтение, поэтому не позволяйте этому влиять на вас.

Я не находил переход с Python на Java таким сложным. С точки зрения GUI, у них обоих есть парадигма менеджера по расположению - менеджеры разные, но не настолько разные, у вас будут проблемы с переключением.

Java имеет абсолютно огромную библиотеку классов до такой степени, что вам, вероятно, не нужно писать свою собственную версию чего-либо, а просто соединять вместе компоненты. Я никогда не был настолько глубоко в Python, но он может быть похожим. Одна вещь, которую я заметил, это то, что все действительно хорошие вещи, которые я использовал в Python (например, s [-4: -1]), все еще можно было сделать довольно легко в Java. Оба языка были на шаг впереди Си, где мне приходилось управлять строками с моими собственными библиотеками.

Если вы думаете, что wxPython ограничен в MacOS, вы должны попробовать Java. Я запускаю свой код Java в Windows, Linux и других UNIX без проблем совместимости. К сожалению, не Mac, поэтому я не могу посоветовать вам там.

Мой совет, выбирайте небольшой проект - делайте это на Python и Java - посмотрите, как он работает на всех интересующих вас платформах.

6
19.11.2009 01:57:03

Вы можете использовать Groovy для обхода сложностей Java.

Тем не менее, вам понадобятся хорошие основы Swing.

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

Имейте в виду, что, хотя это кроссплатформенное решение, вы должны учитывать, что разные платформы по-прежнему имеют разные идиомы (например, Copy / Past в Windows - ctrl + v, ctrl + v, а в Mac - cmd + c, cmd + v)

2
31.10.2009 04:45:25
  • Вы можете использовать любой из языков, ориентированных на JVM, например, Jython (Python Impl) и JRuby (Ruby Impl).

  • Вы можете попробовать использовать привязки Qt для Python, похоже , что Qt поддерживает многие особенности Mac OSX.

3
31.10.2009 04:44:38

Я работаю над программой, которая должна работать на Windows, Linux и OS X (и OS X - это моя платформа разработки), а wxPython - это то, что мы используем.

Если бы у меня была возможность начать все сначала, я бы, вероятно, пошел с PyQT (основываясь на советах друзей), но wxPython справится с этой задачей.

1
31.10.2009 04:46:12

Java кажется лучше для того, что вы хотите.

Ну, а как насчет веб-приложения в Javascript?

0
31.10.2009 04:50:33

Python с PyQt или, в конечном итоге, эквивалентный, но бесплатный PySide, кажется, путь - в конце концов, немногие языки легче программировать, чем Java (который вы считаете «почти слишком сложным для программирования»), Python - один из немногих, Qt, пожалуй, лучший кроссплатформенный инструментарий GUI на любом языке, и PyQt (сейчас, но GPL или для - $$$) или PySide (в конце концов, бесплатно, даже если вы хотите закрыть свой собственный исходный код). код) являются мощными интерфейсами между Python и Qt.

5
31.10.2009 04:52:15

Я думаю, что wxPython довольно хорош, хотя я не уверен, что вы подразумеваете под «поддержкой в ​​Mac OS X довольно ограниченно», но я портировал приложение wxPython (www.mockupscreens.com) на Mac, и это было не так сложно с небольшими изменениями, например, некоторые элементы пользовательского интерфейса могут работать не так, как вы ожидали, поскольку wxPython использует собственные элементы пользовательского интерфейса, что может быть преимуществом или недостатком в зависимости от ваших требований.

Другим хорошим вариантом является PyQT, который даст вам согласованный вид на всех платформах.

1
1.11.2009 05:29:33

Как насчет SWT

  • Кроссплатформенный
  • Родной внешний вид
  • Огромное сообщество
  • Постоянно поддерживается / обновляется (при поддержке IBM)
  • По крайней мере один мега успешный кроссплатформенный проект
0
1.11.2009 05:38:24
Кроме того, SWT имеет больше элементов управления, чем другие инструменты Java.
Bryan Rehbein 5.11.2009 15:40:41

Рассмотрим Tcl / Tk. Я не уверен, как вы определяете «один двоичный файл, который может выполняться [sic] всеми основными настольными платформами», но Tcl, вероятно, отвечает этому так же, как и Java, и, вероятно, лучше, чем любой другой язык сценариев.

Используя технологию упаковки tcl старкитов, вы можете либо: a) создать отдельный файл, который можно запустить на любой платформе с соответствующим механизмом времени выполнения (и они доступны для всех основных и многих второстепенных платформ), либо вы можете упаковать эту платформу. конкретный движок и кроссплатформенный старкит в один исполняемый файл для каждой платформы.

Технология starkit - это то, к чему должны стремиться другие языки. Вы получаете полную, полностью функциональную виртуальную файловую систему в одном файле. Это позволяет легко упаковать звуковые файлы, файлы dll / .so (которые должны быть скопированы на диск по очевидным (?) Причинам), изображения, данные и т. Д. Вместе с исполняемым кодом.

Tk, графическая библиотека, очень развитая и имеет действительно хорошую поддержку на всех платформах. Некоторые люди думают, что это выглядит устаревшим, но эти впечатления обычно основаны на информации, которой не менее 5 лет. Современный Тк выглядит неплохо. Некоторые примеры см. На сайте tkdocs . Я не знаю, интересуетесь ли вы больше конфетами или функциональностью, но если вас интересует функциональность, то Tk - это то, что нужно серьезно рассмотреть.

Большинство соглашается, что Tcl - приобретенный вкус, но те, кто использует его профессионально, обычно клянутся им. Последние несколько месяцев я занимался программированием на wxPython, и если бы мне предоставилась такая возможность, я бы мгновенно переключился на tcl / tk.

3
5.11.2009 15:37:00

Я хотел бы предложить пойти по маршруту wxPython, я знаю, что wxWidgets (который использует wxPython) может быть сделан для того, чтобы иметь великолепно выглядящие приложения Mac (посмотрите на PgAdmin3 из postgresql). В то время как PgAdmin3 не сделан в Python, он был сделан с помощью wxWidgets и прекрасно выглядит на Mac.

0
5.11.2009 15:42:37

Я регулярно использую три кроссплатформенных инструмента: Realbasic от Realsoftware - то, чем был бы Visual Basic v6, если бы позволил расти; Revolution от Runrev, который и был бы Hypercard, если бы ему удалось выжить (и его аккуратно, используя язык сценариев, синтаксис которого в основном английский); и наконец, Delphi Prism с Mono.

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

0
5.11.2009 15:51:18