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

У меня есть приложение для каталогизации DVD, которое я написал несколько лет назад с помощью MFC. Записи сохраняются в базе данных sqlite, поэтому в основном это приложение CRUD. С точки зрения пользовательского интерфейса он имеет древовидное представление слева, представление списка (сетку) вверху справа и представление HTML (встроенный IE) справа внизу. Ничего фантастического.

Я хотел обновить приложение, добавив в него больше функций, но последние пару лет я использую Java EE и понял, что с MFC у меня нет никакой продуктивности. Так что я думаю, может быть, мне стоит использовать что-нибудь еще, чтобы повысить свою продуктивность. Кроссплатформенность была бы большим бонусом, но это не обязательно.

Вот варианты, основанные на моем исследовании:

  • Java / Swing: я могу использовать свои знания Java; отличные сторонние библиотеки (например, Spring для IoC и Hibernate для ORM); кроссплатформенность. Обратной стороной является то, что для пользователей требуется JRE; Кажется, что Swing находится в режиме «обслуживания», и Sun не уделяет ему особого внимания.
  • C ++ / Qt: собственное приложение; кроссплатформенность. Но я новичок в Qt, поэтому сначала мне нужно его изучить.
  • C # / WPF: WPF кажется будущим разработки графического интерфейса Windows, и я впечатлен некоторыми примерами приложений WPF. У меня есть некоторый опыт работы с C #, но мне нужно изучить WPF. Обратной стороной является только Windows; Требуется среда выполнения .NET 3.5.

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


person SamS    schedule 16.04.2009    source источник


Ответы (11)


Если вы хотите получить новые навыки при разработке этого приложения, то C # / WPF и LINQ в C # 3.0 действительно хороши, если у вас их не было в Java.

Если вы просто хотите набрать скорость, тогда вы уже отвечаете на свой вопрос, Java / Swing. Это то, в чем вы хороши.

person J.W.    schedule 16.04.2009

На самом деле я большой поклонник C #, но, поскольку вы сказали, что кроссплатформенность будет огромным бонусом, я думаю, что Qt на самом деле может быть лучше для этого. C # может быть кроссплатформенным через Mono, но в этом отношении у меня были лучшие результаты с Qt. У них также есть действительно хорошая документация в QtAssistant, с которой вы можете начать.

person Erich Mirabal    schedule 16.04.2009

Подумайте также о PyQt + Python, если ваша продуктивность является большой проблемой. Поверьте, когда я говорю, что изучение Qt того стоит, и не так сложно, как может показаться поначалу.

Поддержка Sqlite есть как в стандартных библиотеках Python, так и в модуле QSql в Qt, если вы предпочитаете это использовать.

PyQt + Python также является кроссплатформенным вариантом, поскольку Python доступен для многих платформ и кроссплатформенности Qt с самого начала.

Все элементы управления, которые вы упомянули в своем приложении, доступны в Qt.

person Community    schedule 16.04.2009

Единственный другой инструмент, кроме чистого C ++, - это Delphi. Период.

С другими инструментами у вас возникнут проблемы при развертывании.

С Delphi вы создадите собственных бывших, самодостаточных. Кроме того, подключение к базе данных отличное.

Вы никогда не будете разочарованы отсутствием элементов управления или сторонних инструментов, в основном с исходным кодом и бесплатным / коммерческим набором инструментов.

И время компиляции самое быстрое в этой галактике;)

Итак, если вы серьезно относитесь к предоставлению беспрепятственного приложения для своих клиентов, и эти клиенты не ориентированы на технологии, как разработчики, поэтому вы можете быть сбиты с толку, потому что какая из четырех сред выполнения .NET, установленная, требует минимальной поддержки, простой загрузки, щелчка мышью. click-install-go, приложения, которые работают мгновенно, как Skype, TopStyle (созданный с помощью Delphi) и другие, тогда Delphi / C ++ - ваш единственный вариант. Шутки в сторону. ЕДИНСТВЕННЫЕ варианты.


Если вам нужно кросс-платформенное решение, то FreePascal / Lazarus может работать, если ваш графический интерфейс минималистичен.

person mamcx    schedule 16.04.2009

В большинстве случаев, если объем проекта достаточно мал, а вычислительные потребности скромны, я предпочитаю использовать TCL / Tk. Я еще не изучил gui api, в котором я более продуктивен, чем tk (не сказать, что его нет, просто я пробовал несколько и нашел их медленнее). TCL, конечно, не самый лучший язык для программирования, хотя есть ряд надстроек, которые очень помогают, в частности [ incr tcl ] и tcllib.

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

person SingleNegationElimination    schedule 16.04.2009
comment
Я согласен, хотя мы, вероятно, не согласны с определением «разумно малый». Я думаю, что при правильной разработке Tcl хорошо масштабируется до десятков или сотен тысяч строк кода. Не то чтобы вам так много нужно. В настоящее время у меня на флэш-накопителе есть приложение CRUD, завершенное на 90%, а это всего лишь 2000 строк кода. - person Bryan Oakley; 18.04.2009

Что ж, если вам действительно нужно приложение типа платформы класса, я бы преобразовал его в веб-приложение и разместил его. Таким образом, если один пользователь загружает информацию на DVD или обложку DVD, другой пользователь может воспользоваться этой информацией, уже введенной в систему.

Если вы собираетесь разрабатывать для настольных ПК, постарайтесь создать впечатление, что это приложение, созданное для этой платформы, с помощью инструментов пользовательского интерфейса ОС. А для Windows выберите 3-й вариант C # / WPF.

person Mark    schedule 16.04.2009
comment
Вам не нужно быть веб-приложением, чтобы быть готовым к работе в Интернете. WebStart прекрасно справляется с этим. Если вам нужна интеграция с Windows (или интеграция с рабочими столами, отличными от Windows), я уверен, что вы можете найти подходящие библиотеки Java для конкретной платформы. - person Tom Hawtin - tackline; 17.04.2009

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

person lothar    schedule 16.04.2009

Вместо C # / WPF вы можете взглянуть на Silverlight. Ваше приложение кажется достаточно простым, чтобы его не пришлось долго запускать. Подобно демонстрациям, которые демонстрируются на конференциях.

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

Вы сможете ориентироваться на пользователей Windows / Mac и, возможно, Linux с помощью Moonlight. Но я не смотрел на Linux последние 8 лет, поэтому особо не могу сказать о нем.

person Robert Kozak    schedule 16.04.2009

С Eclipse RCP вы получаете Java, кросс-платформенную разработку (см. Delta Pack), собственный внешний вид (через SWT) и отличную коллекцию фреймворков для разработки настольных систем (декларативный пользовательский интерфейс, управление плагинами и т. Д.). Вам обязательно стоит попробовать.

person thSoft    schedule 16.04.2009

Я пошел по маршруту C ++ / wxWidgets (но вы могли бы сделать Qt) несколько месяцев назад, когда был представлен почти тот же сценарий (обновите приложение с помощью SQLite db). wxWidgets было довольно легко подобрать, в нем было все необходимое, и он был намного проще, чем MFC. Самое приятное, что я нашел хорошую оболочку C ++ для SQLite на CodeProject (например, CPPSQLite) и все это заработало в кратчайшие сроки ... Проект продал мне wxWidgetss, если вы не можете сказать.

person bi0m3trics    schedule 17.04.2009

На самом деле я бы очень внимательно присмотрелся к чему-то вроде глинобитного воздуха. Это кроссплатформенный и может быть основан на html / javascript, поэтому, скорее всего, вам не придется многому научиться, за исключением, может быть, одной или двух библиотек javascript. У него есть возможность общаться с локальным хранилищем данных или через Интернет с веб-сервисом или RESTFUL-сервисом. Разработка бесплатна с aptana. Посмотрите, что в нем написано:

http://www.adobe.com/products/air/showcase/

person stimms    schedule 18.04.2009