Для Java достаточно много фреймворков с графическим интерфейсом, но что считается сегодняшним фреймворком?
Следующее - мое понимание различных структур, пожалуйста, поправьте меня, если я неправ. Это очень неопределенный набор вопросов, но я все еще считаю его ценным для всех, кто задумывается о создании приложений с богатым графическим интерфейсом.
Является самой основой качелей, он хорошо работает, но не хватает продвинутых компонентов. Если вы намереваетесь создавать многофункциональные приложения, AWT, вероятно, не тот путь. Однако для небольших приложений графического интерфейса, которые не требуют богатых пользовательских интерфейсов. Это может идеально подойти, поскольку это проверенная и проверенная структура.
На основе AWT, как указано выше. В зачаточном состоянии он считался медленным и глючным и заставил IBM создать SWT для Eclipse. Однако с Java 5 (или 6?) Swing стал предпочтительной средой для создания новых приложений. В Swing много богатых компонентов, но в некоторых областях их все еще не хватает. Одним из примеров является то, что не существует полнофункционального компонента TreeTable, который может выполнять сортировку и фильтрацию / поиск.
Созданные IBM для Eclipse, они, казалось, думали, что Swing тогда не подходил для Eclipse. Сам по себе довольно низкоуровневый, и использует родные виджеты платформы через JNI. Это никак не связано с Swing и AWT. Однако их API несколько неуклюжий и не интуитивно понятный. У них есть некоторые продвинутые компоненты, такие как TreeTable. (но я не думаю, что они поддерживают сортировку и фильтрацию из коробки). SWT использует некоторые нативные привязки (через JNI?), И в интернете часто говорят о том, что эта платформа не должна использоваться в сегодняшних проектах. (почему нет?)
Основан на Swing и его миссия - создавать богатые компоненты для свинга. Все еще в разработке. (хотя и не очень активно.) Имеет очень хороший набор компонентов, например, TreeTable. Но TreeTable не поддерживает фильтрацию и сортировку, насколько я знаю. Тем не менее, он поддерживает поиск с подсветкой.
Обратите внимание, что SwingX - это компоненты (AFAIU), которые являются расширениями или композициями существующих компонентов Swing.
JGoodies
Фреймворк, о котором я ничего не знаю ... Каковы его сильные и слабые стороны? Какой набор Jgoodies помимо остальных?
JGoodies OTOH о PLAF и макетах.
Последний флагман Java / Oracle. обещает быть стандартом факто в разработке многофункциональных настольных или веб-приложений.
Он отображает пользовательский интерфейс с использованием Java2D, таким образом сводя к минимуму влияние (IMO, раздутый) наследий Swing и AWT. (@Augustus Thoo)
Кажется, что основное внимание уделяется RIA (многофункциональным интернет-приложениям), но, похоже, его можно применять и к настольным приложениям. И как личный комментарий, выглядит очень интересно! Особенно мне нравится, что это проект Apache.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Оболочка Java для нативной библиотеки qt, написанной на c / c ++. Очень мощный, широко используемый и принятый. Имеет множество компонентов GUI и простой в использовании API.
Итак, чтобы попытаться обобщить немного того, что я спрашиваю:
Скажем, я хотел сегодня создать настольное приложение на Java, которое включает в себя множество продвинутых компонентов, что мне выбрать? И почему?
Какую из этих рамок следует признать устаревшей, а какую - за далекое будущее?
Что сегодня является де-факто-стандартной платформой и какие инструменты вы используете для создания приложений на Java?
Я мог бы сожалеть, что спросил это, но я все равно попробую:
Говорят, что C # / .Net имеет очень хороший набор простых в использовании компонентов, которые можно сгибать в любом направлении. И после некоторого изучения различных Java-фреймворков я не могу сказать то же самое о Java. Почему это? Почему java (самый распространенный язык программирования в мире) не имеет такого же набора компонентов GUI?
Просто java основал свои компоненты графического интерфейса на гораздо более низком уровне, и можно написать все эти сложные компоненты, которые я ищу, но вам придется много, если не всю работу делать самостоятельно?
Ответы:
Древо решений:
Каркасам, таким как Qt и SWT, нужны собственные библиотеки DLL. Поэтому вы должны спросить себя: все ли необходимые платформы поддерживаются? Можете ли вы упаковать нативные библиотеки DLL в свое приложение?
Смотрите здесь, как это сделать для SWT .
Если у вас есть выбор, вы должны предпочесть Qt, а не SWT. Qt был разработан людьми, которые понимают UI и рабочий стол, в то время как SWT был разработан из-за необходимости ускорить Eclipse. Это скорее исправление производительности для Java 1.4, чем среда пользовательского интерфейса. Без JFace вам не хватает многих основных компонентов пользовательского интерфейса или очень важных функций компонентов пользовательского интерфейса (например, фильтрация по таблицам).
Если в SWT отсутствует нужная вам функция, фреймворк несколько враждебен ее расширению. Например, вы не можете расширить ни один класс в нем (классы не являются окончательными, они просто генерируют исключения, когда пакет
this.getClass()
не является,org.eclipse.swt
и вы не можете добавлять новые классы в этот пакет, потому что он подписан).Если вам нужно нативное, чистое Java-решение, оно оставит вас в покое. Начнем с AWT, Swing, SwingX - способа Swing.
AWT устарел. Swing устарел (возможно, меньше, но за последние 10 лет над Swing не было проделано большой работы). Можно утверждать, что Swing был хорош для начала, но мы все знаем, что код гниет. И это особенно актуально для пользовательских интерфейсов сегодня.
Это оставляет вас с SwingX. После более длительного периода медленного прогресса развитие возобновилось . Основной недостаток Swing заключается в том, что он опирается на некоторые старые идеи, которые очень быстро развиваются 15 лет назад, но которые сегодня кажутся «неуклюжими». Например, табличные представления поддерживают фильтрацию и сортировку, но вам все равно нужно это настроить. Вам придется написать много кода, чтобы получить достойный интерфейс, который выглядит современно.
Еще одним слабым местом является тема. На сегодняшний день вокруг много тем. Смотрите здесь для топ-10 . Но некоторые медленные, некоторые глючные, некоторые неполные. Я ненавижу, когда пишу пользовательский интерфейс, и пользователи жалуются, что у них что-то не работает, потому что они выбрали нечетную тему.
JGoodies - это еще один слой поверх Swing, такой как SwingX. Он пытается сделать Swing более приятным в использовании. Веб-сайт выглядит великолепно. Давайте посмотрим на учебник ... хм ... все еще в поисках ... держись. Кажется, что на сайте вообще нет документации. Гугл на помощь . Нет, никаких полезных уроков вообще нет.
Я не чувствую уверенности в структуре пользовательского интерфейса, которая так старается скрыть документацию от потенциальных новых поклонников. Это не значит, что JGoodies это плохо; Я просто не мог найти ничего хорошего, чтобы сказать об этом, но это выглядит красиво.
JavaFX. Отлично, стильно. Поддержка есть, но я чувствую, что это скорее блестящая игрушка, чем серьезная структура пользовательского интерфейса. Это чувство коренится в отсутствии сложных компонентов пользовательского интерфейса, таких как древовидные таблицы. Существует компонент на основе webkit для отображения HTML .
Когда он был представлен, моей первой мыслью было «на пять лет позже». Если ваша цель - хорошее приложение для телефонов или веб-сайтов, хорошо. Если ваша цель - профессиональное настольное приложение, убедитесь, что оно обеспечивает то, что вам нужно.
Pivot. Впервые слышу об этом. Это в основном новый пользовательский интерфейс, основанный на Java2D. Так что я попробовал вчера. Нет Swing, просто чуть-чуть AWT (
new Font(...)
).Мое первое впечатление было приятным. Существует обширная документация, которая поможет вам начать работу. Большинство примеров поставляются с живыми демонстрациями (Примечание: у вас должна быть включена Java в вашем веб-браузере; это угроза безопасности ) на веб-странице, чтобы вы могли видеть код и получающееся приложение рядом.
По моему опыту, в коде больше усилий, чем в документации. Глядя на документы Pivot, нужно было приложить немало усилий для написания кода. Обратите внимание, что в настоящее время существует ошибка, которая препятствует работе некоторых примеров ( PIVOT-858 ) в вашем браузере.
Мое второе впечатление от Pivot - это то, что им легко пользоваться. Когда я сталкивался с проблемой, я обычно мог решить ее быстро, посмотрев на пример. Мне не хватает ссылки на все стили, которые поддерживает каждый компонент.
Как и в JavaFX, в нем отсутствуют некоторые компоненты более высокого уровня, такие как компонент древовидной таблицы ( PIVOT-306 ). Я не пробовал ленивую загрузку с представлением таблицы. У меня сложилось впечатление, что если базовая модель использует ленивую загрузку, то этого достаточно.
Перспективный. Если можешь, попробуй.
источник
SWT сам по себе довольно низкоуровневый и использует родные виджеты платформы через JNI. Это никак не связано с Swing и AWT. Среда Eclipse IDE и все приложения Rich Client на основе Eclipse, такие как клиент Vuze BitTorrent , создаются с использованием SWT. Кроме того, если вы разрабатываете плагины Eclipse, вы обычно будете использовать SWT.
Я занимаюсь разработкой приложений и плагинов на основе Eclipse уже почти 5 лет, поэтому я явно предвзят. Тем не менее, у меня также есть большой опыт работы с SWT и инструментарием JFace UI, который построен поверх него. Я нашел JFace очень богатым и мощным; в некоторых случаях это может быть даже основной причиной выбора SWT. Он позволяет довольно быстро создавать рабочий интерфейс, если он похож на IDE (с таблицами, деревьями, встроенными элементами управления и т. Д.). Конечно, вы также можете интегрировать свои собственные элементы управления, но это требует дополнительных усилий.
источник
Я хотел бы предложить другую структуру: Apache Pivot http://pivot.apache.org/ .
Я попробовал его на короткое время, и был поражен тем , что он может предложить в качестве основы RIA (Rich Internet Application) ала Flash.
Он отображает пользовательский интерфейс с использованием Java2D, таким образом сводя к минимуму влияние (IMO, раздутый) наследий Swing и AWT.
источник
Swing + SwingX + Miglayout - моя комбинация выбора. Miglayout намного проще, чем Swings воспринимает 200 различных менеджеров компоновки и гораздо более мощный. Кроме того, он предоставляет вам возможность «отладки» ваших макетов, что особенно удобно при создании сложных макетов.
источник
Другой вариант - использовать Qt Jambi . Он обладает почти всем великолепием Qt (много компонентов, хорошая документация, простота в использовании), без хлопот с C ++. Я использовал его 3-4 года назад для небольшого проекта, даже тогда он был почти зрелым.
Возможно, вы захотите увидеть обсуждение Swing vs. Qt здесь .
источник
Мое личное мнение: пойти на Swing вместе с платформой NetBeans.
Если вам нужны расширенные компоненты (больше, чем предлагает NetBeans), вы можете легко интегрировать SwingX без проблем (или JGoodies), поскольку платформа NetBeans полностью основана на Swing.
Я бы не стал запускать большое настольное приложение (или большое) без хорошей платформы, основанной на базовой структуре пользовательского интерфейса.
Другим вариантом является SWT вместе с Eclipse RCP, но сложнее (хотя и не невозможно) интегрировать «чистые» компоненты Swing в такое приложение.
Кривая обучения немного крутая для платформы NetBeans (хотя я полагаю, что это верно и для Eclipse), но есть несколько хороших книг, которые я очень рекомендую.
источник
вы забыли для Java Desktop Aplication на основе JSR296 как встроенную среду Swing Framework в NetBeans
исключая AWT и JavaFX, все ваши описанные фреймворки основаны на Swing, если вы начнете с Swing, то вы будете (ясно) понимать все эти Swing (Based Frameworks)
ATW, SWT (Eclipse), Java-приложение для настольных компьютеров (NetBeans), SwingX, JGoodies
все там фреймворки (я не знаю больше о JGoodies) вкл. У JavaFX нет долгого прогресса, многие фреймворки на базе Swing остановлены, если не без последней версии
только мое мнение - лучший из них - SwingX, но требует глубоких знаний о Swing,
Look and Feel для основанных на Swing фреймворков
источник
with same progress
в SWT, SwingX, новый владелец, новые манерыЯ был очень доволен Swing для настольных приложений, в которых я принимал участие. Однако я разделяю ваше мнение о том, что Swing не предлагает продвинутые компоненты. То, что я сделал в этих случаях, это пойти на JIDE. Это не бесплатно, но и не так дорого, и дает вам гораздо больше инструментов под вашим поясом. В частности, они предлагают фильтруемую TreeTable.
источник
Я бы пошел с Swing. Для макета я бы использовал макет формы JGoodies. Здесь стоит изучить официальный документ по макету формы здесь - http://www.jgoodies.com/freeware/forms/
Также, если вы собираетесь начать разработку огромного настольного приложения, вам определенно понадобится фреймворк. Другие указали на структуру NetBeans. Мне это не очень понравилось, поэтому я написал новый, который мы сейчас используем в моей компании. Я поместил это в sourceforge, но не нашел времени, чтобы документировать это. Вот ссылка для просмотра кода:
http://swingobj.svn.sourceforge.net/viewvc/swingobj/
Витрина должна показать вам, как на самом деле сделать простой вход в систему ..
Дайте мне знать, если у вас есть какие-либо вопросы, я могу помочь.
источник