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

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

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

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

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

Ответы [ 11 ]

6 голосов
/ 31 октября 2009

Я довольно долго использовал 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 - посмотрите, как он работает на всех интересующих вас платформах.

5 голосов
/ 31 октября 2009

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

3 голосов
/ 05 ноября 2009

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

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

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

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

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

3 голосов
/ 31 октября 2009
  • Вы можете использовать любой из языков, нацеленных на JVM, например, Jython (включая Python) и JRuby (включая Ruby).

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

2 голосов
/ 31 октября 2009

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

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

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

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

1 голос
/ 01 ноября 2009

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

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

1 голос
/ 31 октября 2009

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

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

0 голосов
/ 05 ноября 2009

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

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

0 голосов
/ 05 ноября 2009

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

0 голосов
/ 01 ноября 2009

Как насчет SWT

  • Кросс-платформа
  • Родной внешний вид
  • Огромное сообщество
  • Постоянно поддерживается / обновляется (при поддержке IBM)
  • Atleast one мега успешный кроссплатформенный проект
...