Es gibt ziemlich viele GUI-Frameworks für Java, aber was wird als heutiges Framework der Wahl anerkannt?
Das Folgende ist mein Verständnis der verschiedenen Frameworks. Bitte korrigieren Sie mich, wenn ich falsch liege. Dies ist eine sehr lose definierte Reihe von Fragen, aber ich denke immer noch, dass es für jeden wertvoll ist, der daran denkt, reichhaltige GUI-Anwendungen zu erstellen.
Ist das Fundament des Swings, es funktioniert gut, aber es fehlen fortschrittliche Komponenten. Wenn Sie umfangreiche Anwendungen erstellen möchten, ist AWT wahrscheinlich nicht der richtige Weg. Für kleinere GUI-Anwendungen, für die keine umfangreichen Benutzeroberflächen erforderlich sind. Dies könnte perfekt passen, da es sich um ein bewährtes Framework handelt.
Basierend auf AWT wie zuvor angegeben. In den Kinderschuhen galt es als langsam und fehlerhaft und veranlasste IBM, SWT für Eclipse zu erstellen. Mit Java 5 (oder 6?) Wurde Swing jedoch zum bevorzugten Framework für die Erstellung neuer Anwendungen. Swing hat viele reichhaltige Komponenten, fehlt aber in einigen Bereichen noch. Ein Beispiel ist, dass es keine voll funktionsfähige TreeTable-Komponente gibt, die sortieren und filtern / suchen kann.
Von IBM für Eclipse entwickelt, schienen sie zu glauben, dass Swing zu diesem Zeitpunkt nicht für Eclipse geeignet war. An sich ist es ziemlich einfach und verwendet die nativen Widgets der Plattform über JNI. Es hat überhaupt nichts mit Swing und AWT zu tun. Ihre API ist jedoch etwas klobig und nicht intuitiv. Sie haben einige erweiterte Komponenten wie eine TreeTable. (aber ich glaube nicht, dass sie das sofortige Sortieren und Filtern unterstützen). SWT verwendet einige native Bindungen (über JNI?) Und im Internet heißt es, dass dieses Framework in heutigen Projekten nicht verwendet werden sollte. (warum nicht?)
Basierend auf Swing und seiner Mission ist es, reichhaltige Komponenten für den Swing zu erstellen. Noch in der Entwicklung. (allerdings nicht sehr aktiv.) Haben Sie einen sehr schönen Satz von Komponenten, wie zum Beispiel TreeTable. Aber die TreeTable unterstützt, soweit ich weiß, das Filtern und Sortieren nicht. Es unterstützt jedoch die Suche mit Hervorhebung.
Beachten Sie, dass SwingX Komponenten (AFAIU) sind, die Erweiterungen oder Zusammensetzungen vorhandener Swing-Komponenten sind
JGoodies
Ein Rahmen, von dem ich nichts weiß ... Was sind seine Stärken und Schwächen? Was unterscheidet Jgoodies von den anderen?
Bei JGoodies OTOH geht es um PLAFs und Layouts.
Das neueste Flaggschiff von Java / Oracle. verspricht, der Facto-Standard bei der Entwicklung umfangreicher Desktop- oder Webanwendungen zu sein.
Es rendert die Benutzeroberfläche mit Java2D und minimiert so die Auswirkungen von (IMO, aufgeblähten) Hinterlassenschaften von Swing und AWT. (@Augustus Thoo)
Das Hauptaugenmerk scheint auf RIA (Rich Internet Applications) zu liegen, aber es scheint auch auf Desktop-Anwendungen angewendet werden zu können. Und als persönlicher Kommentar sieht es sehr interessant aus! Mir gefällt besonders, dass es ein Apache-Projekt ist.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Ein Java-Wrapper für die native qt-Bibliothek, die in c / c ++ geschrieben ist. Sehr mächtig, weit verbreitet und akzeptiert. Hat viele GUI-Komponenten und eine einfach zu bedienende API.
Also, um zu versuchen, ein bisschen zusammenzufassen, was ich frage:
Angenommen, ich wollte heute eine Desktop-Anwendung in Java erstellen, die viele erweiterte Komponenten enthält. Was soll ich wählen? Und warum?
Welches dieser Frameworks sollte als veraltet und welches als Framework der fernen Zukunft anerkannt werden?
Was ist das heutige De-facto-Standard-Framework und welche Tools verwenden Sie zum Erstellen von Java-GUI-Anwendungen?
Ich könnte es bereuen, dies gefragt zu haben, aber ich werde es trotzdem versuchen:
C # /. Net soll einen sehr guten Satz einfach zu bedienender Komponenten haben, die in jede mögliche Richtung gebogen werden können. Und nachdem ich verschiedene Java-Frameworks bis zu einem gewissen Grad untersucht habe, kann ich anscheinend nicht dasselbe über Java sagen. Warum ist das? Warum verfügt Java (die weltweit am häufigsten verwendete Programmiersprache) nicht über dieselben GUI-Komponenten?
Ist es nur so, dass Java seine GUI-Komponenten auf einer viel niedrigeren Ebene basiert und es möglich ist, all diese fortgeschrittenen Komponenten zu schreiben, nach denen ich suche, aber Sie müssen viel tun, wenn nicht die ganze Arbeit selbst?