Что выбрать для создания кроссплатформенного приложения
Что бы вы из ниже перечисленного порекомендовали для создания кроссплатформенного приложения и почему. Или предложите свой вариант.
- Qt
- Java
- .net + Mono
- wxWidgets
- Lazarus
Заранее спасибо за советы!
Если не сложно, то, пожалуйста, аргументируйте. Почему именно Java? Спасибо.
[QUOTE=shine]А если бы нужно сделать действительно хорошую штуку - делал бы вебсервис.[/QUOTE]
Нет, веб-сервис не подходит. Должно быть именно приложение.
моно пока в деве.
остальное хз
- Qt
- Java
- .net + Mono
- wxWidgets
- Lazarus
Когда мы планировали многоплатформенный проект, выбрали wxWidgets. QT не подошёл по причине платности (проект планировался как коммерческий), Java и .NET - по причине скорости и наличия дополнительных библиотек, а Lazarus просто сырой как среда. Да и FPC оставляет желать лучшего.
Выбор wxWidgets был в чём-то и субъективным - я горячий поклонник решений Borland (к wxWindows Borland здорово приложился).
К сожалению, проект не получил финансирования и остался нереализованным - в деле попробовать библиотеку не удалось.
моно пока в деве.
остальное хз
QT есть под винду, никсы и маки (не считая QTopia). + Может (в будущем) использоваться в разработке на яве. Объективный минус - проблемы с IDE и прочими утилитами для практ. разработки. Есть, правда, QDevelop, но она сыровата еще, и с Unicode проблемы были.
Тут не могу судить, что лучше, последнее не видел.
Многие проги на QT получаются какими-то корявыми, в плане окошек и графики.
Это спорно. Примеры прог на Qt c откровенно кривым интерфейсом (не из-за кривости рук девелопера, а из-за ограничений со стороны библиотеки)?
А мне лично, так лучше связка Java и Python. С этой парочкой можно обойтись даже без С/С++ :)
По переносимости ява конечно более обширна, чем Qt. C другой стороны, Qt, как я уже сказал, есть под все часто встречающиеся платформы, а необходимость пересобрать программу под каждую из них мне не представляется особо критичным.
Мое имхо (рассматриваю Qt для С++):
+ Qt:
- Быстрей Java и .NET (пусть и не намного явы)
- Поскольку является С++ - библиотекой, существенно проще работать с нативным апи (если это нужно а приложении).
- Хороший GUI.
- Qt:
- Нету по настоящему удобных и мощных средств разработки (если сравнивать с VS, NetBeans,Eclipse - такого уровня).
- Так как это не язык и не платформа по сути, а прикладная оконная библиотека (пусть и с возможностями для работы с сетью, файлами, БД и.т.д.) то арсенал готовых дополнительных пакетов-библиотек будет поуже, чем в Java или .NET - надо будет использовать сторонние библиотеки.
- Нету по настоящему удобных и мощных средств разработки (если сравнивать с VS, NetBeans,Eclipse - такого уровня).
А как же QT Designer???
- Быстрей Java и .NET (пусть и не намного явы)
- Поскольку является С++ - библиотекой, существенно проще работать с нативным апи (если это нужно а приложении).
- Хороший GUI.
И можно ещё один вопрос.... Как Вы лично сравниваете скорость работы, прошу прощения, "QT" и Java. Java это вобще платформа, как сравниваете-то скорость выполнениея скомпилированного машинного кода и байт кода Java на JVM??? Интерепретация или компиляция на ходу(иль как в Питоне, помпиляция в файл .py перед началом выполнения проги) это не одно и тоже, как сравниваете-то со скоростью выполнения машинного кода??? :rolleyes:
Простите, но причем здесь среда разработки и Qt Designer? Trolltech позиционирует его только как средство разработки GUI. Вы его видели? :)
А как же QT Designer???
Odissey_ Тут про это сказал, я только добавлю - что QtD прикручивается к QDevelop (как и другие Qt-утилит , например еще lingvist, lrelease, lupdate, qmake, а так же MinGW средства - make и gdb).
И можно ещё один вопрос.... Как Вы лично сравниваете скорость работы, прошу прощения, "QT" и Java. Java это вобще платформа, как сравниваете-то скорость выполнениея скомпилированного машинного кода и байт кода Java на JVM??? Интерепретация или компиляция на ходу(иль как в Питоне, помпиляция в файл .py перед началом выполнения проги) это не одно и тоже, как сравниваете-то со скоростью выполнения машинного кода??? :rolleyes:
squirL Тебе правильно сказал, в данном случае мы сравниваем производительность программы в итоге. Но в принципе - я больше даже по своему некоторому опыту и отзывам знакомых программистов, которые пробовали и то, и другое, и третье.
[quote=3A3-968M]
Вот только не надо на Java и .NET по части быстродействия бочку катить. Если падает быстродействие - значит руки кривые. Процессом сборки мусора можно косвенно управлять (особенно в .NET, где есть критические финализаторы). Если нужна максимальная кроссплатформенность с возможностью запуска начиная с мобильников заканчивая ПК то тогда Java конечно.[/quote]
Я не качу ничего ни на кого (тем более,что сейчас сам на шарпе стал писать:)). Насчет того, что нативный код теоретически несколько быстрее, уже был разговор в твоем разделе, и ты это сам тогда озвучил и доказал математически:), когда компиляторы шарпа обсуждали. В 90% задач этой потерей можно пренебречь (пример исключений - игры, как сказал aks ), поскольку она с лихвой окупится удобством разработки. А кривость рук - это глобальный вопрос, и в том числе - зависит от знаний разрабом конкретного языка, я его тут не поднимал (хотя, конечно, наверняка Qt владеет несравнимо меньшее число программистов, чем Java или .NET).
По остальным пунктам моего высказывания - про доступ к нативному апи думаю, не будешь спорить. А про удобство GUI - так написал же, что мое imho;).
[quote=3A3-968M]
Да и .NET работает как на Linux так и на Windows, плюс широкая интеграция с ActiveDirectory, MS SQL Server - что для бизнес-приложения под Windows очень важно. [/quote]
Поскольку мы рассматриваем чисто кроссплатформенное приложение (и автор его никак не заточил под какую-то ось ), то всем понятные преимущества .NET в виндах над другими платформами я бы не назвал тут существенными.
[quote=3A3-968M]
Правда не ясно, какого-рода автор хочет писать приложение?? Если нужна максимальная кроссплатформенность с возможностью запуска начиная с мобильников заканчивая ПК то тогда Java конечно.[/quote]
Тут совершенно согласен с тобой, и всеми, кто высказал такую мысль. считаю, что пока автор не конкретизирует задачу, почти бессмысленно тут обсуждать.
Согласен конечно же, но Вы сравниваете итоги как оконечный пользователь. 'С' не работает ведь на VM и если исключить время загрузки кода, время компиляции/интерпретации в байт код для Java, то мне здаётся что Си будет немногим выигрывать по скорости, а может и наоборот. :cool:
Мне тоже кажется, что бессмысленно что-то говорить про всё это, раз автору совершенно до фени. :D
Ну че сразу "до фени".:) Я все внимательно читаю каждый день. И делаю выводы.
Лучше всего разбираюсь в Qt и Java. Но меня на данный момент очень заинтересовала библиотека виджетов wxWidgets как альтернатива Qt (если можно так сказать).
Хочется сказать только несколько слов о Lazarus. Мне он очень нравится, но он сыроват. Вобщем у него перспективное будущее и изучать не прийдется, так как очень схож с Delphi. Поэтому его пока оставляем.
.Net удаляем из базы :), поскольку Mono еще сырой.
Вобщем, наверное, сужаем круг к Qt, Java и wxWidgets.
Платформы: Mac, Windows, Linux. Мобильники и портативные устройства пока оставим в покое :)
Еще вопрос на счет базы InterBase/Firebird. Что лучше (из тройки оставшихся в живых :)) всего подходит для создания клиента для базы. Я имею ввиду где библиотеки лучше и безплатнее :-)
Больше всего меня интересует сравнение Qt и wxWidgets.
Всегда имеет смысл посмотреть на программу взглядом конечного пользователя. Потому что если она покажется ему тормозной (по сравнению, например, с аналогами), то ему не будет интересны ваши пояснения, что это платформа такая:)
2 Афтор - зря так сразу выбросил Java и .NET из рассмотрения.
.Net удаляем из базы , поскольку Mono еще сырой.
Ну так писать в нем тебя никто не заставляет.
Больше всего меня интересует сравнение Qt и wxWidgets.
Еще вопрос на счет базы InterBase/Firebird. Что лучше (из тройки оставшихся в живых ) всего подходит для создания клиента для базы. Я имею ввиду где библиотеки лучше и безплатнее :-)
Ты кстати, учел, что Qt вовсе не бесплатно, в общем случае?;)
А лично я выбрал уже связку Java-Python,для меня это оптимальный выбор. ;)
Уважаемый Tokolist, прочтите вот это :http://articles.org.ru/cfaq/index.php?qid=1965,если ещё не читали. Думаю это съузит Ваши взгляды ближе к одной точке)))
А я Java не выбрасывал! :) Прочитай топик внимательней :) А вот в .NET разрабатывается всем известной фирмой, поэтому точится под одну всем известную ОСь. Мне также кажется, что разработчики Моно еще не успели полностью реализовать все возможности продукта...
И если выбирать между Жава и дотНет, то - Жава, однозначно!
[QUOTE=Zorkus]Ну так писать в нем тебя никто не заставляет.[/QUOTE]
В смысле писать в Моно? Нет, токо в Визуал Студио!
[QUOTE=Zorkus]Ты кстати, учел, что Qt вовсе не бесплатно, в общем случае?[/QUOTE]
Учел конечно :). Две мысли по этому поводу:
1. Первые мои проекты будут открытыми полюбе. Поэтому и платить ничего не буду на первых порах. А если создать хороший проприетарный продукт, то думаю Qt окупится.
2. Поэтому меня так и заинтересовал wxWidgets :)
[QUOTE=Jail]Уважаемый Tokolist, прочтите вот это[/QUOTE]
Обязательно прочту и поделюсь впечатлениями.
А что скажете на это (стаття немножко устарела с точки зрения производительности компов, но все же)
http://www.citforum.ru/programming/application/java_qt.shtml