Существует довольно много GUI фреймворков для java, но что признано сегодняшним фреймворком выбора?
понимание различных фреймворков, пожалуйста, поправьте меня, если я ошибаюсь. Это очень расплывчатый набор вопросов, но я все же считаю его полезным для всех, кто думает о создании приложений с богатым графическим интерфейсом.
Является самой основой свинга, он работает хорошо, но ему не хватает продвинутых компонентов. Если вы собираетесь создавать многофункциональные приложения, AWT, вероятно, не подходит. Однако для небольших приложений с графическим интерфейсом, которые не требуют богатого пользовательского интерфейса. Это может идеально подойти, поскольку это проверенный и проверенный фреймворк.
На основе AWT, как указывалось ранее. На начальном этапе он считался медленным и глючным, что вынудило IBM создать SWT для Eclipse. Однако с появлением Java 5 (или 6?) Swing стал предпочтительным фреймворком для создания новых приложений. Swing имеет много богатых компонентов, но в некоторых областях все еще отсутствует. Одним из примеров является отсутствие полнофункционального компонента TreeTable, который может выполнять сортировку, фильтрацию / поиск.
Созданный IBM для Eclipse, они, похоже, думали, что Swing в то время не подходит для Eclipse. Сам по себе довольно низкоуровневый, и он использует собственные виджеты платформы через JNI.Это вообще не связано со Swing и AWT. Однако их API несколько неуклюжий и не интуитивно понятный. У них есть некоторые продвинутые компоненты, такие как TreeTable. (но я не думаю, что они поддерживают сортировку и фильтрацию из коробки). SWT использует некоторые собственные привязки (через JNI?), И в Интернете раздумывают, что эту структуру не следует использовать в сегодняшних проектах. (почему бы и нет?)
Основан на Swing, и его миссия - создавать богатые компоненты для 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/frequent-asked-questions-faq.html
Java-оболочка для собственной библиотеки qt, написанной на c / c ++. Очень мощный, широко используемый и принятый. Имеет множество компонентов графического интерфейса и простой в использовании API.
Итак, чтобы попытаться резюмировать то, что я спрашиваю:
Скажем, я хотел сегодня создать настольное приложение на Java, которое включает в себя множество дополнительных компонентов , что мне выбрать? И почему?
Какой из этих фреймворков следует признать устаревшим, а какой - фреймворком далекого будущего?
Что такое нынешний де-факто стандартный фреймворк и какие инструменты вы используете для создания java gui?
Я мог бы пожалеть об этом, но все равно попробую:
C # /. Net, как говорят, имеет очень хороший набор простых в использовании компонентов, которые можно сгибать во всех возможных направлениях. И после исследования различных java-фреймворков в некоторой степени я не могу сказать то же самое о Java. Почему это? Почему java (который является наиболее широко используемым языком программирования в мире) не имеет того же набора компонентов графического интерфейса пользователя?
Просто ли Java основывает свои компоненты графического интерфейса на гораздо более низком уровне, и это можно написать все эти расширенные компоненты, которые я ищу, но вы должны сделать большую, если не всю работу самостоятельно?