2008-09-26 2 views
13

Greetings,Как написать кросс-платформенную программу?

Я хочу написать небольшую кросс-платформенную утилиту с графическим интерфейсом. На какой язык/GUI-библиотеку я должен придерживаться? Возможно ли это вообще?

Это будет небольшая программа, поэтому я не хочу, чтобы люди загружали JVM или .NET Framework. Возможно ли разработать его изначально?

Update 1.

Под "родной" Я имею в виду, что конечный результат будет машинный код без промежуточных слоев, таких как виртуальная машина Java или .NET Common Language Runtime

Update 2.

A БЕСПЛАТНОЕ решение;)

ответ

5

Вы хотите разработать кросс-платформенную программу изначально? Э ... Я не думаю, что это сработает, главным образом потому, что эта фраза - парадокс. Если вы пишете собственный код, он по самой своей природе будет работать только на платформе, для которой вы его запрограммировали. ;-) Вот что такое Рамки.

Итак, вместо этого вы должны использовать очень тонкую структуру, если ваша программа будет такой маленькой. Его идея Qt - возможность.

3

Как насчет Python с использованием Qt или Wx, а затем с помощью PythonToExe сделать «распространяемый»

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

15

Если вы знаете, C или C++ рамки платформы GUI первого кросс я могу думать, являются:

  • QT (C++, патентованный, но бесплатно с лицензирование LGPL)
  • wxWidgets (C++, наиболее полный и стабильный, но и огромный)
  • FLTK (C++)
  • FOX (C++)
  • IUP (C, проще и чище, чем те выше)

Если вы знаете Pascal, вы можете попробовать freepascal + Lazarus. Я никогда не использовал его.

+0

Отличный ответ Remo.D – 2008-09-26 11:38:59

+0

Qt доступен только для проектов GPL. Проекты с другими некоммерческими лицензиями, в том числе популярные с открытым исходным кодом, такие как BSD или MIT/X11, должны оплачиваться. FWIW, Qt - мой выбор благодаря своей полноте и хорошо продуманному API. – skymt 2008-09-26 11:50:18

+5

Qt теперь имеет (бесплатно) лицензию LGPL, поэтому приведенный выше комментарий skymt больше не верен. – KeyserSoze 2009-05-01 22:47:13

4

wxWidgets имеет привязки ко всем типам языков - например, python, если ваше приложение достаточно мало.

6

Проблема заключается в том, что если вы не хотите иметь графический интерфейс, но не хотите, чтобы пользователь загружал вечный API, платформу или виртуальную машину для ее запуска, будь то TCL/TK, Java или QT и т. д., тогда вы быстро теряетесь.

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

С другой стороны: виртуальная машина Java установлена ​​практически на любой операционной системе с нуля, почему бы не дать этому выстрел?

1

Если это «HAS» для настольных ПК, используйте Qt. Ничто не сравнится с этим прямо сейчас.

Однако лично я отказался от работы на рабочем столе, и любой проект на основе пользовательского интерфейса, который я делаю, обычно является браузером/сервером. Вы можете легко написать небольшой пользовательский сервер, который прослушивает какой-то порт, чтобы программа могла запускаться локально, при этом пользователям не нужно было устанавливать Apache или иметь доступ к сети. У меня есть небольшая инфраструктура Lua, Python и C++, которую я сделал для этой цели (хотите добавить Javascript для бэкэнд с V8 :)

3

Какие ОС вы имеете в виду, когда говорите кросс-платформу?

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

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

Если вы нацелены на Windows и OS X (и готовы экспериментировать с кодом альфа-релиза для Linux, если требуется поддержка этой ОС), я настоятельно рекомендую вам взглянуть на использование Adobe AIR for cross -платформенные графические приложения.

1

Если вы собираетесь ознакомиться с Qt и WxWidgets, не забудьте также зарегистрировать GTK+!

2

Flash? Он установлен практически везде.

3

Я согласен с Георгием, Java - это путь. С небольшим количеством работы вы можете заставить настольное приложение работать как апплет Java (так что пользователям вообще не нужно вообще ничего загружать). См. http://www.geogebra.org как пример приложения с плавными запусками как кросс-платформенное Java-приложение И имеет простой порт для веб-апплета.

Два других преимуществ использования Java являются:

  1. Они имеют обширные библиотеки для построения пользовательского интерфейса, в том числе строителей компонентов пользовательского интерфейса.
  2. Структура среды выполнения Java обычно обновляется автоматически для пользователя.

Один недостаток:

  1. Версия Java установлена ​​на вашем компьютере конечного пользователя не может быть полностью совместим с вашим приложением, требуя, чтобы закодировать до самого низкого вероятного знаменателю.
3

Попробуйте RealBasic. Синтаксис Visual Basic, предназначенный для Win32, OS X и Linux. Я не знаю никаких подробностей о настройке Linux, но для любой кросс-платформенной разработки, которую я делал между Win32 и OS X, это была мечта.

http://www.realbasic.com

Edit: Создает собственные исполняемые файлы. Существует небольшая стоимость - 100 долларов.

4

Lazarus отлично. GTK2 на Linux, win32/64 на Windows, WINCE на euh, Wince. Он даже использует Carbon на Mac (работает над COCOA). Также легко продать ваш босс (код Delphi совместимый)

1

Я согласен с Дэвидом Wees и Джорджи,

Java является кросс-platformness по преимуществу. Вы буквально пишете один раз и бегаете повсюду. Без необходимости составлять код для каждой целевой ОС или битности, не стоит беспокоиться о привязке к чему-либо и т. Д.

Единственное, что вы указали, - установить JRE, но это быстро и просто сделать даже для начинающих конечных пользователей (несколько раз в установщике несколько раз нажмите «Далее>»).

И с развертыванием Java Web Start становится еще проще: пользователь просто нажимает кнопку запуска на веб-странице и запускает приложение (если соответствующая JVM установлена ​​в соответствии с тем, что указано в дескрипторе JNLP), или пользователь перенаправляется на на странице загрузки Java (если подходящая JVM не найдена).

Смежные вопросы