Фреймворки графического интерфейса пользователя Java. Что выбрать? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot? [закрыто]

Существует довольно много GUI фреймворков для java, но что признано сегодняшним фреймворком выбора?

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


AWT

Является самой основой свинга, он работает хорошо, но ему не хватает продвинутых компонентов. Если вы собираетесь создавать многофункциональные приложения, AWT, вероятно, не подходит. Однако для небольших приложений с графическим интерфейсом, которые не требуют богатого пользовательского интерфейса. Это может идеально подойти, поскольку это проверенный и проверенный фреймворк.


Swing

На основе AWT, как указывалось ранее. На начальном этапе он считался медленным и глючным, что вынудило IBM создать SWT для Eclipse. Однако с появлением Java 5 (или 6?) Swing стал предпочтительным фреймворком для создания новых приложений. Swing имеет много богатых компонентов, но в некоторых областях все еще отсутствует. Одним из примеров является отсутствие полнофункционального компонента TreeTable, который может выполнять сортировку, фильтрацию / поиск.


SWT

Созданный IBM для Eclipse, они, похоже, думали, что Swing в то время не подходит для Eclipse. Сам по себе довольно низкоуровневый, и он использует собственные виджеты платформы через JNI.Это вообще не связано со Swing и AWT. Однако их API несколько неуклюжий и не интуитивно понятный. У них есть некоторые продвинутые компоненты, такие как TreeTable. (но я не думаю, что они поддерживают сортировку и фильтрацию из коробки). SWT использует некоторые собственные привязки (через JNI?), И в Интернете раздумывают, что эту структуру не следует использовать в сегодняшних проектах. (почему бы и нет?)


SwingX

Основан на Swing, и его миссия - создавать богатые компоненты для Swing. Все еще в разработке. (хотя и не очень активный.) Имейте очень хороший набор компонентов, например, TreeTable. Но, насколько мне известно, TreeTable не поддерживает фильтрацию и сортировку. Однако он поддерживает поиск с выделением.

Обратите внимание, что SwingX - это компоненты (AFAIU), которые являются расширениями или композициями существующих компонентов Swing


JGoodies

Фреймворк, о котором я ничего не знаю ... Каковы его сильные и слабые стороны? Какой набор Jgoodies отличается от остальных?

JGoodies OTOH - это PLAF и макеты.


JavaFX

Последний флагман Java / Oracle. обещает стать фактическим стандартом при разработке полнофункциональных настольных или веб-приложений.


Apache Pivot

Он отображает пользовательский интерфейс с использованием Java2D, тем самым сводя к минимуму влияние (IMO, раздутое) наследие Swing и AWT. (@Augustus Thoo)

Похоже, что основное внимание уделяется RIA (многофункциональным интернет-приложениям), но похоже, что это также может быть применено к настольным приложениям. И как личный комментарий, выглядит очень интересно! Мне особенно нравится, что это проект apache.

https://cwiki.apache.org/PIVOT/frequent-asked-questions-faq.html


Qt Jambi

Java-оболочка для собственной библиотеки qt, написанной на c / c ++. Очень мощный, широко используемый и принятый. Имеет множество компонентов графического интерфейса и простой в использовании API.

http://qt-jambi.org/


Итак, чтобы попытаться резюмировать то, что я спрашиваю:

Скажем, я хотел сегодня создать настольное приложение на Java, которое включает в себя множество дополнительных компонентов , что мне выбрать? И почему?

Какой из этих фреймворков следует признать устаревшим, а какой - фреймворком далекого будущего?

Что такое нынешний де-факто стандартный фреймворк и какие инструменты вы используете для создания java gui?


Я мог бы пожалеть об этом, но все равно попробую:

C # /. Net, как говорят, имеет очень хороший набор простых в использовании компонентов, которые можно сгибать во всех возможных направлениях. И после исследования различных java-фреймворков в некоторой степени я не могу сказать то же самое о Java. Почему это? Почему java (который является наиболее широко используемым языком программирования в мире) не имеет того же набора компонентов графического интерфейса пользователя?

Просто ли Java основывает свои компоненты графического интерфейса на гораздо более низком уровне, и это можно написать все эти расширенные компоненты, которые я ищу, но вы должны сделать большую, если не всю работу самостоятельно?

228
задан 15 revs, 3 users 72% 10 October 2013 в 10:52
поделиться