Я - веб-разработчик в день и думающий о создавании моего первого реального настольного приложения. Идея состоит в том, чтобы создать инструмент, который автоматизирует очень повторяющуюся задачу в веб-приложении, где никакой API не доступен.
Я знаю, что хочу использовать Java. Я использовал его прежде для веб-материала, знайте синтаксис вполне прилично и хотите, чтобы приложение было перекрестной платформой, максимально легкой.
То, где я не так уверен, - то, если я должен использовать SWT или Swing. Поскольку моя основная аудитория использует Windows, я хочу посмотреть он максимально собственный там. Linux и Mac должны работать, но взгляды не так важны здесь.
Таким образом, каковы аргументы в пользу и против каждой Платформы UI, Swing или SWT?
Спасибо.
PS: Я разрабатываю в Windows с помощью Eclipse. Но думал об игре с Netbeans.
Плюсы Swing:
Минусы Swing:
Плюсы SWT:
Минусы SWT:
Важно учитывать, что некоторые пользователи и некоторые торговые посредники (Dell) устанавливают 64-битную виртуальную машину на свои 64-битные Windows, и вы не можете использовать ту же самую SWT-библиотеку на 32-битные и 64-битные виртуальные машины.
Это означает, что вам нужно будет распространять и тестировать различные пакеты в зависимости от того, есть ли у пользователей 32-разрядная или 64-разрядная виртуальная машина Java. См. эту проблему , например, с Azureus, но у вас также есть она с Eclipse, где на сегодняшний день сборки на главной странице загрузки не запускаются на 64-битной виртуальной машине.
Для ваших требований похоже, что в конечном итоге лучше использовать Swing, так как с ним немного проще начать работу и он не так тесно интегрирован в родную платформу, как SWT.
Swing обычно является безопасной ставкой.
Я бы использовал Swing по нескольким причинам.
Он существует дольше, и к нему было приложено больше усилий при разработке . Следовательно, вероятно, что функция завершена и (возможно) содержит меньше ошибок.
Существует множество документации и других руководств по созданию эффективных приложений.
Если вы хотите создать очень многофункциональное приложение, вы можете попробовать NetBeans RCP (Rich Client Platform). Есть кривая обучения, но вы можете быстро собрать хорошие приложения, немного попрактиковавшись. У меня недостаточно опыта работы с платформой Eclipse, чтобы сделать верное суждение.
Если вы не хотите использовать весь RCP, NetBeans также имеет множество полезных компонентов, которые можно извлечь и использовать независимо.
Еще один совет: изучите разные менеджеры по расположению. Они надолго сбили меня с толку, когда я учился. Некоторых из лучших нет даже в стандартной библиотеке. На мой взгляд, инструменты MigLayout (для Swing и SWT) и JGoodies Forms являются двумя из лучших.
Если вы планируете создавать полнофункциональные приложения с большим количеством функций, я предлагаю сразу перейти к использованию Eclipse RCP в качестве основы.
Если ваше приложение не станет слишком большим или ваши требования слишком уникальны, чтобы их можно было обрабатывать в обычной бизнес-структуре, вы можете смело переходить с Swing.
В конце концов, я предлагаю вам попробовать обе технологии, чтобы найти ту, которая вам больше подходит. Как и Netbeans против Eclipse против IntelliJ, здесь нет абсолютно правильного ответа, и обе структуры имеют свои недостатки.
Pro Swing:
Pro SWT:
pro swing:
Но в конце я бы не стал предлагать использовать «чистый» Swing или SWT; -) Существует несколько прикладных фреймворков для swing / swt out. Посмотрите здесь . Крупнейшие игроки - это netbeans (качели) и eclipse (swt). Еще один хороший фреймворк может быть griffon, а хороший «набор компонентов» - pivot (качели). Griffon очень интересен, потому что он объединяет множество библиотек и не только качели ; также pivot, swt и т. д.
Интересный вопрос. Я не слишком хорошо знаю SWT, чтобы этим хвастаться (в отличие от Swing и AWT), но вот сравнение, проведенное на SWT / Swing / AWT.
А вот сайт, на котором вы можете получить учебник практически по чему угодно по SWT ( http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm )
Надеюсь, вы примете правильное решение (если правильные решения в кодировке) ...: -)
Короче говоря, нет; если вы не хотите излишне удвоить время разработки.
-121--2128166-Попробуйте отменить ссылку на человека и событие при удалении:
public bool UnregisterFromEvent(Person person, Event entry)
{
var registrationEntry = this.session
.CreateCriteria<PersonEventRegistration>()
.Add(Restrictions.Eq("Person", person))
.Add(Restrictions.Eq("Event", entry))
.Add(Restrictions.Eq("IsComplete", false))
.UniqueResult<PersonEventRegistration>();
bool result = false;
if (null != registrationEntry)
{
using (ITransaction tx = this.session.BeginTransaction())
{
registrationEntry.Person = null;
registrationEntry.Event = null;
this.session.Delete(registrationEntry);
tx.Commit();
result = true;
}
}
return result;
}
Кроме того, я не знал, что можно добавить ограничение на объект, я бы написал это с помощью псевдонимов и идентификаторов.
.Add(Restrictions.Eq("Person", person))
.Add(Restrictions.Eq("Event", entry))
-121--4461210- Я бы выбрал качель только потому, что он «родной» для java.
Плюс посмотрите на http://swingx.java.net/ .