Gibt es einen Trend für plattformübergreifende GUI-Toolkits? [geschlossen]

12

Wie ist der aktuelle Trend zur Verwendung plattformübergreifender GUI-Frameworks? Beginnen mehr Menschen, plattformübergreifende Frameworks (wie GTK +, Qt und wxWidgets) zu verwenden, oder verwenden mehr Menschen plattformgebundene Frameworks (z. B. Cocoa oder WPF)? Steht es mehr oder weniger still? Ist es wie eine Achterbahn? Wie wird der Trend in etwa 5 Jahren aussehen?

Die Betriebssystemlandschaft verschiebt sich mit weniger Menschen, die Windows verwenden (persönliche Beobachtung). Dies sollte die Nachfrage nach plattformübergreifenden Toolkits erhöhen, oder?

Bearbeiten: Welche (plattformübergreifenden) Toolkits nehmen am meisten zu, wenn ja?

Anto
quelle

Antworten:

11

Fast scheint es einen Trend gegen plattformübergreifende Kits zu geben. Wenn Leute einmal schreiben wollen, irgendwo laufen, neigen sie dazu, HTML zu verwenden - machen Sie eine Website. Menschen nutzen die Plattform-Toolkits nur, wenn ein natives Erscheinungsbild gefragt ist, beispielsweise auf dem iPhone. Wenn Sie sich also hauptsächlich mit der Nicht-Web-App beschäftigen, um das native Erscheinungsbild zu erhalten, ist die Verwendung eines plattformübergreifenden Kits nicht unbedingt sinnvoll.

Plattformübergreifende Toolkits haben noch nie so gut funktioniert. Die Desktop-Plattformen sind nicht so ähnlich, und es ist schwierig, sie wirklich zu abstrahieren. Das Hinzufügen von Telefonen und Tablets macht es noch schwieriger. Sie erhalten eine sehr undichte Abstraktion (siehe http://www.joelonsoftware.com/articles/LeakyAbstractions.html ). Oft ist es einfacher, die "Engine" einfach von der Benutzeroberfläche zu trennen und die Benutzeroberfläche plattformspezifisch zu schreiben.

Der Trend, dass Macs populärer werden, könnte dazu führen, dass plattformübergreifende Kits weniger populär sind als mehr. Ich denke, dass die Leute ein Cross-Platform-Kit oft eher verwendeten, um das Cross-Platform-Kontrollkästchen zu aktivieren, als um auf allen Plattformen wirklich gute Ergebnisse zu erzielen. Sobald Sie sich für mehrere Plattformen interessieren, werden Sie feststellen, wie nachteilig plattformübergreifende Kits sind.

Hier ist ein Blog-Beitrag von Alex Payne zu diesen Nachteilen: http://al3x.net/2011/01/15/user-hostile-platforms.html

Ich denke, es ist bezeichnend, dass viele der großen, beliebten plattformübergreifenden Apps ihren eigenen plattformübergreifenden Ansatz erfinden (Firefox, Chrome, Eclipse, OpenOffice.org sind Beispiele, die mir in den Sinn kommen). Durch den Besitz des Frameworks können sie bei Bedarf die Abstraktion durchgehen. Auch sehen diese Apps auf allen Plattformen in der Regel gleich aus (und nicht besonders nativ).

All dies sagte, ich habe keine tatsächlichen Statistiken oder etwas. Aber ich habe viel an GTK + gearbeitet und bin mit Codebasen wie Firefox, Chrome und Eclipse vertraut. Ich habe die technischen Herausforderungen hier aus erster Hand gesehen.

Havoc P
quelle
2
Ich hätte dies einfach so formuliert: "Der Trend für plattformübergreifende Toolkits geht zum Scheitern."
Ohmantik
14

Tatsächlich gab es in den letzten Jahren einen Trend zu einem plattformübergreifenden UI-Toolkit. Dieses Toolkit ist HTML / CSS / JavaScript.

Es ist einfach zu einfach, einmal zu entwickeln und zu sehen, dass es fast überall gleich läuft.

Und ja, die Entwicklungen verschieben sich massiv vom Desktop ins Web. Sie sehen es selbst.


quelle
+1 Für das Web als wachsender UI-Trend, aber ich glaube nicht, dass dies die Frage des OP beantwortet.
Vollkommen zustimmen. Wir entwickeln unsere IPTV-Anwendung auf der Settop-Box ausschließlich mit HTML5 / CSS3 / JavaScript. Das ist die Zukunft, nicht noch ein gewaltiges, vollständiges C / C ++
Ernelli
1
Gute Erwähnung, aber ich interessiere mich tatsächlich für plattformübergreifende Desktop- Toolkits. Immer noch aufgestimmt.
Anto
@Anto - Vielleicht möchten Sie das zu Ihrer Frage hinzufügen. Vom Lesen habe ich überhaupt nichts mit "Desktop" angefangen. Natürlich bin ich ein Webprogrammierer und habe die meisten von Ihnen erwähnten Frameworks nicht erkannt :)
Marcie
@Anto, möchten Sie vielleicht Desktop in Ihrer Frage erwähnen.
JBRWilkinson
7

Ich verwende meist plattformübergreifende Toolkits, weil sie besser gestaltet sind, und nicht, weil ich versuche, plattformübergreifend zu sein. Zum Beispiel arbeite ich an Projekten, die in C ++ geschrieben wurden und nur auf die Windows-Plattform abzielen. Benutze ich win32 oder MFC, so ziemlich die EINZIGEN Optionen, die für das native Toolkit verfügbar sind?

Heiliges fsck nein! Das sind so ziemlich die schlimmsten Haufen Spaghetti-Müll, die ich je gesehen habe! Die direkte Kopplung des Ereignissystems an das "Nachrichten" -System des zugrunde liegenden Betriebssystems ist unglaublich unintuitiv und es fehlt die Ausdruckskraft, die zum schnellen Erstellen von UI-Programmen erforderlich ist. Übergeordnete Abstraktionen, die derzeit nur von plattformübergreifenden Toolkits bereitgestellt werden, sind für die Aufgabe unbedingt erforderlich.

Das ist auch nur ein Beispiel. Ich könnte auf und in der Liste der Dinge rasseln, die mit plattformübergreifenden Toolkits besser erledigt werden können. Tatsache ist, dass grafische Oberflächen einander ähnlicher als verschieden sind. Es gibt kaum einen Unterschied zwischen einem Fensterprogramm unter Windows und einem unter Linux. Die Art der Dinge, die Sie beim Erstellen von UI-Programmen tun, ist fast immer genau gleich, egal auf welches Betriebssystem Sie abzielen ... und es gibt nur geringfügige Unterschiede zwischen Architekturen wie Telefon / Palm oder Desktop. Das Feld hat sich einfach auf plattformübergreifende Methoden konzentriert, weil a) es für viele Menschen notwendig ist und b) es ist alles dasselbe sh! T.

Edward Strange
quelle
0

Ein Argument gegen die Erstellung eines plattformübergreifenden Frameworks ist, dass es immer auf den kleinsten gemeinsamen Nenner abzielt - Clients des Frameworks möchten Code nur einmal schreiben und es wird "überall" unterstützt. Eine großartige Hardwareplattform würde also genauso aussehen wie jede andere Plattform, auf der dieses Framework ausgeführt wird, da Sie die plattformspezifischen Funktionen nicht nutzen können.

Mit der Zeit führt dies leider dazu, dass Frameworks sich auf ihre beliebteste Plattform stützen und die Unterstützung für die anderen Plattformen hacken oder sie einfach weglassen, wenn das Budget / die Popularität ausgeht.

Eine Möglichkeit, die plattformspezifischen Fähigkeiten zu nutzen, besteht darin, so etwas wie ein #if PLATFORM_FEATURE_XKonstrukt um den gesamten spezifischen Code oder entsprechende Laufzeitprüfungen zu erstellen, was zu einem Aufblähen des Codes führt. Dies wird ziemlich schnell mühsam, da Varianten derselben Plattform eine spezielle Behandlung erfordern. Zum Beispiel hatten einige XBox v1 keine Festplatte, so dass Spiele, die plattformübergreifende Tools verwendeten, diese nicht zum Zwischenspeichern verwenden konnten, verglichen mit einer PC-Version, bei der Sie eine Festplatte garantieren können.

Für Desktop- / Produktivitätsanwendungen scheint das Erscheinungsbild der Plattform wichtig zu sein, aber viele Anwendungen haben ihren eigenen Stil, sodass es kein Problem ist, auf allen Plattformen, z. B. mit AIR erstellten Apps, gleich auszusehen.

Hardwareanbieter wie Apple, Sony, Nintendo und Toshiba möchten sicherstellen, dass sich ihre Produkte von der Konkurrenz abheben, z. B. Touch, Beschleunigungsmesser / Gryoskope, Blu-Ray, 3D-Display. Es ist unwahrscheinlich, dass es jemals eine Plattform geben wird, auf der alle Funktionen aller Wettbewerber (aufgrund der Kosten und der Komplexität) vereint sind, sodass eine davon gewinnt.

JBRWilkinson
quelle