Привет,
Я хочу написать небольшую кроссплатформенную служебную программу с графическим интерфейсом. Какой язык / GUI-библиотеку я должен использовать? Возможно ли это вообще?
Это будет небольшая программа, поэтому я не хочу заставлять людей загружать JVM или .NET Framework. Возможна ли его разработка изначально?
Обновление 1.
Под «изначально» я подразумеваю, что конечным результатом будет собственный код без промежуточных уровней, таких как виртуальная машина Java или среда выполнения общего языка .NET.
Обновление 2.
БЕСПЛАТНОЕ решение предпочтительнее;)





Вы хотите изначально разработать кроссплатформенную программу? Эээ ... Я не думаю, что это сработает, в основном потому, что это парадоксальная фраза. Если вы пишете собственный код, он по самой своей природе будет работать только на той платформе, для которой вы его запрограммировали. ;-) В этом суть Frameworks.
Поэтому вместо этого вам следует использовать очень тонкий фреймворк, если ваша программа будет такой маленькой. Идея компании itsmatt о Qt вполне возможна.
Вы смотрели Qt?
Как насчет Python, использующего Qt или Wx, а затем PythonToExe для создания «распространяемого»?
Мысль придется отдать разработке, чтобы гарантировать, что не используются собственные функции (например, реестр и т. д.). Также такие вещи, как разрывы строк в текстовых файлах, будут иметь разные escape-символы, поэтому их нужно будет обработать.
Если вы знаете C или C++, то первые кросс-платформенные графические интерфейсы, о которых я могу думать, это:
Если вы знаете Паскаль, вы можете попробовать Freepascal + Лазарь. Но я никогда им не пользовался.
Qt теперь имеет (бесплатную) лицензию LGPL, поэтому приведенный выше комментарий skymt больше не является правильным.
WxWindows? О, теперь это называется WxWidgets: http://www.wxwidgets.org/
Без проблем. На самом деле, сейчас он выглядит действительно отполированным, возможно, придется когда-нибудь поиграть :)
wxWidgets имеет привязки ко всем видам языков - например, к python, если ваше приложение достаточно мало.
Проблема в следующем: если вы не хотите иметь графический интерфейс, но не хотите просить пользователя загрузить вечный API, Framework или виртуальную машину для его запуска, будь то TCL / TK, Java или QT и т. д., Тогда вы заблудиться довольно быстро.
Причина в следующем: вам придется перестроить все (GUI) функциональные возможности, которые предоставляют вам эти API, фреймворки и виртуальные машины, чтобы они не зависели от платформы. И это очень много работы ...
С другой стороны: виртуальная машина Java устанавливается практически в любой операционной системе с нуля, почему бы не попробовать эту?
Вы можете статически связать Tk, wxWidgets, Qt, SDL и т. д.
Если он «ДОЛЖЕН быть Desktop», используйте Qt. Ничто не сравнится с этим прямо сейчас.
Однако лично я отказался от настольных компьютеров, и любой проект на основе пользовательского интерфейса, который я делаю, обычно основан на браузере / сервере. Вы можете легко написать небольшой настраиваемый сервер, который прослушивает какой-либо порт, чтобы программа могла работать локально, без необходимости для ваших пользователей устанавливать Apache или иметь доступ к сети. У меня есть небольшая структура Lua, Python и C++, которую я сделал для этой цели (хочу добавить Javascript для бэкэнда с V8 :)
Какие ОС вы имеете в виду, когда говорите о кроссплатформенности?
Как правильно указывает Эпага, нативная и кроссплатформенная системы исключают друг друга. Вы можете написать несколько версий, которые изначально работают на нескольких платформах, или вам нужно использовать некоторую кроссплатформенную структуру.
В случае кроссплатформенного фреймворка всегда будут требоваться дополнительные установки. Например, многие здесь предлагают использовать Python и один из его фреймворков. Это потребовало бы указания людям сначала установить python - и, возможно, фреймворк.
Если вы нацелены на Windows и OS X (и готовы поэкспериментировать с кодом альфа-версии для Linux, если требуется поддержка этой ОС), я настоятельно рекомендую вам взглянуть на использование Adobe AIR для кроссплатформенных приложений с графическим интерфейсом. .
Если вы собираетесь взглянуть на Qt и WxWidgets, не забудьте также проверить GTK +!
Вспышка? Он установлен практически везде.
Я согласен с Георгием, Java - это то, что нужно. Немного поработав, вы можете заставить свое настольное приложение работать и как Java-апплет (чтобы пользователям вообще не нужно было что-либо активно загружать). См. http://www.geogebra.org как пример приложения, которое гладко работает как кроссплатформенное приложение Java И имеет простой порт для веб-апплета.
Два других преимущества использования Java:
Один недостаток:
Попробуйте RealBasic. Синтаксис, подобный Visual Basic, предназначен для Win32, OS X и Linux. Я не знаю подробностей о нацеливании на Linux, но для любой кроссплатформенной разработки, которую я делал между Win32 и OS X, это было мечтой.
Обновлено: генерирует собственные исполняемые файлы. Есть небольшая стоимость - 100 долларов.
Лазарь великолепен. GTK2 в Linux, win32 / 64 в Windows, WINCE в euh, Wince. Он даже использует Carbon на Mac (работает на COCOA). Также легко продать своему начальнику (код совместим с Delphi)
Я согласен с Дэвидом Виесом и Георгием,
Java - это по преимуществу кроссплатформенность. Вы буквально один раз пишете и бегаете везде. Нет необходимости компилировать код для каждой целевой ОС или разрядности, не нужно беспокоиться о компоновке с чем-либо и т. д.
Единственное, как вы указали, - это то, что JRE должна быть установлена, но это быстро и просто сделать даже для начинающих конечных пользователей (это вопрос нескольких нажатий «Далее>» в установщике).
А с Java Web Start развертывание становится еще проще: пользователь просто нажимает кнопку запуска на веб-странице, и приложение запускается (если установлена надлежащая JVM в соответствии с тем, что указано в дескрипторе JNLP), или пользователь перенаправляется на страницу загрузки Java. (если подходящей JVM не найдено).
Qt бесплатен только для проектов GPL. Проекты с другими некоммерческими лицензиями, в том числе с популярными лицензиями с открытым исходным кодом, такими как BSD или MIT / X11, требуют оплаты. FWIW, Qt - мой выбор благодаря его полноте и хорошо продуманному API.